SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Racket – perusteet
SOVELLUKSET A
Interaktiivisia sovelluksia
Jotta voimme tehdä interaktiivisia sovelluksia, joita käyttäjä ohjaa
hiirellä tai näppäimistöllä tai joka reagoi tietokoneen sisäiseen kelloon,
meillä pitää olla käytössä message loop, joka toimii ”liimana” oman
koodimme ja tietokoneen laitteiston välillä. Racket:issä sen nimi on big-
bang.
Interaktiiviset ohjelmat vaativat kirjaston 2htdp/universe
(require 2htdp/universe)
2
big-bang pyörittää ohjelmaa
3
big-bang
(on-mouse ..)
(on-key ..)
(on-tick ..)
(to-draw ..)
Näillä ”liimataan”
oma koodi big-
bang:iin
ohjelman tilamuuttuja
2htdp/universe
Kirjasto sisältää big-bang:in lisäksi animate-funktion, jonka avulla
voidaan tehdä yksinkertaisia animaatioita.
Racket perusteet tehtävissä otamme valmiin ohjelmapohjan, jossa big-
bang tai animate on alustettu valmiiksi, joten emme käsittele niitä tässä
yhteydessä kovin tarkasti (lisätietoa käsikirjassa).
Tärkeintä on ymmärtää se, että big-bang kutsuu käyttäjän tekemiä
funktioita tarvittaessa, antaa niille ohjelman tilamuuttujan, ottaa
vastaan päivitetyn tilamuuttujan, pitää sen tallessa ja välittää sen muille
funktioille. Tilamuuttuja on eri ohjelmissa erilainen, riippuen ohjelman
tarpeista.
4
animate
(aika muuttujana)
animate – funktio kutsuu siihen ”liimattua” funktiota 28 kertaa
sekunnissa antaen argumenttina kokonaisluvun, joka kasvaa jokaisella
kutsukerralla yhdellä
Esim.
(animate kuva)
Kutsuu kuva-funktiota näin:
(kuva 0)
(kuva 1)
(kuva 2)
(kuva 3)
...
5
(define (kuva t)
(place-image
(circle t ”solid” ”red”)
150 150
(empty-scene 300 300)))
”liima” oma koodi
modulo
Animaatioissa on usein jakso, joka toistuu. Aika kulkee kuitenkin aina
eteenpäin, joten jos haluamme palata takaisin lähtöpisteeseen (aika = 0)
tarvitsemme modulo:a. Modulo ottaa osamäärän jakojäännöksen, eli
rajoittaa arvon tietylle välille.
Esim.
Lisätään apufunktio ”rullaava-kuva”:
6
(define (rullaava-kuva t)
(kuva (modulo t 220)))
(animate rullaava-kuva) animate:ssa tilamuuttujana on aika
place-image ja empty-scene
(place-image 150 250 (empty-scene 300 500)))
7
(0, 0)
(150, 250)
x
y
150
250
(0, 0)
(150, 50)
x
y
150
250
(0, 0)
(150, 250)
x
y
150
250
(0, 0)
(150, 450)
x
y
150
250
Kun y muuttuu, ufo liikkuu...
y=50 y=250 y=450
big-bang
(animaatio)
(require 2htdp/image)
(require 2htdp/universe)
(define UFO (overlay/xy
(ellipse 120 40 "solid" "violet")
30 -25
(circle 30 "outline" "black")))
(define (piirrä-kuva y)
(place-image UFO 150 y (empty-scene 300 500)))
(define (siirrä-ufo y)
(+ y 1))
(big-bang 0
(to-draw piirrä-kuva)
(on-tick siirrä-ufo))
9
Enemmän mahdollisuuksia, kun
tilamuuttujana voi olla muukin kuin aika
lähtötila, y=0
siirrä-ufo-funktiota kutsutaan
28 kertaa sekunnissa
ufo rullaa
(muutetaan y:tä)
Lisää ehtolause tai valintalause ufon y-koordinaatin päivittämiselle:
(define (siirrä-ufo y)
(if (< y 500)
(+ y 1)
0))
10
tilamuuttujana y
piirrä-kuva – funktio tuottaa tämän
kuvan
siirrä-ufo – funktio päivittää y:tä
big-bang hoitaa kaiken muun
big-bang
(hiiriohjelma)
Saamme ”liimakoodin” kautta x ja y koordinaatit, jossa hiiri on tai jossa sitä
on klikattu. Tämän perusteella voidaan muuttaa ohjelman toimintaa.
Ohjelman logiikka on ”hiiri” – funktiossa:
(define (hiiri k x y tapahtuma)
(if (< x 150)
(place-image (oma-kuva "black") x y k)
(place-image (oma-kuva "red") x y k)))
(big-bang KUVA
(to-draw piirrä)
(on-mouse hiiri))
11
tilamuuttujana on
nyt kuva

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (8)

Racket mooc - viikko 2
Racket mooc - viikko 2Racket mooc - viikko 2
Racket mooc - viikko 2
 
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
 
Racket MOOC - viikko 3
Racket MOOC - viikko 3Racket MOOC - viikko 3
Racket MOOC - viikko 3
 
Racket MOOC - jakso 5
Racket MOOC - jakso 5Racket MOOC - jakso 5
Racket MOOC - jakso 5
 
Racket MOOC - 1. viikko
Racket MOOC - 1. viikkoRacket MOOC - 1. viikko
Racket MOOC - 1. viikko
 
Kulkukaavion tekeminen
Kulkukaavion tekeminenKulkukaavion tekeminen
Kulkukaavion tekeminen
 

Andere mochten auch

Racket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetRacket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetTiina Partanen
 
Racket alkeet 2. Kuvat
Racket alkeet   2. KuvatRacket alkeet   2. Kuvat
Racket alkeet 2. KuvatTiina Partanen
 
Racket alkeet 1. Peruslaskut
Racket alkeet   1. PeruslaskutRacket alkeet   1. Peruslaskut
Racket alkeet 1. PeruslaskutTiina Partanen
 
Ohjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: JatkokurssiOhjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: JatkokurssiTiina Partanen
 
Kasvaminen ja väheneminen kuvasta
Kasvaminen ja väheneminen kuvastaKasvaminen ja väheneminen kuvasta
Kasvaminen ja väheneminen kuvastateemunmatikka
 
Racket mooc 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikatauluTiina Partanen
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistäTiina Partanen
 

Andere mochten auch (9)

Racket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetRacket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseet
 
Racket alkeet 2. Kuvat
Racket alkeet   2. KuvatRacket alkeet   2. Kuvat
Racket alkeet 2. Kuvat
 
Racket alkeet 1. Peruslaskut
Racket alkeet   1. PeruslaskutRacket alkeet   1. Peruslaskut
Racket alkeet 1. Peruslaskut
 
Ohjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: JatkokurssiOhjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: Jatkokurssi
 
Kasvaminen ja väheneminen kuvasta
Kasvaminen ja väheneminen kuvastaKasvaminen ja väheneminen kuvasta
Kasvaminen ja väheneminen kuvasta
 
Funktiot
FunktiotFunktiot
Funktiot
 
Racket mooc 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikataulu
 
Funktion nollakohta
Funktion nollakohtaFunktion nollakohta
Funktion nollakohta
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistä
 

Mehr von 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 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
 
Koodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketKoodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketTiina Partanen
 

Mehr von Tiina Partanen (14)

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 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 MOOC viikko 5
Racket MOOC viikko 5Racket MOOC viikko 5
Racket MOOC viikko 5
 
Koodiaapinen MOOC - Racket
Koodiaapinen MOOC - RacketKoodiaapinen MOOC - Racket
Koodiaapinen MOOC - Racket
 

Kürzlich hochgeladen

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

Kürzlich hochgeladen (6)

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
 
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
 
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
 
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
 
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 perusteet - Sovellukset A

  • 2. Interaktiivisia sovelluksia Jotta voimme tehdä interaktiivisia sovelluksia, joita käyttäjä ohjaa hiirellä tai näppäimistöllä tai joka reagoi tietokoneen sisäiseen kelloon, meillä pitää olla käytössä message loop, joka toimii ”liimana” oman koodimme ja tietokoneen laitteiston välillä. Racket:issä sen nimi on big- bang. Interaktiiviset ohjelmat vaativat kirjaston 2htdp/universe (require 2htdp/universe) 2
  • 3. big-bang pyörittää ohjelmaa 3 big-bang (on-mouse ..) (on-key ..) (on-tick ..) (to-draw ..) Näillä ”liimataan” oma koodi big- bang:iin ohjelman tilamuuttuja
  • 4. 2htdp/universe Kirjasto sisältää big-bang:in lisäksi animate-funktion, jonka avulla voidaan tehdä yksinkertaisia animaatioita. Racket perusteet tehtävissä otamme valmiin ohjelmapohjan, jossa big- bang tai animate on alustettu valmiiksi, joten emme käsittele niitä tässä yhteydessä kovin tarkasti (lisätietoa käsikirjassa). Tärkeintä on ymmärtää se, että big-bang kutsuu käyttäjän tekemiä funktioita tarvittaessa, antaa niille ohjelman tilamuuttujan, ottaa vastaan päivitetyn tilamuuttujan, pitää sen tallessa ja välittää sen muille funktioille. Tilamuuttuja on eri ohjelmissa erilainen, riippuen ohjelman tarpeista. 4
  • 5. animate (aika muuttujana) animate – funktio kutsuu siihen ”liimattua” funktiota 28 kertaa sekunnissa antaen argumenttina kokonaisluvun, joka kasvaa jokaisella kutsukerralla yhdellä Esim. (animate kuva) Kutsuu kuva-funktiota näin: (kuva 0) (kuva 1) (kuva 2) (kuva 3) ... 5 (define (kuva t) (place-image (circle t ”solid” ”red”) 150 150 (empty-scene 300 300))) ”liima” oma koodi
  • 6. modulo Animaatioissa on usein jakso, joka toistuu. Aika kulkee kuitenkin aina eteenpäin, joten jos haluamme palata takaisin lähtöpisteeseen (aika = 0) tarvitsemme modulo:a. Modulo ottaa osamäärän jakojäännöksen, eli rajoittaa arvon tietylle välille. Esim. Lisätään apufunktio ”rullaava-kuva”: 6 (define (rullaava-kuva t) (kuva (modulo t 220))) (animate rullaava-kuva) animate:ssa tilamuuttujana on aika
  • 7. place-image ja empty-scene (place-image 150 250 (empty-scene 300 500))) 7 (0, 0) (150, 250) x y 150 250
  • 8. (0, 0) (150, 50) x y 150 250 (0, 0) (150, 250) x y 150 250 (0, 0) (150, 450) x y 150 250 Kun y muuttuu, ufo liikkuu... y=50 y=250 y=450
  • 9. big-bang (animaatio) (require 2htdp/image) (require 2htdp/universe) (define UFO (overlay/xy (ellipse 120 40 "solid" "violet") 30 -25 (circle 30 "outline" "black"))) (define (piirrä-kuva y) (place-image UFO 150 y (empty-scene 300 500))) (define (siirrä-ufo y) (+ y 1)) (big-bang 0 (to-draw piirrä-kuva) (on-tick siirrä-ufo)) 9 Enemmän mahdollisuuksia, kun tilamuuttujana voi olla muukin kuin aika lähtötila, y=0 siirrä-ufo-funktiota kutsutaan 28 kertaa sekunnissa
  • 10. ufo rullaa (muutetaan y:tä) Lisää ehtolause tai valintalause ufon y-koordinaatin päivittämiselle: (define (siirrä-ufo y) (if (< y 500) (+ y 1) 0)) 10 tilamuuttujana y piirrä-kuva – funktio tuottaa tämän kuvan siirrä-ufo – funktio päivittää y:tä big-bang hoitaa kaiken muun
  • 11. big-bang (hiiriohjelma) Saamme ”liimakoodin” kautta x ja y koordinaatit, jossa hiiri on tai jossa sitä on klikattu. Tämän perusteella voidaan muuttaa ohjelman toimintaa. Ohjelman logiikka on ”hiiri” – funktiossa: (define (hiiri k x y tapahtuma) (if (< x 150) (place-image (oma-kuva "black") x y k) (place-image (oma-kuva "red") x y k))) (big-bang KUVA (to-draw piirrä) (on-mouse hiiri)) 11 tilamuuttujana on nyt kuva