On this page:
2.3.1 Kolmiotehtävät A1
2.3.2 Robottisilmä
2.3.3 Viivanseuraajarobotti
2.3.4 Pyöristäminen
2.3.5 Loogiset palat
6.4

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.

Ehtolause (if), kesto 8:35

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ä:

 

Kolmiotehtävät A1 (DrRacket)

 

Kolmiotehtävät A1 (WeScheme)

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:

+

   

-

   

*

   

/

   

if

   

<

   

>

   

<=

   

>=

   

=

   

check-expect

Opettajan diat.

2.3.2 Robottisilmä

Harjoittele ehtolausetta ja vertailuoperaattoreita seuraavien tehtävien avulla. Lataa harjoitustiedosto tästä:

 

Robottisilmä (DrRacket)

 

Robottisilmä (WeScheme)

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:

+

   

-

   

*

   

/

   

if

   

<

   

>

   

<=

   

>=

   

=

   

check-expect

2.3.3 Viivanseuraajarobotti

Harjoittele ehtolausetta ja vertailuoperaattoreita seuraavien tehtävien avulla. Lataa harjoitustiedosto tästä:

 

Viivanseuraajarobotti (DrRacket)

 

Viivanseuraajarobotti (WeScheme)

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:

+

   

-

   

*

   

/

   

if

   

<

   

>

   

<=

   

>=

   

=

   

check-expect

2.3.4 Pyöristäminen

Harjoittele ehtolausetta pyöristämissääntöjen avulla. Lataa harjoitustiedosto tästä:

 

Pyöristäminen (DrRacket)

 

Pyöristäminen (WeScheme)

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:

+

   

-

   

*

   

/

   

if

   

integer?

   

floor

   

ceiling

   

check-expect

2.3.5 Loogiset palat

Harjoittele ehtolauseita koodaamalla loogisia paloja. Lataa harjoitustiedosto tästä:

 

Loogiset palat A (DrRacket)

 

Loogiset palat A (WeScheme)

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.

Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:

+

   

-

   

*

   

/

   

square

circle

   

beside

   

above

   

overlay

   

overlay/xy

check-expect

   

if

   

sqr

   

sqrt

   

sin

cos

   

tan

   

string=?

   

not

   

degrees->radians