Paikasta toiseen hyppiminen

Goto

Hyppiminen paikasta toiseen Goto:lla on joidenkin ohjelmoijien mielestä erittäin epäsuotava tapa kirjoittaa koodia. Perusteeksi esitetään, että se sotkee ohjelmarakenteen, ja tekee koodista sekavaa luettavaa. Ominaisuus on CoolBasicissa mukana, koska se on tuettu kaikissa muissakin BASIC-kielissä. Lisäksi Goto voi kuitenkin osoittautua erittäin hyödylliseksi tietyissä tilanteissa. Pohjustetaan selitystä ensin esimerkin avulla:

1    Print "Ohjelma alkaa"
2
3    Goto jatko
4
5    Print "Tämä teksti ei ikinä tulostu"
6
7    jatko:
9
10   Print "Ohjelma loppui"
11
12   WaitKey

Sinisellä kirjoitetut lihavoidut sanat liittyvät hyppyihin. Silmäile koodi läpi ja aja se. Huomaat, että riviä 5 ei ikinä suoriteta. Miksi? Koska hyppäsimme sen yli. Hyppyrakenteessa pitää aina olla kohde, tässä tapauksessa rivi 7. Kohde voi olla ennen tai jälkeen Goto-kutsun, eli missä tahansa kohtaa koodia (ei koko totuus). Voit tietysti kirjoittaa monta Goto-käskyä, jotka kaikki johtavat samaan kohteeseen. Kohdetta kutsutaan kirjanmerkiksi, ja sen perään kirjoitetaan kaksoispiste. Muuta samalla rivillä ei saa olla.

Sinulla ei saa olla kahta saman nimistä kirjanmerkkiä (paitsi jos toinen niistä on eri funktiossa). Isoilla ja pienillä kirjaimilla ei ole väliä.

Gosub

Gosub on toinen tapa hyppiä ohjelman sisällä. Ero Gotoon on se, että voit palata takaisin kutsukohtaan komennolla Return. Tällaisia lohkoja kutsutaan aliohjelmiksi. Aliohjelma voi esiintyä ainoastaan pääohjelmassa, Gosub ei siis ole sallittu funktoissa. Kaikki muut Goto-säännöt pätevät. Gosub-lohkoa käytetään yleisesti "käy tuolla tekemässä jotain ja palaa sitten takaisin"-tarkoitukseen. Pelisi rakenne voisi olla vaikka seuraavanlainen:

   ESIMERKKI
'Pelisi pääsilmukka:
'------------------------------------------
Repeat

    GoSub kontrollit
    GoSub päivitä_viholliset
    GoSub päivitä_efektit
    GoSub piirrä_kaikki
    
    DrawScreen

Until EscapeKey()
End

'Aliohjelmat:
'------------------------------------------

kontrollit:

    'tähän koodia...

Return

päivitä_viholliset:

    'tähän koodia...

Return

päivitä_efektit:

    'tähän koodia...

Return

piirrä_kaikki:

    'tähän koodia...

Return


'Funktiot
'------------------------------------------

 'tähän kaikki funkiot...

Älä unohda Returnia! Se palauttaa ohjelman samaan paikkaan mistä aliohjelmaa kutsuttiin, eli tässä tapauksessa takaisin pääsilmukkaan.


Älä riko seuraavia sääntöjä:

  • Älä ikinä siirry Goto:lla pois Gosub-aliohjelmasta! Voit siirtyä aliohjelman sisällä, mutta älä hyppää siitä ulos. Sitä varten on Return.
  • Et voi hyppiä funktion sisäisiin kirjanmerkkeihin ko. funktion ulkopuolelta. Et voi myöskään paeta funktiosta Goto:lla. Funktioissa on oma Goto-alueensa, eikä saman nimiset kirjanmerkit päde siellä.
  • Goto sekavoittaa helposti koodia. Käytä sitä harkiten ja suunnitellusti. Goto:sta ei voi palata (käytä silloin Gosub-aliohjelmaa).
  • SAAT LISÄTIETOA JA LISÄÄ ESIMERKKEJÄ NÄIDEN KOMENTOJEN OPPAASTA.


    <<TAKAISIN