Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Racket perusteet 4. Ehto- ja valintalauseet

2,860 views

Published on

Koodausta kouluun - opettajan materiaali
- Totuusarvot, boolean logiikka, ehtolauseet, predikaatit, valintalause

Published in: Education
  • Be the first to comment

  • Be the first to like this

Racket perusteet 4. Ehto- ja valintalauseet

  1. 1. Racket – perusteet 4. EHTO- JA VALINTALAUSEET
  2. 2. Sisällysluettelo: 4A. EHTOLAUSE 1. Totuusarvot 2. Vertailuoperaattorit 3. Predikaatit 4. Ehtolause 4B. VALINTALAUSE 5. Boolean operaattorit 6. Valintalause 2
  3. 3. Totuusarvot (true/false) - tosi #true, true #t, #T 3 true false - epätosi #false, false #f, #F
  4. 4. Vertailuoperaattorit Vertailuoperaattorit palauttavat totuusarvon Yleensä vain samantyyppisiä arvoja kannattaa verrata keskenään, siksi nämä funktiot toimivat vain, jos argumentit ovat oikean tyyppisiä: ◦ Vertailuoperaattorit luvuille: <, >, <=, >=, = ◦ Merkkijonoille: string=? ◦ Kuville: image=? esim. (< 4 5)  #true (= 4 -4)  #false (string=? ”kissa1” ”kissa1”)  #true 4
  5. 5. Muunnokset ja vertailu 5 string-> number 6”6” = 6 #T (= (string->number ”6”) 6) Luvut ja merkkijonot voidaan muuntaan toisen tyyppisiksi, jotta niitä voidaan vertailla: number->string string->number
  6. 6. Predikaatit Funktioita, jotka palauttavat totuusarvon kutsutaan predikaateiksi. Racket-kielessä niiden nimessä on usein kysymysmerkki esim. (number? 4)  #true (string? 4)  #false (even? 2)  #true (zero? 3)  #false (positive? -3)  #false 6 ?
  7. 7. Ehtolause (if) 7 (if (< a 100) ”a on pienempi kuin 100” ”a on yhtäsuuri tai suurempi kuin 100”)
  8. 8. Ehtolause funktion sisällä Ehtolause sijaitsee normaalisti funktion sisällä, jolloin tutkitaan saatuja parametrien arvoja: esim. (define (termostaatti lämpötila) (if (< lämpötila 22) ”käynnistä lämmitin” ”sammuta lämmitin”))) 8 22°C
  9. 9. Sisäkkäiset ehtolauseet Ehtolauseen sisällä voi olla toinen ehtolause: esim. (define (termostaatti lämpötila) (if (number? lämpötila) (if (< lämpötila 22) ”käynnistä lämmitin” ”sammuta lämmitin”) ”lämpötilasensori on viallinen”)) 9 sisempi ehtolause on ulomman ehtolauseen ”tosihaara”
  10. 10. Robottiauto funktio ehtolauseella ;; robottiauto : Väri -> Merkkijono (define (robottiauto valo) (if (string=? valo ”green”) ”aja” ”pysähdy”) (check-expect (robottiauto ”red”) ”pysähdy”)) (check-expect (robottiauto ”green”) ”pysähdy”)) 10
  11. 11. Boolean operaattoreilla voi yhdistellä ehtoja ◦ Kaikkien ehtojen tulee olla totta: and ◦ Vähintään yhden ehdon tulee olla totta: or ◦ Kääntää ehdon vastakkaiseksi: not Boolean operaattorit (and, or, not) 11
  12. 12. and kaikkien ehtojen tulee toteutua 12 (and #true #true)  #true (and #true #false)  #false (and #false #true)  #false Esim. Jos funktiota kutsuu väärän tyyppisellä argumentilla, tulee virhe. Siksi on hyvä tutkia ENNEN funktion kutsumista, että argumentit ovat ok. (define (pinta-ala a b) (if (and (number? a)(number? b)) (* a b) ”Virhe: anna lukuja”))
  13. 13. or vähintään yhden ehdon on toteuduttava (or #true #false)  #true (or #false #true)  #true (or #false #false)  #false 13 Esim. Joskus ”oikeita” vastauksia on useampi, silloin ehdot yhdisteään käyttämällä or:ia. (define (pohjoismaa? maa) (or (string=? maa ”Suomi”) (string=? maa ”Norja”) (string=? maa ”Ruotsi”) (string=? maa ”Tanska”) (string=? maa ”Islanti”))
  14. 14. not kääntää ehdon vastakkaiseksi 14 (not #true)  #false (not #false)  #true Esim. Joskus tarvitaan ehdon vastakohtaa (define (nollastapoikkeva? luku) (not (zero? luku)) 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
  15. 15. valintalause (cond) Jos ehtolauseita tulee kovin monta sisäkkäin, niiden lukeminen ja ohjelmointi on sekavaa. Valintalauseeseen voi laittaa niin monta ehtoa kuin haluaa ja viimeinen else-haara suoritetaan jos mikään muu ehto ei toteutunut. 15 Esim. Koska bussilipun hinta (€) määräytyy iän mukaan ehtoja on olta monta. (define (bussilipun-hinta ikä) (cond [(>= ikä 18) 3] [(< 12 ikä 18) 2] [(<= 7 ikä 12) 1] [else 0]))

×