Upload
tiina-partanen
View
501
Download
2
Embed Size (px)
Citation preview
Racket – TurtleALKEET-PERUS-JATKO
2
Sisällysluettelo RACKET TURTLE – ALKEET
1. Peruskomennot
RACKET TURTLE – PERUSTEET
2. Muuttujat ja funktiot
RACKET TURTLE – JATKO
3. Toistorakenteet
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
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
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ö )
6
(define sivu (list (forward 100) (turn-left 90)) (define toisto-neliö (repeat 4 sivu )) (draw toisto-neliö)
repeat
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ä)
8
Peruskuvioita Racket Turtlella
Ympyrä on monikulmio, jossa on hyvin lyhyet sivut ja erittäin monta kulmaa. Montako?
9
Kukkia Racket Turtlella Kukan terälehti muodostuu kaaresta, joka on ympyrän osa...
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:
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”))
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°
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))
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))
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)
16
LeimasinlistaTurtlelle 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)