perjantai 6. helmikuuta 2015

Racket-turtle 7.luokan matikan tunneilla

Tällä viikolla olemme koodanneet 7. luokkalaisten kanssa geometrisia kuvioita Racket-turtlella. Olimme juuri opiskelleet erilaisten monikulmioiden nimiä, joten nyt pääsimme hyödyntämään tietojamme. Näytin oppilaille ensin miten Turtlelle annetaan ohjeet neliön piirtämiseksi. Tämän jälkeen he saivat tehtäväksi piirtää tasasivuisen kolmion, säännöllisen kuusikulmion, suunnikkaan tai neljäkkään, ympyrän sekä itse keksimänsä kuvion. Lopuksi kuviot piti saada piirtymään samaan kuvaan eri väreillä.

Osa oppilaista keksi nopeasti miten Turtlea ohjataan, osalla kesti hieman kauemmin, mutta jokainen sai ensimmäisen tunnin jälkeen vähintäänkin kolmion valmiiksi (myös yksi ympyrä ilmestyi jo ensimmäisellä tunnilla). Toisella tunnilla nopeimmat pääsivät jo yhdistämään kuvioitansa. 
Ohjelmointi vaikutti innostavalta, koska jälleen kerran kun kello soi, useampi oppilas jäi vielä koodaamaan kuvioitansa ja lopuksi minulta kysyttiin: kai me jatketaan näitä vielä?

Tunnin jälkeen parantelin Racket-Turtle koodiani, koska tulin siihen tulokseen, että yksinkertaisuuden vuoksi on kuitenkin helpompaa, että ohjeissa sallitaan sittenkin sisäkkäiset listat (eli ohjeiden antajan ei tarvitse osata käyttää "append:ia" tai "cons":ia, pelkkä "list" toimii). Rajoitin piirtämistä myös niin, että vain piirtoalueelle osuvat viivat piirretään (jotta animaatio ei sekoaisi liian isojen kuvien kanssa). Oppilaiden oli myös vaikea hahmottaa mihin kohtaan tiedostoa omat ohjeet kirjoitettiin, joten laitoin Racket-turtle-koodin omaan tiedostoonsa (teachpacks/racket_turtle.rkt), esimerkit omaansa (turtle_esimerkit.rkt) ja tehtävät kolmanteen (turtle_harjoitukset_1.rkt).

Jos haluat kokeilla oppilaittesi kanssa Racket-turtle: lataa racket_turtle.zip. Pura paketti esim. kotihakemistoosi ja tutustu turtle_esimerkit.rkt - tiedostoon. Avaa sitten turtle_harjoitukset_1.rkt ja koodaa ohjeen mukaiset kuviot (kuva alla). Zip-paketti sisältää kaiken tarvittavan (paitsi itse DrRacket:iä).
Racket-turtle:lla piirretty harjoitus 1 (yksi mahdollinen ratkaisu)

Näillä matematiikan tunneilla Racket-turtlen käytössä pääpaino oli kuvioiden piirtämisessä. Pohdimme kuvioiden geometrisia ominaisuuksien kuten vaatimuksia sivujen pituuksille sekä kulmien suuruuksille. En edes yrittänyt ottaa esille ns. ohjelmointiteknisiä juttuja, kuten sitä että turhaa toistoa pitäisi välttää (en puuttunut siihen, että kuusikulmiossa oli kuusi kertaa sama koodin pätkä). Toki otimme esille repeat:in käytön, mutta vasta ympyrän kohdalla, koska ympyrän piirtämisessä tarvittava toistojen määrä olisi ollut järjetöntä koodata käsin. Myös siirtymät kirjoitettiin jokainen erikseen: siirtymä1, siitymä2 jne. vaikka siirtymäkoodi olisi toki järkevämpää kirjoittaa funktion muodossa, jossa annetaan käännöksen suuruus, siirtymän pituus ja uuden kuvion väri. Ehkä seuraava askel voisi olla oman funktion kirjoittaminen?

2 kommenttia:

  1. Tuli mieleen, että kannattaisiko omien komentojen määrittelyt tehdä aina, alusta alkaen funktiomuodossa. Tällöin ne vastaisivat sisäänrakennettuja komentoja (erityisesti (pen-up) ja (pen-down)), ja parametrien lisääminen olisi mahdollisimman pieni askel.

    VastaaPoista
  2. Voisihan tuon noinkin tehdä. Nyt ajattelin, että mennään samalla "define" - syntaksilla kuin edellisenkin harjoituksen kanssa (joulukuusi). Ehkä lisään vielä funktioesimerkin...

    VastaaPoista