SlideShare una empresa de Scribd logo
1 de 16
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

Más contenido relacionado

La actualidad más candente

Adobe photoshop cs6
Adobe photoshop cs6Adobe photoshop cs6
Adobe photoshop cs6
Ila Azmil
 
Getting started with Adobe Photoshop 7.0
Getting started with Adobe Photoshop 7.0Getting started with Adobe Photoshop 7.0
Getting started with Adobe Photoshop 7.0
Najma Alam
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
OnGameServer
 

La actualidad más candente (11)

Sequence and Traverse - Part 1
Sequence and Traverse - Part 1Sequence and Traverse - Part 1
Sequence and Traverse - Part 1
 
Flexbox
FlexboxFlexbox
Flexbox
 
Introduction to CSS Grid Layout
Introduction to CSS Grid LayoutIntroduction to CSS Grid Layout
Introduction to CSS Grid Layout
 
Purely Functional Data Structures in Scala
Purely Functional Data Structures in ScalaPurely Functional Data Structures in Scala
Purely Functional Data Structures in Scala
 
Flexbox and Grid Layout
Flexbox and Grid LayoutFlexbox and Grid Layout
Flexbox and Grid Layout
 
Adobe photoshop cs6
Adobe photoshop cs6Adobe photoshop cs6
Adobe photoshop cs6
 
Cartilla defenderse desde adentro
Cartilla defenderse desde adentroCartilla defenderse desde adentro
Cartilla defenderse desde adentro
 
Intro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS PropertyIntro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS Property
 
Getting started with Adobe Photoshop 7.0
Getting started with Adobe Photoshop 7.0Getting started with Adobe Photoshop 7.0
Getting started with Adobe Photoshop 7.0
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
Photoshop Basics
Photoshop BasicsPhotoshop Basics
Photoshop Basics
 

Destacado (6)

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ä
 

Más de Tiina Partanen

Más de 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