SlideShare a Scribd company logo
Racket – Turtle
ALKEET-PERUS-
JATKO
Sisällysluettelo
RACKET TURTLE – ALKEET
1. Peruskomennot
RACKET TURTLE – PERUSTEET
2. Muuttujat ja funktiot
RACKET TURTLE – JATKO
3. Toistorakenteet
2
Racket Turtle
Listojen, rekursion sekä Higher Order -funktioiden opetteluun kehitetty
kirjasto
(require teachpacks/racket-turtle)
Vaatii teachpacks – paketin asentamisen (WeSchemessä eri nimi!)
Tarjoaa helpon tavan kokeilla toistoa (repeat)
Sisältää peilauksen sekä laimasintoiminnon
3
1. Peruskomennot
Turtlea ohjataan komentolistoilla, jotka annetaan ”draw” tai
”draw-step-by-step”-funktioille
Komentolista on muotoa (list (…)(…)(…))
Racket-turtlen peruskomennot ovat:
◦ forward
◦ turn-left,turn-right
◦ repeat
◦ pen-up, pen-down
◦ go-to
◦ change-color
4
forward & turn-left
(define neliö
(list (forward 100)
(turn-left 90)
(forward 100)
(turn-left 90)
(forward 100)
(turn-left 90)
(forward 100)
(turn-left 90)))
(draw neliö )
5
(define sivu
(list (forward 100)
(turn-left 90))
(define toisto-neliö
(repeat 4 sivu ))
(draw toisto-neliö)
repeat
6
sivu
pen-up, pen-down, go-to,
change-color
(define kaksi-neliötä
(list neliö
(pen-up)
(go-to 350 50)
(change-color "red")
(pen-down)
neliö))
(draw kaksi-neliötä)
7
Peruskuvioita Racket Turtlella
Ympyrä on monikulmio,
jossa on hyvin lyhyet sivut ja
erittäin monta kulmaa.
Montako?
8
Kukkia Racket Turtlella
Kukan terälehti muodostuu kaaresta, joka on ympyrän osa...
9
2. Muuttujat ja funktiot
Turtle – komentolistoja voi muodostaa myös funktioiden avulla. Voimme
tehdä erikokoisia ja värisiä kolmioita tekevän komentolistan
muodostavan funktion: tee-kolmio. Muuttujat (parametrit) olisivat
sivu ja väri.
Esim. (tee-kolmio 100 ”red”) palauttaisi komentolistan, joka
toteuttaa tämän kuvan:
10
tee-kolmio
(define (tee-sivu sivu kulma väri)
(list (change-color väri)
(forward sivu)
(turn-left kulma)))
(define (tee-kolmio sivu väri)
(repeat 3 (tee-sivu sivu 120 väri)))
(draw (tee-kolmio 100 ”red”))
11
apufunktio
Monikulmiot funktion avulla
Voit tehdä edellisen harjoituksen myös funktioiden avulla (kulmien määrä
on nyt parametrina)
(define (tee-monikulmio sivu kulmat väri)
… )
Vihje 1: käytä apuna tee-sivu –apufunktiota
Vihje 2: koko kuviossa pitää kääntyä yhteensä 360°
12
3. Toistorakenteet
Racket Turtlella voidaan tehdä kuvioita, jotka sisältävät toistoa joko
käyttämällä rekursiivisia funktioita tai Higher Order –funktioita.
Erityisen kätevä on map käytettynä range:n kanssa.
map on Higher Order – funktio, joka ottaa argumenttina funktion sekä
listan ja syöttää listan alkiot yksi kerrallaan funktiolle. map palauttaa
saadut paluuarvot listan muodossa. Esim. Tähtilista:
(define (tähti koko)
(star koko ”solid” ”red”))
(map tähti (range 5 35 5))
13
Listassa tähtien koot
Turtle spiraali - rekursiolla
Kuvan spiraalin voi tehdä kahdella eri tavalla
A) Rekursiivinen ratkaisu
(define (sivu s)
(list (forward s) (turn-left 90)))
(define (spiraali matka max)
(if (>= matka max)
empty
(cons (sivu matka) (spiraali (+ matka 5) max))))
(draw (spiraali 5 300))
14
Turtle spiraali – map:llä
B) Ratkaisu Higher Order – funktioiden avulla
(define (sivu s)
(list (forward s) (turn-left 90)))
(define SPIRAALI (map sivu (range 5 300 5)))
(draw SPIRAALI)
15
Leimasinlista
Turtlelle voidaan antaa lista kuvia
leimasimeksi. Kuvassa oleva
tähtispiraali on saatu aikaan
poistamalla kynä ja lisäämällä
tilalle leimasinlista, jossa on
kasvavia tähtiä.
...
(stamper-on TÄHDET)
16

More Related Content

What's hot

Ch 7 Dictionaries 1.pptx
Ch 7 Dictionaries 1.pptxCh 7 Dictionaries 1.pptx
Ch 7 Dictionaries 1.pptx
KanchanaRSVVV
 
Sinatra
SinatraSinatra
CSS
CSS CSS
CSS
Sunil OS
 
Python programming : Strings
Python programming : StringsPython programming : Strings
Python programming : Strings
Emertxe Information Technologies Pvt Ltd
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
Theoretical mechanics department
 
HTML Semantic Tags
HTML Semantic TagsHTML Semantic Tags
HTML Semantic Tags
Bruce Kyle
 
JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)
Beat Signer
 
Introducing CSS Grid
Introducing CSS GridIntroducing CSS Grid
Introducing CSS Grid
Jason Yingling
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manual
Uma mohan
 
Bootstrap PPT Part - 2
Bootstrap PPT Part - 2Bootstrap PPT Part - 2
Bootstrap PPT Part - 2
EPAM Systems
 
SQL
SQLSQL
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in R
Paul Richards
 
SQL select statement and functions
SQL select statement and functionsSQL select statement and functions
SQL select statement and functionsVikas Gupta
 
Java applet - java
Java applet - javaJava applet - java
Java applet - java
Rubaya Mim
 
Haskell study 1
Haskell study 1Haskell study 1
Haskell study 1
Nam Hyeonuk
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
Dimitris Psounis
 
Regular Expressions
Regular ExpressionsRegular Expressions
Regular Expressions
Niek Schmoller
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 

What's hot (20)

Ch 7 Dictionaries 1.pptx
Ch 7 Dictionaries 1.pptxCh 7 Dictionaries 1.pptx
Ch 7 Dictionaries 1.pptx
 
Sinatra
SinatraSinatra
Sinatra
 
CSS
CSS CSS
CSS
 
Python programming : Strings
Python programming : StringsPython programming : Strings
Python programming : Strings
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
HTML Semantic Tags
HTML Semantic TagsHTML Semantic Tags
HTML Semantic Tags
 
JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)
 
Css box model
Css  box modelCss  box model
Css box model
 
Introducing CSS Grid
Introducing CSS GridIntroducing CSS Grid
Introducing CSS Grid
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manual
 
Bootstrap PPT Part - 2
Bootstrap PPT Part - 2Bootstrap PPT Part - 2
Bootstrap PPT Part - 2
 
SQL
SQLSQL
SQL
 
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in R
 
SQL select statement and functions
SQL select statement and functionsSQL select statement and functions
SQL select statement and functions
 
Bab viii stack
Bab viii   stackBab viii   stack
Bab viii stack
 
Java applet - java
Java applet - javaJava applet - java
Java applet - java
 
Haskell study 1
Haskell study 1Haskell study 1
Haskell study 1
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
 
Regular Expressions
Regular ExpressionsRegular Expressions
Regular Expressions
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 

Viewers also liked

Racket alkeet 2. Kuvat
Racket alkeet   2. KuvatRacket alkeet   2. Kuvat
Racket alkeet 2. Kuvat
Tiina Partanen
 
Racket jatko 6. oppitunti
Racket jatko  6. oppituntiRacket jatko  6. oppitunti
Racket jatko 6. oppitunti
Tiina Partanen
 
Racket perusteet - Sovellukset A
Racket perusteet - Sovellukset ARacket perusteet - Sovellukset A
Racket perusteet - Sovellukset A
Tiina Partanen
 
Racket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseetRacket perusteet 4. Ehto- ja valintalauseet
Racket perusteet 4. Ehto- ja valintalauseet
Tiina Partanen
 
Racket mooc 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikataulu
Tiina Partanen
 
Racket MOOC - jakso 1
Racket MOOC - jakso 1Racket MOOC - jakso 1
Racket MOOC - jakso 1
Tiina Partanen
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistä
Tiina Partanen
 

Viewers also liked (7)

Racket alkeet 2. Kuvat
Racket alkeet   2. KuvatRacket alkeet   2. Kuvat
Racket alkeet 2. Kuvat
 
Racket jatko 6. oppitunti
Racket jatko  6. oppituntiRacket jatko  6. oppitunti
Racket jatko 6. oppitunti
 
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 2017 - aikataulu
Racket mooc 2017 -  aikatauluRacket mooc 2017 -  aikataulu
Racket mooc 2017 - aikataulu
 
Racket MOOC - jakso 1
Racket MOOC - jakso 1Racket MOOC - jakso 1
Racket MOOC - jakso 1
 
Racket mooc 2017 - yleistä
Racket mooc 2017 -  yleistäRacket mooc 2017 -  yleistä
Racket mooc 2017 - yleistä
 

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 Mathematics
Tiina Partanen
 
Ohjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: JatkokurssiOhjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: Jatkokurssi
Tiina 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 historiaa
Tiina 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 - keynote
Tiina Partanen
 
Kurkistus koodaukseen
Kurkistus koodaukseenKurkistus koodaukseen
Kurkistus koodaukseen
Tiina Partanen
 
Racket MOOC jakso 7
Racket MOOC jakso 7Racket MOOC jakso 7
Racket MOOC jakso 7
Tiina Partanen
 
Racket MOOC - jakso 6
Racket MOOC -  jakso 6Racket MOOC -  jakso 6
Racket MOOC - jakso 6
Tiina Partanen
 
Racket MOOC - jakso 5
Racket MOOC - jakso 5Racket MOOC - jakso 5
Racket MOOC - jakso 5
Tiina Partanen
 
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
Tiina Partanen
 
Racket MOOC - jakso 3
Racket MOOC - jakso 3Racket MOOC - jakso 3
Racket MOOC - jakso 3
Tiina Partanen
 
Racket MOOC - jakso 2
Racket MOOC - jakso 2Racket MOOC - jakso 2
Racket MOOC - jakso 2
Tiina Partanen
 
Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)Racket MOOC 2016 - yleistä (SYKSY)
Racket MOOC 2016 - yleistä (SYKSY)
Tiina Partanen
 
Legorobottialkeet
LegorobottialkeetLegorobottialkeet
Legorobottialkeet
Tiina Partanen
 
Lapset koodaa?
Lapset koodaa?Lapset koodaa?
Lapset koodaa?
Tiina Partanen
 
Koodauksen ensiaskeleet
Koodauksen ensiaskeleetKoodauksen ensiaskeleet
Koodauksen ensiaskeleet
Tiina Partanen
 
Racket MOOC - viikko 6
Racket MOOC - viikko 6Racket MOOC - viikko 6
Racket MOOC - viikko 6
Tiina Partanen
 
Racket MOOC viikko 5
Racket MOOC viikko 5Racket MOOC viikko 5
Racket MOOC viikko 5
Tiina Partanen
 
Racket jatko 6. Listat
Racket jatko 6. ListatRacket jatko 6. Listat
Racket jatko 6. Listat
Tiina Partanen
 

More from Tiina Partanen (20)

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
 
Ohjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: JatkokurssiOhjelmointi yläkoulussa: Jatkokurssi
Ohjelmointi yläkoulussa: Jatkokurssi
 
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 - jakso 6
Racket MOOC -  jakso 6Racket MOOC -  jakso 6
Racket MOOC - jakso 6
 
Racket MOOC - jakso 5
Racket MOOC - jakso 5Racket MOOC - jakso 5
Racket MOOC - jakso 5
 
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 MOOC - jakso 2
Racket MOOC - jakso 2Racket MOOC - jakso 2
Racket MOOC - jakso 2
 
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
 
Racket jatko 6. Listat
Racket jatko 6. ListatRacket jatko 6. Listat
Racket jatko 6. Listat
 

Racket Turtle

  • 2. Sisällysluettelo RACKET TURTLE – ALKEET 1. Peruskomennot RACKET TURTLE – PERUSTEET 2. Muuttujat ja funktiot RACKET TURTLE – JATKO 3. Toistorakenteet 2
  • 3. Racket Turtle Listojen, rekursion sekä Higher Order -funktioiden opetteluun kehitetty kirjasto (require teachpacks/racket-turtle) Vaatii teachpacks – paketin asentamisen (WeSchemessä eri nimi!) Tarjoaa helpon tavan kokeilla toistoa (repeat) Sisältää peilauksen sekä laimasintoiminnon 3
  • 4. 1. Peruskomennot Turtlea ohjataan komentolistoilla, jotka annetaan ”draw” tai ”draw-step-by-step”-funktioille Komentolista on muotoa (list (…)(…)(…)) Racket-turtlen peruskomennot ovat: ◦ forward ◦ turn-left,turn-right ◦ repeat ◦ pen-up, pen-down ◦ go-to ◦ change-color 4
  • 5. forward & turn-left (define neliö (list (forward 100) (turn-left 90) (forward 100) (turn-left 90) (forward 100) (turn-left 90) (forward 100) (turn-left 90))) (draw neliö ) 5
  • 6. (define sivu (list (forward 100) (turn-left 90)) (define toisto-neliö (repeat 4 sivu )) (draw toisto-neliö) repeat 6 sivu
  • 7. pen-up, pen-down, go-to, change-color (define kaksi-neliötä (list neliö (pen-up) (go-to 350 50) (change-color "red") (pen-down) neliö)) (draw kaksi-neliötä) 7
  • 8. Peruskuvioita Racket Turtlella Ympyrä on monikulmio, jossa on hyvin lyhyet sivut ja erittäin monta kulmaa. Montako? 8
  • 9. Kukkia Racket Turtlella Kukan terälehti muodostuu kaaresta, joka on ympyrän osa... 9
  • 10. 2. Muuttujat ja funktiot Turtle – komentolistoja voi muodostaa myös funktioiden avulla. Voimme tehdä erikokoisia ja värisiä kolmioita tekevän komentolistan muodostavan funktion: tee-kolmio. Muuttujat (parametrit) olisivat sivu ja väri. Esim. (tee-kolmio 100 ”red”) palauttaisi komentolistan, joka toteuttaa tämän kuvan: 10
  • 11. tee-kolmio (define (tee-sivu sivu kulma väri) (list (change-color väri) (forward sivu) (turn-left kulma))) (define (tee-kolmio sivu väri) (repeat 3 (tee-sivu sivu 120 väri))) (draw (tee-kolmio 100 ”red”)) 11 apufunktio
  • 12. Monikulmiot funktion avulla Voit tehdä edellisen harjoituksen myös funktioiden avulla (kulmien määrä on nyt parametrina) (define (tee-monikulmio sivu kulmat väri) … ) Vihje 1: käytä apuna tee-sivu –apufunktiota Vihje 2: koko kuviossa pitää kääntyä yhteensä 360° 12
  • 13. 3. Toistorakenteet Racket Turtlella voidaan tehdä kuvioita, jotka sisältävät toistoa joko käyttämällä rekursiivisia funktioita tai Higher Order –funktioita. Erityisen kätevä on map käytettynä range:n kanssa. map on Higher Order – funktio, joka ottaa argumenttina funktion sekä listan ja syöttää listan alkiot yksi kerrallaan funktiolle. map palauttaa saadut paluuarvot listan muodossa. Esim. Tähtilista: (define (tähti koko) (star koko ”solid” ”red”)) (map tähti (range 5 35 5)) 13 Listassa tähtien koot
  • 14. Turtle spiraali - rekursiolla Kuvan spiraalin voi tehdä kahdella eri tavalla A) Rekursiivinen ratkaisu (define (sivu s) (list (forward s) (turn-left 90))) (define (spiraali matka max) (if (>= matka max) empty (cons (sivu matka) (spiraali (+ matka 5) max)))) (draw (spiraali 5 300)) 14
  • 15. Turtle spiraali – map:llä B) Ratkaisu Higher Order – funktioiden avulla (define (sivu s) (list (forward s) (turn-left 90))) (define SPIRAALI (map sivu (range 5 300 5))) (draw SPIRAALI) 15
  • 16. Leimasinlista Turtlelle voidaan antaa lista kuvia leimasimeksi. Kuvassa oleva tähtispiraali on saatu aikaan poistamalla kynä ja lisäämällä tilalle leimasinlista, jossa on kasvavia tähtiä. ... (stamper-on TÄHDET) 16