Suomalaisessa pk-yrityksessä pidetty koulutus. Tiivis esitys siitä, mitä sosiaalinen media on ja miten sitä voi hyödyntää liiketoiminnassa. Kyseistä yritystä koskevat diat on poistettu.
Only in Finnish
Suomalaisessa pk-yrityksessä pidetty koulutus. Tiivis esitys siitä, mitä sosiaalinen media on ja miten sitä voi hyödyntää liiketoiminnassa. Kyseistä yritystä koskevat diat on poistettu.
Only in Finnish
2. 8. JA 9. LUOKAN OHJELMOINTIA
Seutukunnallinen OPS:
8lk
Oppilas oppii suunnittelemaan ja ohjelmoimaan algoritmin, jolla
voidaan ratkaista jokin ongelma tai tehtävä, joka voi olla esim.
animaatio tai peli.
9lk
Oppilas oppii käyttämään funktioita ja muuttujia ohjelmointitehtävissä.
Oppilas osaa jakaa ongelman osaongelmiin, ratkaista ne
ohjelmoimalla ja yhdistää osat yhdeksi ratkaisuksi.
3. ALGORITMI
Algoritmi on yksityiskohtainen kuvaus tai ohje siitä, miten tehtävä tai
prosessi suoritetaan; jota seuraamalla voidaan ratkaista tietty
ongelma.
Algoritmin avulla voi ratkaista samankaltaisia tehtäviä esim.
jakolaskualgoritmin avulla voidaan jakaa mikä tahansa luku millä
tahansa luvulla.
Niissä on usein haaratumia sekä toistoja.
4. SISÄLTÖ
1) Funktio
2) Ehto- ja valintalause
3) Toisto
Funktion määritteleminen
Funktion parametrit muuttujina
Funktion testaaminen
Pinta-alan laskeminen
• Monikulmiot
• Ympyrä ja sektori
Predikaatit, vertailuoperaattorit,
Boolean operaattorit, ehto- ja
valintalause
• Syötteen tarkistaminen
• Taksilaskut
• Pythagoraan käänteinen lause
Toistorakenne rekursion avulla
Toistorakenne Message Loopin
ja Callback -funktioiden avulla
• Laskuautomaatti
• Myyrä – peli
5. FUNKTION AVULLA
YLEISTETÄÄN SÄÄNTÖJÄ
Tällä jaksolla opimme määrittelemään funktioita. Funktio on tapa
yleistää sääntöjä. Sen sijaan, että kirjoittaisimme
(/ (+ 1 2) 2)
(/ (+ 4 5) 2)
Kirjoitamme em. säännön yleisessä eli abstraktissa muodossa
muuttujien a ja b avulla:
(/ (+ a b) 2)
Lisäksi tarvitsemme rakenteen, jolla saamme nimen säännölle
(keskiarvo) sekä arvot muuttujille a ja b.
(define (keskiarvo a b)
(/ (+ a b) 2))
KOODIAAPINEN MOOC - SYKSY 2015
(keskiarvo 1 2)
(keskiarvo 4 5)
Funktion määrittely Funktion kutsuminen
Kirjoita kerran,
kutsu useasti.
6. FUNKTION KÄSITE TULEE
MATEMATIIKASTA
KOODIAAPINEN MOOC - SYKSY 2015
MÄÄRITTELYJOUKKO ARVOJOUKKO
3 9
neliö-funktio
-3
Funktio toimii aina samalla tavalla samalle syötteelle.
neliö : Luku -> Luku
𝑓 𝑥 = 𝑥2
9. FUNKTION ESITTELY
(KOMMENTTIRIVILLÄ)
9
; ympyrä : Luku Väri -> Kuva
(define (ympyrä r väri)
(circle r ”solid” väri))
Funktion nimi 1. Parametrin tyyppi 2. Parametrin tyyppi Funktion paluuarvon tyyppi
10. ESIMERKKI: PINTA-ALA-FUNKTIO
1) Funktion esittely:
;; pinta-ala : Luku Luku -> Luku
2) Funktion määrittely:
(define (pinta-ala a b)
(* a b))
3) Funktion kutsuminen (testaaminen käsin):
> (pinta-ala 400 25)
4) Funktion testaaminen (automaattisesti):
(check-expect (pinta-ala 400 25)
10000)
10
funktiokutsu
odotusarvo
11. KIRJOITA OMA FUNKTIO
0. tarkoitus: kirjoita lyhyt kuvaus siitä mitä funktiosi tekee
(vaihtoehtoisesti selitä tämä kaverillesi sanallisesti.) Pääasia, että
ymmärrät mitä olet tekemässä.
1. esittely: keksi funktiollesi nimi, listaa tarvittavien muuttujien
tietotyypit ja päätä mitä tietotyyppiä funktiosi palauttaa.
2. määrittely: keksi muuttujille (parametreille) nimet, kirjoita
funktion koodi parametrien avulla.
3. testaus:
kutsu funktiotasi interaktioikkunasta eri argumenttien arvoilla TAI
kirjoita testit check-expect:in avulla ja aja koodi
11
kommenttejaajettavaakoodia
12. HARJOITUKSET: FUNKTIOT
1) Monikulmioiden pinta-alat (neliö, suorakulmio, kolmio)
2) Ympyrän ja sektorin pinta-alat (ympyrä ja sektori, apufunktio)
Huom! Likiarvojen testaaminen check-within – funktiolla, kolmas
parametri on tarkkuus
3) Funktion testaaminen (automaattisesti):
(check-within (ympyrän-pinta-ala 50)
7853.9816
0.001)
funktiokutsu
odotusarvo
tarkkuus
14. VERTAILUOPERAATTORIT
Vertailuoperaattorit palauttavat totuusarvon
Yleensä vain samantyyppisiä arvoja kannattaa verrata keskenään, siksi
nämä funktiot tarkistavat myös sen, että argumentit ovat oikean
tyyppisiä:
Vertailuoperaattorit luvuille: <, >, <=, >=, =
Merkkijonoille: string=?
Kuville: image=?
esim. (< 4 5) #true
(= 4 -4) #false
(string=? ”kissa1” ”kissa1”) #true
14
15. 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
15
?
16. EHTOLAUSE (IF)
16
(if (< a 100)
”a on pienempi kuin 100”
”a on yhtäsuuri tai suurempi kuin 100”)
17. 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”)))
> (termostaatti 50)
> (termostaatti 10)
17
22°C
18. 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)
18
19. AND
KAIKKIEN EHTOJEN TULEE TOTEUTUA
19
(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”))
20. OR
VÄHINTÄÄN YHDEN EHDON ON TOTEUDUTTAVA
(or #true #false) #true
(or #false #true) #true
(or #false #false) #false
20
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”))
21. NOT
KÄÄNTÄÄ EHDON VASTAKKAISEKSI
21
(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
22. 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.
22
Esim.
Koska bussilipun hinta (€) määräytyy iän mukaan ehtoja on oltava monta.
(define (bussilipun-hinta ikä)
(cond [(>= ikä 18) 3]
[(< 12 ikä 18) 2]
[(<= 7 ikä 12) 1]
[else 0]))
24. REKURSIO
24
Funktio, joka kutsuu itse
itseään on rekursiivinen.
Rekursiivisen funktion avulla voidaan toteuttaa silmukka, eli saadaan
ohjelma toistamaan jotain toimintoa monta kertaa.
Jotta silmukka päättyy joskus, meillä on oltava lopetusehto (if tai
cond).
Jotta silmukka ”muistaa” mitä on jo tehty, välituloksia säilytetään
funktion parametreissa.
Kutsuttaessa rekursiivista funktiota, annamme lähtötilanteen
argumentit. Kun lopetusehto toteutuu, funktiopalauttaa paluuarvon.
25. IKUINEN SILMUKKA LASKURILLA
25
(define (silmukka i)
(silmukka (add1 i))))uusi kierros
(silmukka 0)käynnistys
uusi kierros
(begin (display-info-timer i 50)
uusi i:n
arvo
i:n arvo alussa
26. DISPLAY-INFO
DISPLAY-INFO-TIMER
26
display-info näyttää käyttäjälle kuvan/merkkijonon/luvun ja palauttaa
annetun arvon
display-info-timer ottaa lisäksi ajan, joka kertoo kunka kauan info-
ruutu pidetään näkyvissä)
display-
info
ARGUMENTIT PALUUARVO
lukumerkkijono
”Game over”
sivuvaikutus
”Game over”
27. BEGIN JA LET
Jotta saamme funktion tekemään sivuvaikutuksia JA palauttamaan
paluuarvon, pitää muodostaa koodilohko begin:in avulla.
Begin evaluoi sen sisällä olevat lausekkeet järjestyksessä, ”hukkaa” niiden
tuottaman paluuarvon viimeistä lukuunottamatta ja palauttaa sen.
Jotta saamme talteen käyttäjän antamat syötteet, tarvitsemme lisäksi
funktion sisäisiä muuttujia. Näihin ns. lokaalit muuttujan arvot määritellään
let tai let* rakenteella (let* jos let-lauseke käyttää toista let-lauseketta).
27
muuttujan nimi muuttujan arvo
28. DISPLAY-READ
DISPLAY-READ-NUMBER
display-read näyttää käyttäjälle kuvan/merkkijonon/luvun
(=sivuvaikutus) ja palauttaa käyttäjän editoriin kirjoittaman
merkkijonon
display-read-number muuntaa annetun merkkijonon luvuksi
28
display-
read
ARGUMENTIT
PALUUARVO
kuva
”tikkataulu”
merkkijono
Asenna paketti DrRacket:issa:
File -> Package manager
Package source: teachpacks
(lopuksi paina enter)
sivuvaikutus
(require teachpacks/display-read)
29. 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
29
display-
value
ARGUMENTIT
PALUUARVO
merkkijono
35
luku
”Tulos on:”
luku
35
sivuvaikutus
30. IKUINEN SILMUKKA
(ESIMERKKI)
Automaattilaskuri kysyy käyttäjältä syötteitä, tallentaa ne lokaaleihin
muuttujiin (let), tutkii ovatko syötteet ok, jos ovat laskee tuloksen (kutsuu
pinta-ala funktiota) ja ilmoittaa tuloksen käyttäjälle (display-value), ja
palaa alkuun:
(define (automaattilaskuri)
(let [(a (display-read-number ”Anna kanta:”)
(b (display-read-number ”Anna korkeus:”)]
(if (and (number? a)(number? b))
(begin (display-value ”Pinta-ala on:” (pinta-ala a b))
(automaattilaskuri))
(begin (display-info ”Anna lukuja!”)
(automaattilaskuri)))))
30
Tämä älykkäämpi versio kysyy
käyttäjältä jatketaanko
parametreja ei tarvita
32. MYYRÄPELI
1) Pistä myyrä vaihtamaan paikkaa
satunnaisesti pelikentän sisällä
;; uusi-sijainti : <void> -> Posn
2) Tee funktio, joka laskee hiiren etäisyyden
myyrän keskipisteestä
;; etäisyys : Luku Luku Luku Luku -> Luku
3) Tee funktio, joka vertailee onko hiiren sijainti
myyrän sisällä. Käytä hyväksesi etäisyys –
funktiota.
;; osuiko? : Luku Luku Luku Luku -> Totuusarvo
Lataa tehtävätiedosto
(x1, y1)
(x2, y2)
|y1-y2|
|x1-x2|
hiiri