2.4 Valintalause ja Boolean operaattorit
Jos koodissa on useita haarautumisvaihtoehtoja (sisäkkäisiä if-lauseita), voi olla selkeämpää käyttää valintalausetta eli cond-lausetta. Siinä voidaan antaa niin monta ehtoa kuin on tarpeen ja lopuksi else-haara, joka palautetaan jos mikään varsinaisista ehdoista ei toteutunut.
Joskus haaran suorittamiseksi pitää useamman ehdon toteutua tai kahdesta ehdosta vain toisen tarvitsee toiteutua. Yksittäisiä ehtoja voidaan yhdistellä monimutkaisemmiksi ehdoiksi Boolean operaattoreilla joita ovat and, or ja not.
Voit harjoitella valintalausetta sekä Boolean operaattoreita seuraavien tehtävien avulla.
2.4.1 Syötteen tarkistaminen
Ennen kuin harjoittelet ehto- ja valintalauseita kannattaa harjoitella predikaattien, vertailuoperaattoreiden sekä Boolean operaattoreiden käyttöä syötteen tarkistamiseen. Syötteen tarkistaminen on tärkeää, sillä väärän tyyppisellä syötteellä ohjelma yleensä kaatuu ellei tilannetta ole otettu huomioon ehto- tai valintalauseen avulla. Lataa harjoitustiedosto tästä:
| ||
|
Tehtävätiedosto sisältää nämä harjoitustehtävät:
Syötteen tarkistaminen
Ohjelmoi funktio, joka tarkistaa onko annettu syöte halutunlainen. Käytä tarkistamiseen predikaatteja, vertailuoperaattoreita sekä Boolean operaattoreita. Jos syöte on halutunlainen funktio palauttaa #true muuten #false.
a) Syötteen pitää olla positiivinen kokonaisluku. |
b) Syötteen pitää olla välillä 0-100 (päätepisteet mukana). |
c) Syötteen pitää olla positiivinen parillinen ja pienempi kuin 500. |
d) Syötteen pitää olla negatiivinen murtoluku (ei saa olla kokonaisluku). |
e) Syötteen pitää olla joko suurempi kuin -10 ja pienempi kuin 10 tai suurempi kuin 50 ja pienempi kuin 100. |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
| |||||||
|
|
|
|
|
|
2.4.2 Taksimatkalaskut
Harjoittele ehto- ja valintalauseita seuraavien taksimatkalaskujen avulla. Lataa harjoitustiedosto tästä:
| ||
|
Tehtävätiedosto sisältää nämä laskutehtävät:
Taksimatkalaskut
Tehtävä 1 | Tee funktio, jonka avulla voit laskea taksimatkan suuruuden euroissa, kun tiedetään matkustajien määrä ja kuljetut kilometrit. Tarkista myös funktion saamat arvot, että ne ovat järkeviä ja jos ne eivät ole palauta "tarkista tiedot". |
Tehtävä 2 | Sinulla on taskussasi x euroa ja teitä on yhteensä y matkustajaa. Tee funktio, joka laskee kuinka kauas (km) pääsette ajelemaan rahoillasi. |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
|
|
2.4.3 Kolmiotehtävät A2
Harjoittele valintalauseita sekä Boolean operaattoreita 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 A2
Tehtävä 1 | Kirjoita funktio, joka ottaa sisäänsä kolmion kulmat suuruusjärjestyksessä ja palauttaa kolmion tyypin: "teräväkulmainen kolmio", "tylppäkulmainen kolmio", "suorakulmainen kolmio" tai jos tehtävä on mahdoton "ei ole kolmio". |
Tehtävä 2 | Kirjoita funktio, joka ottaa sisäänsä kolmion sivujen pituudet suuruusjärjestyksessä ja palauttaa kolmion tyypin: "tasasivuinen kolmio", "tasakylkinen kolmio", "kolmio" tai "ei ole kolmio". |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
2.4.4 Kolmiotehtävät B
Harjoittele valintalausetta ja Boolean operaattoreita seuraavien kolmion geometriaan liittyvien tehtävien avulla. Lataa harjoitustiedosto tästä:
| ||
|
Tehtävätiedosto sisältää nämä laskutehtävät:
Kolmiotehtävät B
Neliöjuuren antamat tulokset ovat aina likiarvoja (epätarkkoja). DrRacket varoittaa epätarkoista arvoista lisäämällä luvun eteen #i-merkinnän. Samasta syystä emme voi käyttää check-expect-testiä vaan epätarkoille tuloksille tarkoitettua check-within-testiä.
Tehtävä 1 | Kirjoita funktio, joka palauttaa suorakulmaisen kolmion kolmannen sivun pituuden, kun kaksi sivua on annettu. Funktio saa sisäänsä kahden sivun pituudet, sekä tiedon siitä onko toisena annettu luku (y) hypotenuusan pituus. Funktio laskee Pythagoraan lauseen avulla kolmannen sivun pituuden. Jos tehtävä on mahdoton se palauttaa "ei ole kolmio" ja jos sivujen pituudet on annettu niin että niistä ei muodostu suorakulmaista kolmiota se palauttaa "ei ole suorakulmainen kolmio". |
Tehtävä 2 | Kirjoita funktio, joka tutkii kolmion sivujen pituuksien avulla onko kyseessä suorakulmainen kolmio. Käytä avuksesi Pythagoraan lausetta. Huomaa, että sivujen pituudet saa antaa missä järjestyksessä tahansa ja ohjelman pitää huomata myös se, jos annetut sivut eivät muodosta kolmiota. Palauta tässä tapauksessa "ei ole kolmio". |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
|
|
|
|
|
|
|
|
|
2.4.5 Liikennevalot
Suunnittele ja koodaa funktio, joka tuottaa liikennevalot. Käytä ehto- tai valintalausetta apunasi.
Liikennevalot
Koodaa funktio, joka palauttaa kuvan mukaisia liikennevaloja (mallikuva on saatu kutsumalla funktiota useita eri kertoja). |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|