SlideShare a Scribd company logo
1 of 13
Racket
3. VIIKKO
Boolean logiikka
2
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
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
Ehtolause (if)
5
(if (< a 100)
”a on pienempi kuin 100”
”a on yhtäsuuri tai suurempi kuin 100”)
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
Muunnokset ja vertailu
7
string->
number
6”6”
=
7
#F
(= (string->number ”6”) 7)
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”]
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
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
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
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
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

More Related Content

What's hot

Racket MOOC (kevät 2016) - jakso 4
Racket MOOC (kevät 2016) -  jakso 4Racket MOOC (kevät 2016) -  jakso 4
Racket MOOC (kevät 2016) - jakso 4Tiina Partanen
 
Racket jatko 6. Listat
Racket jatko 6. ListatRacket jatko 6. Listat
Racket jatko 6. ListatTiina Partanen
 
Racket perusteet - Sovellukset A
Racket perusteet - Sovellukset ARacket perusteet - Sovellukset A
Racket perusteet - Sovellukset ATiina Partanen
 
Racket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetRacket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetTiina Partanen
 

What's hot (9)

Racket MOOC (kevät 2016) - jakso 4
Racket MOOC (kevät 2016) -  jakso 4Racket MOOC (kevät 2016) -  jakso 4
Racket MOOC (kevät 2016) - jakso 4
 
Racket MOOC - jakso 3
Racket MOOC - jakso 3Racket MOOC - jakso 3
Racket MOOC - jakso 3
 
Racket Turtle
Racket TurtleRacket Turtle
Racket Turtle
 
Racket MOOC - jakso 6
Racket MOOC -  jakso 6Racket MOOC -  jakso 6
Racket MOOC - jakso 6
 
Racket jatko 6. Listat
Racket jatko 6. ListatRacket jatko 6. Listat
Racket jatko 6. Listat
 
C# nykyiset kipupisteet
C# nykyiset kipupisteetC# nykyiset kipupisteet
C# nykyiset kipupisteet
 
Racket perusteet - Sovellukset A
Racket perusteet - Sovellukset ARacket perusteet - Sovellukset A
Racket perusteet - Sovellukset A
 
Racket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetRacket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseet
 
Racket MOOC - jakso 5
Racket MOOC - jakso 5Racket MOOC - jakso 5
Racket MOOC - jakso 5
 

More from Tiina Partanen

Computational Thinking as an Emergent Learning Trajectory of Mathematics
Computational Thinking as an Emergent Learning Trajectory of MathematicsComputational Thinking as an Emergent Learning Trajectory of Mathematics
Computational Thinking as an Emergent Learning Trajectory of MathematicsTiina Partanen
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistäTiina Partanen
 
Racket mooc 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikatauluTiina Partanen
 
Racket materiaali (Koodausta kouluun - projekti)
Racket materiaali (Koodausta kouluun - projekti)Racket materiaali (Koodausta kouluun - projekti)
Racket materiaali (Koodausta kouluun - projekti)Tiina Partanen
 
Ohjelmoinnin historiaa
Ohjelmoinnin historiaaOhjelmoinnin historiaa
Ohjelmoinnin historiaaTiina Partanen
 
Racket MOOC 2016 aikataulu (SYKSY)
Racket MOOC 2016 aikataulu (SYKSY)Racket MOOC 2016 aikataulu (SYKSY)
Racket MOOC 2016 aikataulu (SYKSY)Tiina Partanen
 
Koodiaapinen MOOC - keynote
Koodiaapinen MOOC - keynoteKoodiaapinen MOOC - keynote
Koodiaapinen MOOC - keynoteTiina Partanen
 
Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)Tiina Partanen
 
Koodauksen ensiaskeleet
Koodauksen ensiaskeleetKoodauksen ensiaskeleet
Koodauksen ensiaskeleetTiina Partanen
 
Racket MOOC - viikko 6
Racket MOOC - viikko 6Racket MOOC - viikko 6
Racket MOOC - viikko 6Tiina Partanen
 
Racket jatko 7. oppitunti
Racket jatko 7. oppituntiRacket jatko 7. oppitunti
Racket jatko 7. oppituntiTiina Partanen
 
Koodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketKoodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketTiina Partanen
 

More from Tiina Partanen (16)

Computational Thinking as an Emergent Learning Trajectory of Mathematics
Computational Thinking as an Emergent Learning Trajectory of MathematicsComputational Thinking as an Emergent Learning Trajectory of Mathematics
Computational Thinking as an Emergent Learning Trajectory of Mathematics
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistä
 
Racket mooc 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikataulu
 
Racket materiaali (Koodausta kouluun - projekti)
Racket materiaali (Koodausta kouluun - projekti)Racket materiaali (Koodausta kouluun - projekti)
Racket materiaali (Koodausta kouluun - projekti)
 
Ohjelmoinnin historiaa
Ohjelmoinnin historiaaOhjelmoinnin historiaa
Ohjelmoinnin historiaa
 
Racket MOOC 2016 aikataulu (SYKSY)
Racket MOOC 2016 aikataulu (SYKSY)Racket MOOC 2016 aikataulu (SYKSY)
Racket MOOC 2016 aikataulu (SYKSY)
 
Koodiaapinen MOOC - keynote
Koodiaapinen MOOC - keynoteKoodiaapinen MOOC - keynote
Koodiaapinen MOOC - keynote
 
Kurkistus koodaukseen
Kurkistus koodaukseenKurkistus koodaukseen
Kurkistus koodaukseen
 
Racket MOOC jakso 7
Racket MOOC jakso 7Racket MOOC jakso 7
Racket MOOC jakso 7
 
Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)
 
Legorobottialkeet
LegorobottialkeetLegorobottialkeet
Legorobottialkeet
 
Lapset koodaa?
Lapset koodaa?Lapset koodaa?
Lapset koodaa?
 
Koodauksen ensiaskeleet
Koodauksen ensiaskeleetKoodauksen ensiaskeleet
Koodauksen ensiaskeleet
 
Racket MOOC - viikko 6
Racket MOOC - viikko 6Racket MOOC - viikko 6
Racket MOOC - viikko 6
 
Racket jatko 7. oppitunti
Racket jatko 7. oppituntiRacket jatko 7. oppitunti
Racket jatko 7. oppitunti
 
Koodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketKoodiaapinen MOOC - Racket
Koodiaapinen MOOC - Racket
 

Recently uploaded

Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24
Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24
Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24Matleena Laakso
 
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24Matleena Laakso
 
Valkohäntäpeura (Odocoileus virginianus).pptx
Valkohäntäpeura (Odocoileus virginianus).pptxValkohäntäpeura (Odocoileus virginianus).pptx
Valkohäntäpeura (Odocoileus virginianus).pptxpurmonen8
 
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24Matleena Laakso
 
Tekoäly ja opinto-ohjaus, webinaari 26.4.24
Tekoäly ja opinto-ohjaus, webinaari 26.4.24Tekoäly ja opinto-ohjaus, webinaari 26.4.24
Tekoäly ja opinto-ohjaus, webinaari 26.4.24Matleena Laakso
 

Recently uploaded (6)

Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24
Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24
Tekoälyä koulunkäynninohjaajille. Jyty 27.4.24
 
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24
Tekoäly opetuksessa, opettajien kevätpäivä 26.4.24
 
Valkohäntäpeura (Odocoileus virginianus).pptx
Valkohäntäpeura (Odocoileus virginianus).pptxValkohäntäpeura (Odocoileus virginianus).pptx
Valkohäntäpeura (Odocoileus virginianus).pptx
 
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24
Opettaja ja tekoäly. Pedaiiltapäivä 25.4.24
 
Koulutuksen palkat ja kustannukset sekä koulutuksen ansiot
Koulutuksen palkat ja kustannukset sekä koulutuksen ansiotKoulutuksen palkat ja kustannukset sekä koulutuksen ansiot
Koulutuksen palkat ja kustannukset sekä koulutuksen ansiot
 
Tekoäly ja opinto-ohjaus, webinaari 26.4.24
Tekoäly ja opinto-ohjaus, webinaari 26.4.24Tekoäly ja opinto-ohjaus, webinaari 26.4.24
Tekoäly ja opinto-ohjaus, webinaari 26.4.24
 

Racket MOOC - viikko 3

  • 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