3. Totuusarvot (true/false)
Totuusarvot:
◦ #true, #t, #T, true
◦ #false, #f, #F, false
3
Boolean operattorit (and/or/not)
A B (and A B) (or A B) (not A)
#T #T #T #T #F
#T #F #F #T #F
#F #F #F #F #T
4. Predikaatit
Funktioita, jotka palauttavat totuusarvon kutsutaan predikaateiksi.
Racket-kielessä niiden nimessä on usein kysymysmerkki
esim. (number? 4) true
(string? 4) false
Jos funktiota kutsuu väärän tyyppisellä argumentilla, tulee virhe. Siksi on
hyvä tutkia ENNEN kutsua, että argumentit ovat ok.
esim.
(define (pinta-ala a b)
(if (and (number? a)(number? b))
(* a b)
”Virhe: anna lukuja”))
4
5. Ehtolause (if)
5
(if (< a 100)
”a on pienempi kuin 100”
”a on yhtäsuuri tai suurempi kuin 100”)
6. Vertailuoperaattorit
Vertailuoperaattorit palauttavat totuusarvon
Huomaa, että vain saman tyyppisiä arvoja voi verrata keskenään:
◦ Vertailuoperaattorit luvuille: <, >, =, <=, >=
◦ Merkkijonoille: string=?
◦ Kuville: image=?
Arvon voi tarvittaessa muuttaa toiseksi kutsumalla funktiota, joka
muuntaa tietotyypin:
◦ number->string
◦ string->number
6
8. Valintalause (cond)
KOODIAAPINEN MOOC - SYKSY 2015
(cond [(not (number? a)) ”a ei ole luku”]
[(< a 100) ”a on pienempi kuin 100”]
[else
”a on suurempi tai yhtäsuuri kuin 100”]
9. display-read
◦ display-read näyttää käyttäjälle kuvan/merkkijonon/luvun
(=sivuvaikutus) ja palauttaa käyttäjän editoriin kirjoittaman
merkkijonon
9
display-
read
ARGUMENTIT
PALUUARVO
kuva
”tikkataulu”
merkkijono
Asenna paketti DrRacket:issa:
File -> Package manager
Package source: teachpacks
(lopuksi paina enter)
sivuvaikutus
10. display-value
◦ display-value näyttää käyttäjälle kuvan/merkkijonon/luvun ja
annetun arvon (jos sen voi näyttää) ja palauttaa annetun arvon
10
display-
value
ARGUMENTIT
PALUUARVO
merkkijono
35
luku
”Tulos on:”
luku
35
sivuvaikutus
11. Tunnistuspeli
Käytä ehtolausetta ja vertailuoperaattoreita ja tee yksinkertainen
tietokilpailupeli, jossa käyttäjältä kysytään esim. mitä kuva esittää ja
vastausta verrataan oikeaan vastaukseen. Jos oikeinta vastauksia on monta
tee oma ”predikaatti”-funktio, joka tarkastaa vastauksen ensin (koira?).
(define KYSYMYS
(above (text ”Mikä eläin?” 30 ”black”) )
(define (koira? sana)
(or (string=? sana ”koira”)
(string=? sana ”rakki”))
(display-value ”vastauksesi oli:”
(if (koira? (display-read KYSYMYS))
”Oikein”
”Väärin”))
11
12. Pinta-alan tai tilavuuden
laskuri, kysyy tiedot käyttäjältä
Kysy käyttäjältä kappaleen mitat, käytä hyväksesi funktiota jonka teit
aikaisemmin ja ilmoita käyttäjälle tulos. Muista, että display-read
palauttaa käyttäjän antamat tiedot merkkijonoina!
(display-value ”Pinta-ala on:”
(pinta-ala
(string->number (display-read ”Anna kanta:”))
(string->number (display-read ”Anna korkeus:”))))
12
13. Vinkkejä viikkotehtävään
Voit tehdä minkä tahansa sovelluksen: animaation, piilokuvan (hiirellä
toimiva), tunnistus- tai valintapelin tai automaattilaskurin. Ota mallia
esimerkeistä, keksi oma versiosi niistä.
KOODIAAPINEN MOOC - SYKSY 2015