Minua ihmetyttää kun kaikki sanovat ettei gotoa tarvitse käyttää qbasicissa. Tottakai sen voi melkein aina kiertää jollain toisella tavalla, mutta jos vaihtoehtoina on goto ja jokin "purkkaviritelmä" niin kyllä käyttäisin mielummin gotoa. Sanokaa muuten yksikin hyvä syy miksi gotosta pitäisi päästä eroon!!!
Se on WANHA qb:n ominaisuus ja se on epäselvää ja debugointi on vaikeaa jne... käytä _AINA_ goton sijasta SUBeja! Gotosta pitää päästä eroon vaikka mikä olisi.
Niin. ohjelmasta tulee selvempi tapaus, kun katsoo subeista kun selaisi pitkää koodia aina minne goto menee ja se on joskus hankalaa
edit: goto hell
Tota... subeissa on se ongelma, että kun niitä on jossain ohjelmassa toistasataa(tai jopa enemmän) kappaletta niin subivalikkoa ei ole kovin kiva selailla(ainakaan 7.1:ssa).
lainaus:
Tota... subeissa on se ongelma, että kun niitä on jossain ohjelmassa toistasataa(tai jopa enemmän) kappaletta niin subivalikkoa ei ole kovin kiva selailla(ainakaan 7.1:ssa).
no entäs sitten etsiä niitä goto mestoja. Siinäs sitten ongelma...
tämä ei nyt ole mikään kovin painava peruste mutta kumminkin :)
Tottakai jos sitä on tunkenut kauhean koodilistan yhteen "subiin", mutta mielestäni on hyvä käyttää järkeä milloin käyttää subeja ja milloin gotoa.
Noh, voihan joskus äärimmäistapauksissa subien sisällä käyttää gotoa tai gosubia. Muttei muuten.
Tuohon minäkin voin yhtyä!
Tähän asti olen AINA onnistunut kiertämään goton, vaikka joskus joutuukin vähän miettimään kiperissä tilanteissa. Kun edistyy ohjelmoinnissa sitä rupeaa hetken päästä tajuamaan itsestäänkin, mikä gotossa mättää. Muuten... ei kellään satu olemaan tietoa voiko ON ERROR GOTO:a kiertää mitenkään toisella tavalla?
mikset laita ON ERROR GOTO callaus ja siellä laitat call vai eiks toimi.
GOTOja käyttämällä ohjelmasta tulee tosiaan helposti sekava. Mutta ei GOTOn korvaamiseen useinkaan aliohjelmaa tarvita, vaan hyvin käytetyt IF-, DO- ja FOR-rakenteet riittävät.
lainaus:
Muuten... ei kellään satu olemaan tietoa voiko ON ERROR GOTO:a kiertää mitenkään toisella tavalla?
Ei oikeastaan. Vasta VB.NETissä on Try...Catch-rakenne virheenkäsittelyyn.
GOTO tekee pääohjelmasta aina sekavan, ja jos haluaa jonkin tietyn kohdan etsiä siitä koodimoskasta, niin sitä sitten saa etsiä. SUBeissa kohdan löytää helpommin, vaikka niitä olisi kymmeniä. Lisäksi SUBissa on eräs etu mitä ei ole GOTOssa, ja se on monipuolisuus. Väittäisin oikeastaan että kukin SUB on eräänläinen käyttäjän rakentama käsky ja tässä tapauksessa GOTOakin parempi. On parempi käyttää yhtä SUBia, jolla on sata mahdollista tapaa toimia, kuin vastaava määrä GOTOja.
-Grey-
PS. Qbasic 7.1 kierto onnistuu ON ERROR RESUME NEXT käskyllä.
Entä sitten FUNCTIOT. mitä eroa nillä on subeihin verrattuna?
Funktiot palauttaa arvon, subit ei.
Toivottavasti en puhu kovin pahasti paskaa kun väitän, että QB:ssä subit ovat nimenomaan funktioita. Ja niitä voisi tosiaan luonnehtia käyttäjän omaksi käskyksi.
Muissa kielissä, kuten C:ssä lähes kaikki käskyt ovatkin funktiokutsuja, joita voi itsekin luonnollisesti kirjoitella niin paljon kuin kiinnostaa ja vaikka tehdä omia kirjastoja, jolloin pääohjelman voi kirjoittaa käytännössä suomeksi jos nimeää funktiot oikein ;)
QB:ssä voi kylläkin luoda NEW SUB ja NEW FUNCTION erikseen. eli sub ei ole välttämättä functio
Aihe on jo aika vanha, joten et voi enää vastata siihen.