racket turtle

16
Racket – Turtle ALKEET-PERUS- JATKO

Upload: tiina-partanen

Post on 22-Jan-2017

498 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Racket Turtle

Racket – TurtleALKEET-PERUS-JATKO

Page 2: Racket Turtle

2

Sisällysluettelo RACKET TURTLE – ALKEET

1. Peruskomennot

RACKET TURTLE – PERUSTEET

2. Muuttujat ja funktiot

RACKET TURTLE – JATKO

3. Toistorakenteet

Page 3: Racket Turtle

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

Page 4: Racket Turtle

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

Page 5: Racket Turtle

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

Page 6: Racket Turtle

6

(define sivu          (list (forward 100)                (turn-left 90)) (define toisto-neliö          (repeat 4 sivu )) (draw toisto-neliö)

repeat

sivu

Page 7: Racket Turtle

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

Page 8: Racket Turtle

8

Peruskuvioita Racket Turtlella

Ympyrä on monikulmio, jossa on hyvin lyhyet sivut ja erittäin monta kulmaa. Montako?

Page 9: Racket Turtle

9

Kukkia Racket Turtlella Kukan terälehti muodostuu kaaresta, joka on ympyrän osa...

Page 10: Racket Turtle

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:

Page 11: Racket Turtle

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

Page 12: Racket Turtle

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°

Page 13: Racket Turtle

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

Page 14: Racket Turtle

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

Page 15: Racket Turtle

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)

Page 16: Racket Turtle

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)