Ehtolauseet

Edellisessä luvussa sivusimme lyhyesti ehtoja toistorakenteita käsitellessämme. Liitimme toista kunnes x -palikan osaksi ehdon, joka määräsi, että toisto lopetetaan, kun käyttäjä painaa hiiren näppäintä. Tämän ehdon toteutuminen tai toteutumatta jääminen määräsi siis, mitä ohjastamamme kissa seuraavaksi tekee. Toistorakenteessa ehto tarkastetaan kerran joka silmukan kierroksen alussa. Jos ehto toteutuu, suoritetaan toistorakenteen sisällä olevia ohjeita yksi toistokierros lisää.

Toista kunnes x -ohjepalikka onko hiiren nappia painettu? -ehtopalikalla varustettuna.

Ohjelmoinnissa erilaisia ehtoja, joita voidaan tarkastaa, on loputon määrä. Niille kaikille yhteistä on se, että kullakin hetkellä ne joka ovat tai eivät ole käyneet toteen. Ehdoilla on siis niin sanottu totuusarvo. Tämä totuusarvo voi olla joko tosi tai epätosi.

(Kuva 1)

Tässä luvussa opettelemme uusia työkaluja, joilla voimme hyödyntää ehtoja Scratchilla ohjelmoidessamme. Luvun lopussa toteutamme uusilla oppimillamme taidoilla pienimuotoisen pelin. Aloitetaan kuitenkin jostain hieman yksinkertaisemmasta.

Tehtävä 1: Piiri pieni pyörii

Kokeillaan lämmittelyksi määritellä hieman erilainen ehto kissallemme noudatettavaksi kuin aiemmin. AvataanScratch-editori ja luodaan täysin samanlainen ohjelma kuin viime luvussa, mutta lopetetaan tällä kertaa kissan ympäri pyöriminen siinä vaiheessa, kun käyttäjä painaa välilyöntiä. Näppäimen painamista tarkkailevan ehtopalikan löydät Skriptit-välilehdestä Tuntoaisti-valikon alta.

Ohjelma, joka komentaa kissaa pyörimään, kunnes ohjelman käyttäjä painaa välilyöntiä. Soita ääni naukuna loppuun -palikka on myös suomennettu ”soita ääni meow loppuun”.

Luo ylläolevan kuvan mukainen Scratch-ohjelma, testaa sitä klikkaamalla yhtä sen ohjepalikoista ja palauta ohjelman projektitiedosto sen jälkeen Lovelace-järjestelmään. Muista, että voit liikutella Scratchin ohjepalikoita painamalla hiiren vasemman näppäimen pohjaan niiden kohdalla ja vetämällä niitä ympäriinsä.

Jossittelun peruskurssi

Ohjelmoinnissa erilaisia ehtoja voivat sisältää muutkin ohjeet kuin toistorakenteet. Itse asiassa ehtojen tarkastamista varten on olemassa nimenomaan asiaan vihkiytynyt sääntöjen joukkonsa, jota kutsutaan osuvastiehtolauseiksi. Tutkitaan, miten ne käytännössä toimivat. Avaa Skriptit-välilehden alta Ohjeet-valikko ja valitse sieltä jos x, sitten -palikka. Katso mallia animaatiosta.

Näin otat jos x, sitten -palikan käyttöön.

Annetaan jos x, sitten -ohjepalikalle ehdoksi aiempi välilyönnin painalluksen tarkistava ehtopalikkamme. Tämän jälkeen asetetaan jos x, sitten -palikan sisälle liiku n askelta -palikka. Muokataan liiku n askelta -palikan arvoksi 100, jotta huomaamme varmasti, kun kissa suorittaa tämän ohjeen.


Ohjelmasi tulisi näyttää nyt tältä.

Testaa ohjelmaa klikkaamalla sitä. Sen jälkeen paina välilyöntinäppäin pohjaan ja klikkaa ohjelmaa uudestaan. Jos ero tuntuu itsestäänselvyydeltä, olet jo ymmärtänyt paljon. Pythoniksi vastaava ohjelma näyttäisi muuten tältä:

import kissaikkuna # Otetaan käyttöön työkalut kissan piirtämistä varten.

kissa = kissaikkuna.luo_kissa()

if kissaikkuna.onko_valilyonti_painettu():
    kissa.liiku(10)

Tällä Python-koodilla tekstigrafiikkakissamme liikkuisi 10 pykälää, jos käyttäjä painaa ohjelman alkaessa välilyöntiä. Huomaa, että jos x, sitten -ehtolausetta vastaa pythonissa if-alkuinen rivi. Ehdon toteutuessa suoritettava rivi on puolestaan sisennetty.

Jokainen ehtolause määrää ohjelman ohjeisiin haarautumiskohdan sen mukaan, onko tarkasteltava ehto sillä hetkellä tosi vai epätosi. Juuri luomassamme ohjelmassa kissa esimerkiksi päättää sen pohjalta, mikä välilyöntinäppäimen tila on ohjelman alkaessa, liikkuuko se 100 pykälää vai ei. Välilyönnin painamisen totuusarvo määrittää siis, noudatetaanko ohjetta ”liiku 100 askelta” vai lopetetaanko ohjeiden suorittaminen.


Ehtolause haarauttaa ohjelman suorituksen.

Tällä hetkellä ohjelmamme on kuitenkin hieman tynkä. Mitä seuraisi, jos lisäisimme sen loppuun yhden ohjeen lisää? Katsotaan mitä tapahtuu! Muokkaa ohjelmaa allaolevan kuvan osoittamalla tavalla ja testaa sen toimintaa sekä välilyönti pohjaan painettuna että ilman.


Mitä tämä ohjelma saa aikaan?

Entä jos lisätty ohjepalikka sijoitetaan ehtolauseen sisälle?


Kokeile myös tämän ohjelman toimintaa välilyönti pohjaan painettuna ja ilman.

Testaamalla havaitsemme, että jos, sitten -palikan sisälle sijoitetut ohjeet suoritetaan vain palikan ehdon toteutuessa. Ohjeet, jotka eivät ole jos, sitten -palikan sisällä suoritetaan puolestaan riippumatta siitä, mikä ehdon totuusarvo on. Vieläkään ohjelmamme ei kuitenkaan herätä suuria ihastuksen huokauksia. Tutkitaan saisiko oppimallamme ehtolauseella aikaan jotain jännittävää yhdessä toistorakenteen kanssa!

Tehtävä 2: Ylikierroksilla

Luo ohjelma, joka käskee kissaa kääntymään paikoillaan 10 astetta myötäpäivään niin kauan, kunnes käyttäjä painaa välilyöntiä, jolloin ohjelma loppuu. Lisäksi joka kerta kissan pyöriessä, jos käyttäjä painaa hiiren näppäintä, käsketään kissaa liikkumaan 10 pykälää eteenpäin sen sillä hetkellä osoittamaan suuntaan. Naukumista ja asennon vaihtamista ei tähän ohjelmaan sisällytetä.

Vinkki: lähde liikkeelle sijoittamalla ehtolause toistorakenteen sisään. Tällöin kissa tarkistaa ehtolauseen ehdon uudelleen jokaisella toistolla eli käytännössä jatkuvasti.

Kun testaat hiiren painamista, ole tarkkana, ettet paina hiiren näppäintä osoittimen ollessa ohjelman ohjepalikoiden päällä, sillä tämä pysäyttää ohjelman. Muista siis testatessa siirtää osoitin ensin sivuun. Jos kissa karkaa kokonaan alueen ulkopuolelle, voit palauttaa sen takaisin keskelle aluetta painamalla Liike-valikosta aseta x:lle arvo 0- ja aseta y:lle arvo 0 -palikoita. Näitä palikoita et tarvitse itse ohjelmassa.

Liike-valikon alta löytyviä aseta arvo -palikoita klikkaamalla voit palauttaa kissan keskelle aluettaan.

Kuten edellisessä luvussa vihjasimme, silmukat todella ovat koodarin vuoristorata.




Suunnitelma B

Olemme ihmetelleet ahkerasti tilannetta, jossa ohjelma määrää kissan tekemään jotain siinä tapauksessa, kun tietty ehto käy toteen. Ehtolauseilla on kuitenkin mahdollista myös ohjeistaa tietokonetta tekemään jotain, kun tietty ehto on tosi, ja jotain aivan muuta, kun se on vuorostaan epätosi. Tätä toiminnallisuutta varten on kuitenkin esiteltävä uusi ohjepalikka. Luodaan ohjelma, joka käskee kissaa liikkumaan 100 pykälää, jos käyttäjä on painanut välilyönnin pohjaan, ja muussa tapauksessa naukumaan. Katso apua kuvasta ja testaa ohjelmaa.

Kokeile ohjelmaa jälleen välilyönti pohjaan painettuna ja ilman. Ohjelmassa käytetty uusi ehtolausepalikka on ympyröity punaisella (suomennettu myös ”jos x, niin –– muuten”).

Havaitset varmasti eron aiempiin ohjelmiin verrattuna. Kun aiemmin ehtolauseen sisään asetetut ohjeet joko suoritettiin tai jätettiin suorittamatta, nyt puolestaan valitaan kaksien ohjeiden väliltä. Kun kissa suorittaa ohjeita järjestyksessä ja osuu jos x, sitten –– muuten -ehtolauseen kohdalle, se tarkistaa ehtolauseen onko näppäin välilyönti painettu? -ehdon. Jos ehto on tosi, kissa päättää toimia ”liiku 100 pykälää” -ohjeen mukaisesti. Jos ehto on sitä vastoin epätosi, kissa toimii ”soita ääni meow loppuun” -ohjeen mukaisesti.


Jos x, sitten –– muuten -ehtolauseen kohdalla kissa valitsee kaksien ohjeiden väliltä.

Otetaan myös tämä ehtolause käyttöön yhdessä toistorakenteen kanssa ja katsotaan, mitä saadaan aikaan. Ennen sitä vikaise kuitenkin jälleen juuri luomaamme ohjelmaa vastaavaa Python-koodia ja kiinnitä huomiota yhdenmukaisuuteen:

import kissaikkuna # Otetaan käyttöön työkalut kissan piirtämistä varten.

naukaisu = "miau"
kissa = kissaikkuna.luo_kissa()

if kissaikkuna.onko_valilyonti_painettu():
    kissa.liiku(10)
else:
    kissa.naukaise()

Tämä Python-ohjelma käskee tekstigrafiikkakissaamme liikkumaan 10 pykälää, jos käyttäjä painaa ohjelman alkaessa välilyöntiä, ja naukaisemaan muussa tapauksessa. Huomaa, että jos x, sitten –– muuten -ehtolauseen muuten-osaa vastaa Pythonissa ”else:”-rivi.

Tehtävä 3: Myötä- ja vastoinkäymisissä

Luo ohjelma, joka käskee kissaa kiertämään ympyrää vastapäivään, jos käyttäjä on painanut hiiren vasemman näppäimen pohjaan, ja myötäpäivään, jos näppäin on ylhäällä. Toteuta tämä niin, että joka silmukan toistolla edetään 10 askelta eteenpäin ja käännytään ehdon totuusarvosta riippuen 10 astetta joko myötä- tai vastapäivään. Ohjelma loppuu, kun käyttäjä painaa välilyöntiä. Naukumista ja asennon vaihtamista ei tässä tehtävässä tarvita.

Vinkki: lähde liikkeelle ohjelmasta, jossa kissa kiertää aluksi vain myötäpäivään. Tarvitset tehtävässä vainyhden toistorakenteen.

Sisäistämisen paikka

Testataan seuraavaksi, kuinka hyvin olet hahmottanut näiden kahden esitellyn ehtolauseen toiminnan. Anna jokaiseen allaolevaan kenttään vastaukseksi lukuna, kuinka monta pykälää kissa kulkee eteenpäin, jos käyttäjällä on ohjelman käynnistyessä hiiren näppäin painettuna pohjaan, mutta välilyönti ylhäällä. Yritä ensin päätellä vastaukset ilman, että arvailet tai luot vastaavan ohjelman itse. Voit käyttää apuna laskinta!

Pähkinä 1



Käy koodi maltillisesti ohje ohjeelta läpi.

Pähkinä 2

Monimutkaisemmaksi menee, mutta pidetään pää kylmänä. Huomaa, miten ehtolauseita voi myös sijoittaa toistensa sisään!

Pähkinä 3

Nyt mukana on jo toistorakennekin. Miten se vaikuttaa lopputulokseen?

Koska oppimamme ehtolauseet vastaavat jo sellaisinaan hyvin pitkälti luonnollista kieltä, ei olekaan yllätys, että niitä vastaavia ohjeita ja sääntöjä on helppo keksiä myös tosielämästä, kuten alla:

Toista jokaista koulupäivän tuntia kohden:
	- Jos tunti sisältää välituntivalvontavuoron:
		- Painu pihalle.
		- Valvo lapsia vartti.
	- Muuten:
		- Vetäydy opettajainhuoneeseen.
		- Ryystä kahvia vartti.
	- Pidä tuntia vastaavaa opetusta 45 minuuttia.
	- Jos tunti sisältää ruokailuvuoron:
		- Mene lasten kanssa syömään.
	- Muuten:
		- Jatka opetusta vartti.
Jos oppilailla tekemättä jääneitä kotitehtäviä:
	- Valvo kotitehtävien valmistumista.

Opettajan tavanomainen työpäivä puettuna toistorakenteen ja ehtolauseiden muotoon.

Tehtävä 4: Kissa ohjaksissa

Tähän mennessä olemme pyörittäneet kissaa ympäri jo niin paljon, että päätä huimaa. Ohjelmamme eivät kuitenkaan ole antaneet vielä sen käyttäjän kontrolloida kissan liikkeitä kuin hyvin epäsuorasti. Luodaan tämän puutteen korjaamiseksi ohjelma, jossa käyttäjä voi ohjata kissan kulkusuuntaa nuolinäppäimillä.

Ohjelman vaadittu toiminta on seuraavanlainen:

  • Ohjelman käskyjä toistetaan, kunnes käyttäjä painaa välilyöntiä.
  • Jokaista toistokierrosta kohden kissa liikkuu kolme pykälää eteenpäin sen sillä hetkellä osoittamaan suuntaan. Naukumista ja asennon vaihtamista ei tässä tehtävässä tarvita.
  • Jokaista toistokierrosta kohden tehdään seuraavat tarkistukset:
    • Jos käyttäjä painaa nuoli alas -näppäintä, kissa kääntyy 10 astetta myötäpäivään.
    • Jos käyttäjä painaa nuoli ylös -näppäintä, kissa kääntyy 10 astetta vastapäivään.
    • Jos käyttäjä painaa nuoli oikealle -näppäintä, kissa kiihdyttää vauhtiaan eli liikkuu ylimääräiset kolme pykälää eteenpäin.

Mieti, kumman tyyppisiä ehtolauseita tässä tehtävässä on syytä käyttää!

Koska kyseessä on tähän asti monimutkaisin ohjelma, jonka teet, muista nämä järjestelmällisen ongelmanratkaisun periaatteet:

  1. Hahmota, mitkä kaiken kaikkiaan ovat ratkaistavat ongelmat.
  2. Lähde liikkeelle varsinaista ongelmaa yksinkertaisemmasta tilanteesta ja ratkaise se yksi osaongelma kerrallaan.
  3. Mieti, mitä työkaluja olet tähän mennessä oppinut käyttämään. Mitä niistä kannattaisi hyödyntää ja miten?
  4. Muodosta mahdollisimman hyvä arvaus osaongelman ratkaisemiseksi ja kokeile sitä rohkeasti.
  5. Pohdi, mitä ratkaisun pohjalta opittiin ja muokkaa sitä tarvittaessa.

Käyttämämme ehtolauseemme ovat tähän asti tarkastaneet, painaako käyttäjä jotain tiettyä näppäintä. Huomautettakoon, että Scratchissa on myös toinen tapa valvoa näppäimien painalluksia ja suorittaa asioita niiden seurauksena, nimittäin Tapahtumat-valikon alta löytyvä Kun painetaan -palikka.


Tähän palikkaan liitetyt komennot suoritetaan, kun vastaavaa näppäintä painetaan.

Tätä tapahtumapalikkaa käytetäänkin tavallisesti Scratchissa näppäinkomentojen vastaanottamiseen jos-muotoisten ehtolauseiden asemesta. Tapahtumat ovat kuitenkin todellisessa ohjelmonnissa monimutkaisempi ja toisaalta suppeampaan käyttöön rajoittunut konsepti kuin ehtolauseet, joten turvaudumme tässä materiaalissa niiden sijaan ehtolauseisiin. Käytä siis ehtolauseita, kun tarkistat, onko jotain näppäintä painettu, myös kaikissa ohjelmointitehtävissä, jotka palautat järjestelmälle.

Uusia tuttavuuksia

Ennen kuin siirrymme soveltamaan oppimaamme, käydään läpi vielä yksi uusi Scratchin ominaisuus. Opetellaan nimittäin lisäämään ohjeistettavaksemme myös muita hahmoja uskollisen kissamme rinnalle. Klikkaa kissan alueen alla ”Uusi hahmo:” -tekstin oikealla puolella näkyvää hahmosymbolia. Symboli on korostettu kuvassa alla:

Punaisella ympyröityä hahmosymbolia klikkaamalla pääset lisämään Scratchiin uusia hahmoja.

Eteesi aukeaa valikko, josta voit valita uuden hahmon. Valitse Luokka-listasta Asiat ja klikkaa keltaista palloa. Paina lopuksi OK. Katso mallia animaatiosta.

Näin lisäämme editoriimme pallohahmon kissan rinnalle.




Annetaan nyt pallollemme ohjeita. Scratchissa tosiaan voi ohjeistaa montaa hahmoa yhtä aikaa, aivan kuten tosielämässäkin voimme antaa ohjeita useammalle kuin yhdelle vastaanottajalle. Käsketään palloamme pyörimään ikuisesti ympyrää. Samalla otamme käyttöön viimeisen toistopalikan, jota emme vielä olleetkaan käyttäneet.


Näillä ohjeilla pallo pyörii ympyrää ikuisesti.

Kun olet kasannut kuvassa näkyvät ohjepalikat kokoon, klikkaa ohjelmaa ja ihaile lopputulosta. Muista, että voit lopettaa ohjelman klikkaamalla punaista stop-merkkiä tai ohjelman ohjepalikoita uudelleen. Pallosi pyöriessä voit vaihtaa kissan takaisin aktiiviseksi ohjeistettavaksi hahmokseksi klikkaamalla sen ikonia ”Hahmot”-tekstin alapuolelta.


Näitä ikoneja klikkaamalla voit milloin tahansa vaihtaa hahmoasi, jolle annat komentoja.

Valittuasi kissan aktiiviseksi hahmoksi, klikkaa sille aiemmin luotua hyppyohjelmaa. Jos poistit jo ohjelman, voit valita muutaman ohjepalikan ja käyttää niitä. Lopputuloksena sekä kissan että pallon pitäisi suorittaa niille annettuja ohjeita yhtä aikaa.

Kun uskot ymmärtäneesi, miten kahdelle eri hahmolle ohjeiden antaminen toimii, voit poistaa pallon hahmojesi joukosta kilkkaamalla sen ikonia oikealla hiirennäppäimellä ja valitsemalla valikosta ”poista”. Joissain tapauksissa oikea hiirennäppäin ei tuo Scratchissa esille haluttua valikkoa. Tällöin on sen sijaan painettava näppäimistöltä pohjaan Shift-näppäin (näppäin, jossa pieni nuoli osoittaa ylöspäin, Ctrl-näppäimen yläpuolella) ja klikattava pallon ikonia vasemmalla hiirennäppäimellä.


Pallohahmosi saat poistettua klikkaamalla sen ikonia joko oikealla hiirennäppäimellä tai Shift-näppäin pohjassa vasemmalla hiirennäppäimellä ja valitsemalla valikosta ”poista”.

Soveltaminen

Näissä kahdessa tehtävässä rakennamme tässä luvussa jo tekemämme ohjelmien pohjalle lisää ominaisuuksia. Lopputuloksena saamme aikaiseksi kaksi hyvin yksinkertaisen pelin. Lähde liikkeelle neljännestä tehtävästä ja pohdi, millä ohjeilla sitä on täydennettävä, jotta uusi vaadittu toiminnallisuus täyttyy. Kiinnitä huomiota siihen, miten pieniä pulmia yksi kerrallaan ratkomalla onnistume luomaan vähitellen paljon suuremman kokonaisuuden. Isojen ongelmien jakaminen pieniin osaongelmiin onkin eräs ohjelmoinnin ja ylipäänsä järjestelmällisen suunnittelun keskeisistä taidoista!

Tehtävä 5: Päin seinää

Lähde liikkeelle tehtävässä 4 luodun ohjelman pohjalta. Säilytetään kaikki ohjepalikat koodissa samanlaisina kuin aiemmin. Tällä kertaa kissan on kuitenkin lisäksi seinään törmätessään pompattava seinästä. Jos seinään osutaan, soitetaan lisäksi törmäysääniefektinä rumpua numero 2. Tätä varten löydät ohjepalikan Ääni-valikon alta. Valitse soittoajaksi nolla sekuntia, niin kissa ei pysähdy törmätessään paikoilleen.

Vinkki: tarvitset tehtävään myös yhden uuden, vielä esittelemättömän ohjepalikan sekä Tuntoaisti- että Liike-valikosta seinän koskettamisen tarkistusta ja siitä pomppaamista varten.

Jos kissa karkaa kokonaan alueen ulkopuolelle, voit palauttaa sen takaisin keskelle aluetta painamalla Liike-valikosta aseta x:lle arvo 0- ja aseta y:lle arvo 0 -palikoita.

Tehtävä 6: Pallopeli

Jatketaan edellisen tehtävän pohjalle rakentamista. Ohjelmoidaan peli, jossa pelaajan nuolinäppäimillä ohjastaman kissan pitää väistellä kentällä edestakaisin liikkuvaa ja kimpoilevaa palloa.

Luo nyt Scratch-editoriisi kissan rinnalle samanlainen pallohahmo kuin aiemmin tässä luvussa tehtiin. Anna pallolle seuraavat ohjeet:

  • Alussa osoita suuntaan -90 astetta (vasempaan).
  • Käänny sen jälkeen 45 astetta myötäpäivään.
  • Liiku 3 pykälää eteenpäin niin kauan, kunnes kosketetaan kissaa. Kissan nimi on Scratchin ohjepalikoissa Sprite1.
  • Lisäksi jos pallo koskettaa liikkuessaan reunaa, sen on pompattava reunasta.

Muokkaa puolestaan kissan ohjeita siten, että se lopettaa ohjeiden toistamisen vasta, kun se koskettaa palloa. Scratch käyttää pallohahmosta nimeä Ball. Kosketettuaan palloa kissan on vielä lopuksi naukaistava. Naukaisu soitetaan loppuun.

Kissan ja pallon ohjelma on hieman vaivalloista käynnistää erikseen klikkailemalla. Helpompaa olisikin, jos ne voisi määrätä käynnistymään yhtäaikaisesti silloin, kun niin haluamme. Esitellään tätä varten uusi ohjepalikka. Tapahtumat-valikon alta löydät seuraavan näköisen palikan:

Tätä ohjepalikkaa käyttämällä voimme aloittaa molempien hahmojen ohjelmat samanaikaisesti.

Lisää tämä palikka sekä kissan että pallon ohjelman alkuun. Tämän jälkeen voit aloittaa molemmat ohjelmat yhtä aikaa klikkaamalla vihreää lippua stop-merkin vieressä! Kun molempien hahmojen ohjeet ovat kasassa, voit kokeilla, kuinka kauan onnistutkaan pakenemaan kissalla edestakaisin pomppivaa palloa.

Leikki- ja peli-ideoita

Hyvin monien tuttujen leikkien ja pelien säännöt perustuvat toistorakenteisiin, ehtoihin ja ehtolauseisiin. Esimerkki tällaisesta pelistä on muun muassa hirsipuu:

Pelinjohtaja keksii salaisen sanan.
Toista niin kauan, kunnes hirsipuupiirros on valmis tai salainen sana on paljastunut:
	- Pelaajat esittävät arvauksen.
	- Jos arvaus on kirjain:
		- Jos kirjain löytyy salaisesta sanasta:
			- Paljastetaan salaisesta sanasta jokainen arvatun kirjaimen esiintymä.
                - Muuten:
                        - Piirrä yksi viiva lisää hirsipuupiirrokseen.
	- Muuten:
		- Jos arvaus on salainen sana:
			- Paljasta koko sana.
		- Muuten:
			- Piirrä yksi viiva lisää hirsipuupiirrokseen.
Jos hirsipuupiirros on valmis:
	- Pelinjohtaja voittaa
Muuten:
	- Muut pelajaat voittavat.

Hirsipuupelin säännöt toistorakenteiden ja ehtolauseiden muodossa esitettynä.

Toinen hyvin usein ohjelmointiharjoituksena käytetty esimerkki on FizzBuzz, josta käytämme erittäin vapaana suomennoksena nimeä AasiSvengaa. Peli etenee siten, että pelaajat asettuvat piiriin ja alkavat luetella vuorotellen lukuja ykkösestä alkaen. Jos kuitenkin luku on kolmella jaollinen, pitää pelaajan sanoa luvun sijaan ääneen ”aasi”. Jos puolestaan luku on viidellä jaollinen, on hänen sanottava ”svengaa”. Jos luku on jaollinen molemmilla, täytyy pelaajan sanoa ”aasi svengaa”. Jos pelaaja tekee virheen tai epäröi, hän putoaa pelistä pois.

Kasvatettavan luvun tämänhetkinen arvo on yksi.
Nuorin pelaaja on vuorossa.
Toista niin kauan, kunnes jäljellä on vain yksi pelaaja:
	- Jos luku on jaollinen kolmella ja viidellä:
		- Oikea vastaus on "aasi svengaa".
	- Muuten: 
		- Jos luku on jaollinen kolmella:
			- Oikea vastaus on "aasi".
		- Muuten:
			- Jos luku on jaollinen viidellä:
				- Oikea vastaus on "svengaa".
			- Muuten:
				- Oikea vastaus on luvun tämänhetkinen arvo.
	- Jos pelaaja ei vastaa oikeaa vastausta:
		- Pelaaja putoaa pois pelistä.
	- Luvun arvoa kasvatetaan yhdellä.
        - Vuorossa oleva pelaaja on seuraava pelaaja myötäpäivään kiertäen.
Jäljelle jäänyt pelaaja on voittaja.

Erilaisia pelejä toistorakenteiden ja ehtolauseiden muotoon auki purkamalla on helppo harjoitella ohjelmointiajattelun sisäistämistä. Ylläolevan kaltaisesta esitysmuodosta vaaditaankin enää hyvin vähän työtä, että pelit voidaan muotoilla tietokoneen suoritettaviksi ohjelmiksi.

Toistorakenteita ja ehtolauseita voi harjoitella jopa rytmipelinä tai liikuntaharjoituksena. Alussa pelinjohtaja antaa jatkuvasti toistettavan sarjan ohjeita, kuten ”lyö kädet yhteen, taputa polvia ja tömistä jaloilla maata”. Vähä vähältä puolestaan lisätään leikkiin uusia sääntöjä: ”jos pelinjohtaja nostaa käden pystyyn, kaikki huutavat ääneen ’hei!’”, ”jos pelinjohtaja osoittaa peukalolla ylöspäin, nostetaan tempoa”, ja niin edelleen.

Kuvalähteet

  1. One bed, two cats., Ryusuke, lisenssi: CC BY 2.0, muokkaus: teksti lisätty, kuvaa rajattu.
  2. Samouraï, futur geek, Camille Gévaudan, lisenssi: CC BY-SA 2.0, muokkaus: teksti lisätty, kuvaa rajattu.
  3. My sister's doggy Indie having his morning coffee., Raymond Shobe, lisenssi: CC BY-SA 2.0, muokkaus: teksti lisätty, päivämäärä poistettu, kuvaa rajattu.
  4. p1220416, Andrew Gray, lisenssi: CC BY-SA 2.0, muokkaus: teksti lisätty, kuvaa rajattu.