2.3 Totuusarvot ja ehtolauseet
Jotta voimme tehdä oikeita ohjelmia, meidän täytyy pystyä tekemään haarautuvaa koodia. Tähän asti kaikki koodi on suoritettu alusta loppuun, hyppäämättä minkään vaihtoehdon yli. Suoritettava vaihtoehto päätellään sellaisten lausekkeiden avulla, jotka palauttavat totuusarvoja. Tällaisia funktioita kutsutaan predikaateiksi. Myös vertailuoperaattorit ovat predikaatteja, koska ne palauttavat totuusarvoja.
Totuusarvot, vertailuoperaattorit ja predikaatit, kesto 5:01
Yksinkertaisin tapa saada koodihaarautumaan on ehtolause eli if-lause. Se toimii niin, että jos asetettu ehto on tosi suoritetaan tosihaara:n koodi. Jos ehto on epätosi, suoritetaan epätosihaara:n koodi.
Voit harjoitella ehtolauseen ja vertailuoperaattoreiden käyttöä seuraavien tehtävien avulla.
2.3.1 Kolmiotehtävät A1
Harjoittele ehto- ja valintalauseita seuraavien kolmion geometriaan liittyvien tehtävien avulla. Lataa harjoitustiedosto tästä:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Tehtävätiedosto sisältää nämä laskutehtävät:
Kolmiotehtävät A1
Tehtävä 1 | Kirjoita funktio, joka ottaa sisäänsä kulman ja palauttaa tiedon siitä millainen kulma on: "terävä", "tylppä", "suorakulma" jne. |
Tehtävä 2 | Kirjoita funktio, joka ottaa sisäänsä kaksi kolmion kulmaa ja palauttaa kolmannen kulman suuruuden. Jos tehtävä on mahdoton funktio palauttaa "ei ole kolmio". |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
|
2.3.2 Robottisilmä
Harjoittele ehtolausetta ja vertailuoperaattoreita seuraavien tehtävien avulla. Lataa harjoitustiedosto tästä:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Tehtävätiedosto sisältää tämän tehtävän:
Robottisilmä
Koodaa taulukon avulla funktio, joka päättelee mitä väriä robotti näkee.
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
|
2.3.3 Viivanseuraajarobotti
Harjoittele ehtolausetta ja vertailuoperaattoreita seuraavien tehtävien avulla. Lataa harjoitustiedosto tästä:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Tehtävätiedosto sisältää nämä tehtävät:
Viivanseuraajarobotti
Koodaa funktio, joka ohjaa robotin seuraamaan viivaa, kun robotilla on valosensorit, jotka heijastavat valoa maahan seuraavasti:
Koodaa funktio, joka päättelee valosensoreiden antamien lukemien perusteella mihin suuntaan robotin pitää kääntyä (robotilla on kaksi valosensoria). | |
Koodaa funktio, joka päättelee valosensoreiden antamien lukemien perusteella mihin suuntaan robotin pitää kääntyä (robotilla on yksi valosensori). |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
|
2.3.4 Pyöristäminen
Harjoittele ehtolausetta pyöristämissääntöjen avulla. Lataa harjoitustiedosto tästä:
| ||
|
Tehtävätiedosto sisältää nämä laskutehtävät:
Pyöristäminen
Tehtävä 1 | Tee funktio, joka pyöristää desimaaliluvun lähimpään kokonaislukuun "tie-breaking"-sääntönä "pyöristä nollasta poispäin": Kun x on positiivinen, pyöristetään alaspäin lauseke: (x + 0,5) ja kun x on negatiivinen, pyöristetään ylöspäin lauseke: (x – 0,5) |
Tehtävä 2 | Tee funktio, joka pyöristää annettuun tarkkuuteen. Tarkkuus annetaan kokonaislukuna, joka kertoo montako desimaalia luvussa on. Käytä apunasi edellä tekemääsi pyöristä-funktiota. |
Pyöristämiselle on monta erilaista algoritmia, koulun pyöristyssäännöt eivät ole ainoat käytössä olevat.
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
2.3.5 Loogiset palat
Harjoittele ehtolauseita koodaamalla loogisia paloja. Lataa harjoitustiedosto tästä:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Loogiset palat
Loogiset palat A: Koodaa funktiot, jotka piirtävät oheiset loogiset palat. Isojen neliöiden sivu on 50 pikseliä, pienten 30 pikseliä ja reiän jalkaisijaksi 8 pikseliä. | |
Loogiset palat B: Koodaa funktio, joka piirtää oheiset loogiset palat. Ison kolmion korkeus on 50 pikseliä ja pienen kolmion korkeus 30 pikseliä. Vinkki: Tarvitset trigonometrisia funktioita kahdessakin kohdassa. |
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|