4. Ehtolausekkeet

Sisältö ja ohje

1. Teoriaa ja kootut selitykset. Lue tekstit ajatuksella läpi.
2. Haastetehtäviin vinkit ja tarvittavat palikat.
3. Haastetehtävä 1. Tehkää työparina
4. Haastetehtävän 1 palautuskansio.
5. Haastetehtävä 2. Vaihtakaa koodaajaa, toinen pari koodaa tämän (paitsi jos molemmilla oma pallo).
6. Haastetehtävän palautuskansio.

If, then, else // Jos, niin, muuten

Ehtolausekkeet ovat ohjelmoinnin perusasioita mutta myös erittäin monikäyttöisiä!


Kyse on siis jostain toiminnosta, mutta sen toteuttamiselle on asetettu ehto tai ehtoja.

  • Jos käy näin, niin tee näin. Muuten tee näin.

Englanniksi siis if, then, else.



Ehtolausekkeen idea on helppo ymmärtää ihan tavallisesta elämästä, esimerkiksi näin: 


  • Kävelet kadulla. Sääennuste on luvannut sadetta ja sinulla on sateenvarjo mukanasi. Olet määritellyt itsellesi ehtolausekkeen: Jos sataa, niin avaa sateenvarjo. Muuten, pidä sateenvarjo suljettuna.


Mutta eihän elämä ole aina näin yksinkertaista. On tilanteita, jolloin sateenvarjon käyttämisen järkevyyteen vaikuttavat myös muut olosuhteet, siis oikeastaan muuttujat. Muuttuja on jokin asia, jonka tila voi muuttua. *Duh?

Esimerkkitapauksessa sateen määrä on yksi muuttuja. Olennainen kysymys on, milloin sataa tarpeeksi, jotta sinun kannattaa avata sateenvarjo? Millaisia arvoja tämä muuttuja voi saada? Sanoitetaan tämä ohjelmaksi, esimerkiksi näin:


  • Kävelet kadulla kohti kauppaa. Sääennuste on luvannut sadetta ja sinulla on sateenvarjo mukana. Tarkkailet sateenmäärää. Annat tälle muuttujalle nimen "Sademäärä". Päätät, että muuttuja voi saada arvoja 0, 1 tai 2. Nolla tarkoittaa, että ei sada. Yksi tarkoittaa pientä tihkua, joka ei kastele sinua heti. Kaksi tarkoittaa että sataa jo sen verran, että kastut nopeasti. Olet määritellyt ehtolausekkeen: Jos muuttujan arvo on 2, avaa sateenvarjo. Muuten pidä sateenvarjo suljettuna. Ohjelma tarkastaa jatkuvasti muuttujan arvoa, kunnes olet sisällä kaupassa.

Joskus muuttujan arvo voi olla noin yksinkertainen, siis 0, 1 tai 2. Mutta onhan sen niin, että tihkusadekin kastelee, jos matkasi kauppaan on pitkä. Tällöin olisi hyvä mitata sademäärää tarkemmin, heti mahdollisen tihkusateen alusta lähtien. Oletetaan, että meillä olisi nyt mukana sateenmäärää mittaava kuppi. Sadetta mitanaan millimetreinä. Muuttujan arvo kasvaa siis sitä mukaa, kun kuppiin kertyy vettä. Voisimme asettaa ehtolausekkeen siten, että Jos sadetta kertyy kuppiin tasan 0,1mm tai enemmän, niin avaa sateenvarjo. Ohjelmoinnissa nämä kirjoitetaan pienempi kuin, suurempi kuin tai yhtä suuri eli vaikkapa näin:

  • Jos muuttujan nimeltään "sademäärä" arvo on >= 0,1mm, niin avaa sateenvarjo. (eli suurempi tai yhtäsuuri kuin 0,1mm)

Matematiikassa muuttujien niminä käytetään usein vaikkapa a, b tai x. Ohjelmoinnissakin voi näitäkin käyttää, mutta jotta elämä olisi helpompaa ja koodia olisi helpompi lukea ja hallinnoida, koodaaja voi nimetä muuttujat itse. Se on koodaajan päätös. 



Esimerkki muuttujan nimämisestä ja ehtolausekkeesta.

Kuvitteellisen tekstipelin koodi:

Anna muuttajan nimeksi "kakka".
Näytä pelaajalle teksti "Näet kadulla koiran kakan. Astutko siihen? Vastaa 1=kyllä tai 2=ei"
Näytä pelaajalle tekstikenttä. Tekstikentän vastauksen arvo on muuttuja "kakka"
Lue muuttuja "kakka"
Jos "Kakka" on 1, niin näytä teksti "Oletpa tyhmä. Jatkat matkaasi haisevaa kakkaa kengässäsi."
Jos "Kakka" on 2, niin näytä teksti "Väistit kakan, mutta polkaisit miinaan. Kuolit."

Vinkit ja tarvittavat palikat

Vinkki 1. Huomaa, että tiettyjen palikoiden sisälle, voi asettaa tietyn muotoisia palikoita. Muodot toimivat siis aina vihjeenä! Esimerkiksi tässä tehtävässä, sinun tulee sijoittaa yhden palikan sisälle yksi palikka ja tämän sisälle vielä toinen. Tarkkaile siis muotoja!

Valonmäärästä.
Boltin sensori mittaa valoa Lux arvoina. Paljonko huoneen perusvalaistus on sitten Luxeina? Entä montako Luxia on hämärä pahvilaatikossa? Sopivat arvot on vain testattava. Sopivat arvot löytyvät 0-500 väliltä.

Tähän haasteeseen tarvitavat blokit näet tässä:



Vinkki 2. Ohjelmoinnissa kannattaa sanoittaa, siis muuttaa ihan puheeksi. Kerro ääneen, mitä ohjelmassa tapahtuu, tai mitä siitä pitäisi tapahtua. Sanoittaminen helpottaa koodaamisen opiskelua ja ymmärtämistä.

Vinkki 3. Koodi ei toimi halutusti. Sanoita taas ohjelma läpi. Mihin asti ohjelma toimii? Missä kohden homma menee pieleen? Onko käytössä oikeat palikat? Entä arvot? Voit pyytää kaveria lukemaan koodisi läpi. Hän voi nähdä virheen ns. "tuorein silmin". Googlaaminen auttaa myös usein, kunhan keksit oikeat englanninkieliset hakusanat. Suomeksi osumia tulee yleensä vähän.

Vinkki 4. Usein on niin, että toimivaan koodiin ei ole vain yhtä oikea ratkaisua. Toki, paras koodi on se yksinkertaisin, mutta asioita voi tehdä monilla eri tavoilla...

Ai niin. Koodauksessa on muutamia hassuja juttuja, kuten "===" tai "!==" Törmäät näihin tässä tehtävässä. Mitä nämä oikein tarkoittavat?
Eli koodissa siis vertamme, onko luku a esimerkiksi pienempi tai suurempi kuin b. Nuo outohkot merkijonot vertaavat vain eri tavalla. Niitä käytetään useissa ohjelmointikielissä. 

a>b eli a on suurempi kuin b
a<b eli a on pienempi kuin b
a<=b eli a on pienempi tai yhtäsuuri kuin b
a>=b eli a on suurempi tai yhtäsuuri kuin b
a!==b eli a on eri suuri kuin b (arvo voi olla mitä tahansa, mutta ei sama)
a===b eli a on tismalleen sama kuin b

Tyhmä kysymys? Miksei yksi "=" ole riittävä? Kysymys ei ole tyhmä. Lyhyt vastaus on, että = ja == sekä === tarkoittavat koodissa eri asioita :)

Haastetehtävä 1: Valot päälle!

Sphero Boltissa on sisäänrakennettuna valosensori, joka mittaa valonmäärää.

Haaste:
Luokaa ohjelma, jossa tavallisessa huonevalaistuksessa Boltilla ei ole valoja päällä. Mutta jos Bolt joutuu hämärään tai pimeään paikkaan, se sytyttää sekä takavalon että päävalon (matriisi) täyteen kirkkauteen. Ja kun Bolt tulee pimeästä takaisin valoisaan tilaan, se sammuttaa valot. 

Boltin pimeänä tilana käytämme pahvilaatikkoa, josta on leikattu sivustaan sopiva kolo. Hae opettajalta. Boltille ei ohjelmoida tässä liikettä. Eli käynnistä ohjelma, vie käsi ja bolt hämärään, tuo käsi ja bolt pois hämärästä.

Kuvatkaa onnistuneesta haasteesta video. Muistakaa kirjoittaa palautuksen oheen ryhmän jäsenet.

Valot päälle! -haasteen palautuskansio

Muista kirjoittaa mahdollisen työparisi nimi oheen...
  • Palauta kuva tai muu tiedosto
  • Palauta merkintä
  • Palauta linkki

Sinulla ei ole tarvittavia oikeuksia lähettää mitään.

Haastetehtävä 2: Torakka!

Jos olet matkallasi huonossa hotellissa, jossa on kenties torakoita, pääset torakoista eroon helpolla niksillä: Laita silmät kiinni, ennen kuin sytytät huoneeseen valot. Kun olet sytyttänyt valot päälle, pidä silmiä suljettuna vielä noin 5 sekuntia ja tsadaa! Huoneessa ei ole torakoita!

Haaste:
Bolt on nyt torakka ja se elää tyytyväisenä pimeässä huoneessa (aseta pahvilaatikko päälle). Mutta kun joku laittaa valot päälle (ottaa pahvilaatikon pois), torakka liikkuu paniikissa! Sammuta valot ja torakka rauhoittuu...