Johdatus Python-ohjelmointiin Turtle-grafiikan avulla

Turtle-grafiikan hyödyntäminen ohjelmoinnin opetuksessa ei ole todellakaan mikään uusi keksintö. Se sai alkunsa jo vuonna 1967, jolloin Seymor Papert lisäsi sitä varten tuen Logo-ohjelmointikieleen. Tämän jälkeen lukemattomat oppijat ovat ottaneet ensiaskeleitaan ohjelmoinnin pariin kilpikonnagrafiikan avulla. Moni asia tekee siitä mainion keinon tekstipohjaisen ohjelmoinnin opetukseen yhä tänäkin päivänä. 

Ohjelmoinnin opetukseen löytyy nykyään valtavasti materiaalia. Perinteisten oppikirjojen ja tehtäväpakettien lisäksi on erilaisia robotteja, ohjelmoitavia rakennussarjoja ja pelillisiä ympäristöjä. Ohjelmoinnin alkeita varten on kehitetty kuvakepohjaisia ohjelmointikieliä, kuten Scratch, joilla päästään konkretisoimaan ohjelmoinnin käsitteitä ja tekemään onnistuneita ohjelmia ilman kirjoitusvirheiden aiheuttamia ongelmia.

Yläkoulun puolella tavoitteena olisi kuitenkin hyödyntää myös tekstipohjaista ohjelmointikieltä ja kokemukset ovat osoittaneet, että hyppäys kuvakepohjaisista ohjelmointikielistä tekstipohjaisiin koetaan yhä suurena. Tekstipohjaisen ohjelmoinnin opiskelua pidetään vaikeana ja yhtenä syynä tähän on alkuvaiheessa suuri virheilmoitusten määrä. Kun ohjelmoinnin käsitteet eivät ole vielä konkretisoituneet, vie virheilmoitusten syiden ymmärtäminen ja löytäminen alussa paljon aikaa ja johtaa usein turhautumiseen. Sen seurauksena monesti päädytään kopioimaan valmiita koodeja ilman ymmärrystä mitä niissä todella tapahtuu. Juuri tässä ohjelmoinnin alkuvaiheessa Turtle-grafiikka on loistava menetelmä, jolla saadaan haltuun käsitteitä ja ohjelmakielen perusteita. Tarvittavien komentojen määrä on pieni ja niillä on konkreettinen merkitys, jolloin niitä on helppo ottaa haltuun pala kerrallaan. Jos koodissa on virhe, se paikallistuu yleensä helposti, kun käskyillä on visuaalinen vaste. Näin suorituksesta näkee heti, mihin asti piirros etenee halutulla tavalla. 

Hyvin usein peruskoulussa tekstipohjaisen ohjelmoinnin kieleksi valikoituu Python. Tämä ei ole ihme, sillä Pythonissa aloituskynnys on pieni, mutta sovellusmahdollisuudet sitä vastoin valtavat. Se on myös yksi suosituimmista ohjelmointikielistä, jolloin oppilaista on usein motivoivampaa opiskella sitä verrattuna joihinkin marginaalisempiin opetuskäyttöön suunniteltuihin kieliin. Python-ohjelmointia varten tyypillisesti ladataan koneelle editori (esim. IDLE), mutta perusharjoituksiin sitäkään ei välttämättä tarvita. Selainpohjaiset ympäristöt, kuten Trinket.io tarjoavat helpon ja nopean tavan alkuun pääsyyn ilman ohjelmien asennuksia. Selainympäristöissä on myös se hyvä puoli, että harjoitusten jatkaminen kotikoneella onnistuu helposti, jos innostusta riittää vielä tuntien jälkeen tai oppilas suorittaa tehtäviä etänä. Valmiiden ohjelmien tallennus on näissä selainpohjaisissa ympäristöissä toki ratkaistava. Voidaan joko tehdä tunnukset palveluun tai muuten kopioida kirjoitetut koodit talteen. 

Monien muiden ohjelmointikielten tapaan myös Pythonille on tehty Turtle-kirjastomoduuli, jonka avulla kilpikonnagrafiikkaa päästään hyödyntämään ohjelmointitehtävissä. Pienimmillä oppilailla voidaan Turtle-grafiikan idean selittämisessä hyödyntää metaforaa kilpikonnasta, joka on kastanut häntänsä musteeseen ja liikkuu suuren paperin päällä yksinkertaisten käskyjen mukaan. Jos kilpikonna liikkuu häntä alhaalla se piirtää liikkuessaan viivaa. Jo muutamilla käskyillä (eteen, taakse, oikealle, vasemmalle) saadaan piirrettyä monipuolisesti erilaisia geometrisia kuvioita, joten ensimmäinen kynnys on helppo ylittää.

Koodi-esimerkki trinket.io verkkosovelluksessa.
Kuva 1: Esimerkki yksinkertaisesta koodista, jossa toistamalla eteen ja käännös vasemmalle käskyjä piirretään neliö. Turtle -komennot otetaan Pythonissa käyttöön koodin alkuun lisättävällä import-lauseella.

Alussa hyvä tapa on aloittaa kilpikonnan liikekäskyjen opettelulla. Piirretään neliö, kolmio, ympyrä. Pian opitaan myös ymmärtämään koordinaatistossa toimiminen. Oletuksena kilpikonna lähtee liikkeelle ruudun keskeltä (pisteestä 0,0). Se voidaan myös helposti asettaa haluttuun paikkaan koordinaatistossa. 

Liikekäskyjen jälkeen lähdetään varioimaan parametreja. Opitaan muuttamaan viivan paksuutta ja väriä sekä opetellaan kuvioiden maalaaminen ja taustavärin vaihto. Kilpikonna saadaan myös kirjoittamaan tekstiä ruudulle.

Kun peruskomennot ovat hallussa, päästään tekemään monimutkaisempia kuvioita hyödyntäen toistorakenteita, jolloin kuvioiden toteutuksista saadaan monipuolisia ja entistä hienompia. Pienen aloituskynnyksen lisäksi Turtle-grafiikan toinen hyvä puoli onkin lopputuloksena syntyvät kuviot, jotka palkitsevat koodaajan. Normaaleissa ohjelmointimateriaaleissa ohjelmoinnissa alkuvaiheen tehtävät eivät aina tunnu oppilaista kovin mielenkiintoisilta. Turtle-grafiikan tehtävissä ohjelmoidaan kilpikonna piirtämään konkreettisia kuvioita, hienoja geometrisia muotoja tai vaikka maiden lippuja. Tehtävät on helppo rakentaa vaikeustasoltaan sellaisiksi, että oppilaat tietävät selviävänsä niistä ja lopputuloksena syntyvä kuvio palkitsee koodaajan ja kannustaa oppimaan lisää.

Koodiesimerkki. Turtle-grafiikan hyödyntäminen ohjelmoinnin opetuksessa.
Kuva 2: Esimerkki koodista, jossa on hyödynnetty for -silmukka rakennetta kuvion piirtämiseen. Tehtävää voisi tästä kehittää vaikkapa maalaamalla kuvion jollain värillä tai monistamalla kuviota.

Edistyneemmissä tehtävissä voidaan lisätä ohjelmointiin mukaan random-kirjasto, jolloin saadaan hyödynnettyä myös satunnaisuutta. Random-kirjaston käskyjen avulla voidaan esimerkiksi määrittää kilpikonnalle satunnainen sijainti koordinaatistossa tai arpoa syntyvien kuvioiden määrä, koko tai väri. Näin päästään esimerkiksi suunnittelemaan koodattuja taideteoksia, jotka muuttuvat jokaisella ajolla erilaiseksi. 

Koodiesimerkki.
Kuva 3: Esimerkissä hyödynnetään satunnaisuutta kahdella tapaa. Ensin arvotaan listalta yksi väri, jota käytetään piirtovärinä ja sitten arvotaan kokonaisluku, joka määrittää syntyvän ympyrän säteen.

Turtle-grafiikkaan liittyen on helppo keksiä uusia tehtäviä ja valmiita esimerkkejä löytyy runsaasti mm. YouTubesta. Muutaman tunnin kokonaisuus tekstipohjaiseen ohjelmointiin perehtymiseksi onkin helppo toteuttaa Turtle-ympäristössä. Yksi tällainen valmis kokonaisuus löytyy Jyväskylän kaupungin perusopetuksen sivuille tekemästäni materiaalista: https://peda.net/jyvaskyla/ict/palvelut/ohjelmointi-robotiikka/pop

Materiaali on merkitty Creative Commons CC BY-NC lisenssillä, joten se on vapaasti hyödynnettävissä ei-kaupalliseen käyttöön.

Kirjoittajalla on pitkä opettajankokemus lukiosta ja yläasteelta. Nykyään hän toimii Jyväskylän kaupungin perusopetuksen ja varhaiskasvatuksen ICT-asiantuntijana, jossa tehtävänä on mm. ohjelmoinnin opetuksen pedagoginen tukeminen.


Tilaa Dimension uutiskirje – saat sähköpostiisi aina kuunvaihteessa koosteen tuoreimmista artikkeleista

Kirjoittaja