(toiminnot)

hwechtla-tl: Teema 3: Opettajia ja oppilaita

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Kun teet näitä harjoituksia, olet tavallaan oppilas: minä yritän opettaa sinulle, mitä Logolla voi tehdä, ja sinä yrität keksiä, mitä haluat tehdä. Kun nämä kaksi yhdistyvät, syntyy uutta. Sitä kutsutaan oppimiseksi. Mutta vaikka olet oppilas, olet samalla myös opettaja, sillä ohjelmointi on opettamista. Ohjelmoidessa opetetaan tietokoneelle, miten jotain tehdään. Komennot ovat tavallaan selityksiä, joita tietokone osaa ymmärtää. Olemme opettaneet Logon tekemään neliöitä, ympyröitä, ruusukkeita ja vaikka mitä.

Yksi asia opetuksestamme kuitenkin puuttuu: emme ole kertoneet Logolle, mitä olemme kulloinkin tekemässä. Lopputulos voi olla hyvinkin hieno kuvio, mutta Logo ei oikeastaan tiedä, mitä se on tehnyt sinun ohjauksessasi. Olisi parempi, jos voisimme opettaa Logolle, mitä esimerkiksi "kukka" tarkoittaa, koska sitten voisimme pyytää Logoa piirtämään kukkia aina, kun haluamme. Ei tarvitsisi joka kerta selittää Logolle erikseen, miten kukka piirretään.

Harjoitus 3a: ensimmäinen oma komento

Logolle voi tosiaan opettaa uusia komentoja. Se ei ole kovin vaikeaa. Oletetaan, että meillä on jokin ohjelma, joka on mielestämme opettamisen arvoinen, kuten vaikkapa tämä nuolen piirtävä ohjelma:

? et 100
? va 135
? et 50
? va 135
? et 71
? va 135
? et 50

Logo osaa toteuttaa sen, mutta jos haluamme tehdä sen uudestaan, pitää samat komennot antaa uudestaan. Nyt opetamme Logolle uuden komennon, joka piirtää tällaisen nuolen. Se näyttää tältä (">"-merkit ovat jälleen kehotteita eli niitä ei tarvitse kirjoittaa - Logo kirjoittaa ne kertoakseen, että olemme määrittelemässä uutta komentoa):

? miten nuoli
> et 100
> va 135
> et 50
> va 135
> et 71
> va 135
> et 50
> valmis

Tässä on kaksi uutta komentoa: "miten" ja "valmis". Alussa oleva "miten nuoli" tarkoittaa, että nyt aiomme kirjoittaa selityksen siitä, miten tehdään nuoli. Sen jälkeen tulee komentoja, jotka yhdessä muodostavat nuolen. Koska Logo ei vielä tiedä, kuinka monta komentoa nuolen tekemiseen tarvitaan, pitää myös kertoa, milloin nuoli on valmis. Se kerrotaan komennolla "valmis".

Opeta nyt Logolle jokin oma kuviosi uutena komentona.

Harjoitus 3b: uuden komennon kokeilua

Miten-komento on kovin erilainen kuin tähän asti näkemämme komennot. Se ei tee mitään näytölle vaan tietokoneen muistille. Kirjoitettuasi yllä olevat komennot Logo ei lähde tekemään nuolia innoissaan, vaan kertoo vain painaneensa nyt mieleensä, mitä "nuoli" tarkoittaa. Mitä nuolilla tehdään, on sinun asiasi. Kokeillaanpa jotain:

? uusi
? nuoli
? toista 10 [nuoli]
? uusi
? toista 10 [nuoli ta 150]

Kuten huomaat, nuoli toimii aivan kuin muutkin komennot, joskaan ei ota syötettä eli sen perään ei kirjoiteta mitään lukua tai muutakaan. (Opimme myöhemmin, kuinka tehdään uusia komentoja, jotka syövät.)

Kokeile erilaisia yhdistelmiä nuoli-komennosta ja omasta uudesta komennostasi.

Harjoitus 3c: pannaan haisemaan

Meillä on nyt mahdollisuudet opettaa monia aikaisemmissa harjoituksissa tekemiämme kuvioita Logolle:

? miten neliö
> toi 4 [et 100 oi 90]
> valmis
neliö määritelty
? miten ympyrä
> toi 360 [et 1 oi 1]
> valmis
ympyrä määritelty
? miten kaario
> toi 90 [et 1 oi 1]
> valmis
kaario määritelty
? miten kaariv
> toi 90 [et 1 va 1]
> valmis
kaariv määritelty

Uusia komentoja voi tietenkin käyttää myös silloin, kun opettaa Logolle taas uusia komentoja. Voimme esimerkiksi käyttää kaariv-komentoa opettaaksemme Logolle, kuinka tehdään lehti:

? miten lehti
> kaariv va 90
> kaariv va 90
> valmis
lehti määritelty

Hae komentohistoriasta joitain aiemmin tekemiäsi kuvioita ja tee niistä komentoja.

Harjoitus 3d: siistimpi tapa tehdä monimutkaisia kuvioita

Muistatko edellisen teeman moninkertaiset toista-komennot? Niitä on paljon helpompi hahmottaa, jos eri välivaiheille antaa nimet määrittelemällä ne uusina komentoina. Voit aina ensin kokeilla jotain kuviota ja sitten muuttaa sen komennoksi miten- ja valmis-komennoilla, tähän tapaan:

? uusi
? toista 7 [lehti oi 56]
? miten orvokki
> toista 7 [lehti oi 56]
> valmis
orvokki määritelty

Ja seuraava, monimutkaisempi kuvio:

? uusi
? toista 9 [orvokki et 50]
? uusi
? toista 12 [orvokki ta 50]
? miten seppele
> toista 12 [orvokki ta 50]
> valmis
seppele määritelty

Tee nyt itse esimerkiksi ympyröistä kukka ja kukista seppele, tai vaikkapa kuusikulmio, lumihiutale ja lumipallo.

Harjoitus 3e: jokainen kuvio koostuu osista

Muutenkin monimutkaisemmat kuviot on helpompaa jakaa sopivan kokoisiksi osasiksi kuin yrittää kirjoittaa kerralla virheetöntä ohjelmaa, joka tuottaa koko kuvion. Ajatellaan vaikka, että haluan tehdä tikku-ukon, jolla on sormet ja varpaat. Lähdetään vaikkapa siitä, että määritetään, miltä sormet näyttävät:

? miten sormet
> va 50
> toista 5 [et 30 ta 30 oi 20]
> va 50
> valmis

Sitten määritellään raaja (siis käsi tai jalka):

? miten raaja
> et 65
> sormet
> ta 65
> valmis

Määrittelyt kannattaa muuten usein tehdä sellaisiksi, että lennokki on alussa ja lopussa samassa paikassa ja samassa asennossa. Tällaisia komentoja on paljon helpompaa käyttää apuna, kun tekee uusia komentoja. (Myöhemmin opimme lisää keinoja lennokin palauttamiseksi aiempaan paikkaan.)

Tässä on ohjelma, joka tekee vartalon:

? miten vartalo
> oi 120 raaja
> va 240 raaja
> oi 120 ta 80
> oi 160 raaja
> va 320 raaja
> oi 160 et 80
> valmis
vartalo määritelty

Sitten vielä pää:

? miten pää
> va 90
> ympyrä
> oi 60
> hyps 80
> oi 30
> silmät
> valmis
pää määritelty
? miten silmät
> oi 45
> toista 2 [et 15 oi 90 et 15 va 90]
> valmis
silmät määritelty

Koko ukkeli koostuu sitten vain vartalosta ja päästä:

? miten ukkeli
> vartalo
> pää
> valmis

Kokeile toteuttaa vastaavasti esimerkiksi poni.

Olen pyrkinyt tässä näyttämään, miten ylivoimaiseltakin tuntuva piirros on aika helposti tehtävissä ja ymmärrettävissä, kunhan sitä alkaa hajottaa osiin. Osat ovat pienempiä ja ohjelman rakenne on paremmin ymmärrettävissä. Ajattele, jos koko ukkeli olisi määritelty vain sarjana piirtokomentoja! Sen määrittely näyttäisi silloin tältä (älä missään nimessä vaivaudu kirjoittamaan tätä):

? miten ukkeli.josta.on.vaikea.saada.selvää
> oi 120
> et 65
> va 50
> toista 5 [et 30 ta 30 oi 20]
> va 50
> ta 65
> va 240
> et 65
> va 50
> toista 5 [et 30 ta 30 oi 20]
> va 50
> ta 65
> oi 120
> ta 80
> oi 160
> et 65
> va 50
> toista 5 [et 30 ta 30 oi 20]
> va 50
> ta 65
> va 320
> et 65
> va 50
> toista 5 [et 30 ta 30 oi 20]
> va 50
> ta 65
> oi 160
> et 80
> va 90
> toi 360 [et 1 oi 1]
> oi 60
> hyps 80
> oi 30
> oi 45
> toista 2 [et 15 oi 90 et 15 va 90]
> valmis

Harjoitus 3f: työn tulokset talteen

Tee nyt muutamia kuvioita ja nimeä ne. Ennen harjoituksen loppua kerron vielä, että määrittelyissä on vielä yksi hyvä puoli: ne voi tallentaa. Anna seuraava komento (huomaa yksinäinen lainausmerkki sanan alussa!):

? tallenna "harkat3

Tämä vie tekemäsi määritelmät tiedostoon nimeltä "harkat3". Ne saa myöhemmin taas käyttöön komennolla:

? lataa "harkat3

Tallennettuasi voit siirtyä seuraavaan teemaan.

Teema 4: Kertaa kerta kerta kertaa


Pikalinkit:


kommentoi (viimeksi muutettu 03.06.2014 15:35)