Oppitunti 2 Peräkkäisyys Oppitunnin tavoitteet Oppilas ymmärtää peräkkäisyyden merkityksen ohjelmoinnissa Oppilas ymmärtää, että ohjelma koostuu ohjeista, jotka tietokone suorittaa peräkkäisessä järjestyksessä alusta loppuun Oppilas ymmärtää, että ohjeiden järjestys vaikuttaa ohjelman toimintaan Keskeiset käsitteet Peräkkäisyys: järjestys, jossa ohjelma lukee ohjeet alusta loppuun yksi kerrallaan Oppitunnin materiaali Sakset Ohjelma: peräkkäisistä ohjeista muodostuva kokonaisuus, jota tietokone noudattaa Teippiä Pino kirjoja Peräkkäisyys -opetusdiat Tuntisuunnitelma Opettajan perehdytys: Tutustuminen uuteen aiheeseen (sivu 2) Ohjelmointi Bomberbotissa (sivu 3) Tuntisuunnitelma: Kertaus (sivu 4) Uuden käsitteen opettaminen (sivut 4-5) Offline-harjoitukset 1 & 2 (sivut 6-8) Harjoitustasot (sivut 9-10) Loppukeskustelu (sivu 10) Lisätehtävät (sivu 11) 1
TUTUSTUMINEN UUTEEN AIHEESEEN Tietokoneet eivät osaa toimia itse, vaan tarvitsevat ihmisten laatimia ohjeita eli ohjelmia toimiakseen. Bomberbotkin noudattaa oppilaiden antamia ohjeita juuri siinä järjestyksessä, jossa oppilas ne antaa alusta loppuun. Järjestystä, jossa ohjelma lukee ohjeet eli koodin alusta loppuun kutsutaan peräkkäisyydeksi. Peräkkäisistä ohjeista, joita tietokone noudattaa, muodostuu ohjelma. Bomberbotissa oppilaiden laatimat ohjelmat koostuvat toiminnoista, joita Bomberbot-robotti suorittaa. Kahden ensimmäisen oppitunnin toiminnot eli ohjeet ovat olleet liikkuminen ylös, alas, oikealle sekä vasemmalle ja vasaralla murskaaminen. Peräkkäisyyttä voisi verrata esimerkiksi koottavan huonekalun pystyttämiseen. Uuden huonekalun mukana tulevat ohjeet, joita kokoaja noudattaa tietyssä järjestyksessä. Kuten ohjelmissa, myös kokoamisohjeissa on looginen järjestys jos kokoat hyllyä, et voi kiinnittää hyllytasoja ilman hyllyn kehikkoa. Järjestyksellä on väliä. Hyllyn kokoamisohjeiden tulee olla selkeät, jotta mahdollisimman moni pystyy noudattamaan ohjeita. Mikäli ohjeista on jätetty vaiheita pois, on vaikea edetä hyllyn rakentamisessa. Myöskään turhat ohjeet eivät edistä hyllyn kokoamista. Ohjetta Kun olet kiinnittänyt hyllyn tasot, irrota ne ja kiinnitä uudelleen ei varmasti noudattaisi kovin moni se ei olisi järkevää. Ihmiset pystyvät arvioimaan ohjeiden loogisuutta tai paikkansapitävyyttä, mutta tietokone tai ohjelma noudattaa vain sille annettuja ohjeita. Siksi ohjelmoidessa on tärkeää kiinnittää huomiota ohjeiden antamiseen eli koodin kirjoittamiseen: koodista pyritään tekemään mahdollisimman selkeää ja lyhyttä. Tällöin ohjelma vie vähemmän tilaa ja tietokone pyörittää ohjelmaa tehokkaammin. Kun koodi on selkeää ja lyhyttä, myös muut ohjelmoijat pystyvät tarvittaessa lukemaan koodia ja muokkaamaan sitä. Peräkkäisyys kuvaa järjestystä, jossa ohjelma lukee ohjeet alusta loppuun Tietokone aloittaa ohjelman suorittamisen ensimmäisestä ohjeesta ja jatkaa ohjeiden noudattamista ohjelman loppuun asti annetussa järjestyksessä, yksi ohje kerrallaan. Tätä tarkoittaa peräkkäisyys. Opettaja noudattaa peräkkäisyyden periaatetta usein myös antaessaan oppilaille ohjeita: mitä selkeämmät ja yksinkertaisemmat ohjeet, sitä paremmin asian saa perille. 2
PERKÄKKÄISYYS BOMBERBOTISSA Bomberbotissa oppilaat hyödyntävät peräkkäisyyttä suunnitellessaan robotille ohjeita. Tietokoneet suorittavat yhden käskyn kerrallaan. Kun oppilas painaa Pelaa, ohjelma suorittaa ohjeet peräkkäisessä järjestyksessä alusta loppuun. Ohjelma aloittaa ohjeiden lukemisen aina alusta. Toisin sanoen jos oppilas painaa Pelaa robotti siirtyy aina tason alkuun suorittamaan ohjeita riippumatta siitä, missä kohtaa pelitasoa robotti sillä hetkellä on. Oppilaat saattavat kuitenkin testata ohjeita ennen varsinaisen ratkaisun keksimistä. Mikäli oppilaat haluavat palauttaa robotin alkupisteeseen ilman, että Bomberbot suorittaa pääohjelman ohjeet, tulee oppilaiden painaa Pelaa -näppäimen sijasta Nuoli -näppäintä. Oppilaita kannattaakin ohjeistaa pohtimaan lopullista reittiä ja ohjeiden määrää ennen ratkaisun testaamista. Mikäli robotti ei toimi kuten oppilas haluaisi, on vika yleensä koodissa. Oppilaat saattavat esimerkiksi luulla, että vasara-toiminto sisältää kaksi toimintoa: kävele ja murskaa. Vasaran kanssa voi kuitenkin vain murskata, ei kävellä. Oppilaita voi pyytää lukemaan ohjelman ääneen, mikäli robotti ei toimi kuten oppilas haluaisi. Ääneen lukemisen avulla oppilaat usein itsekin huomaavat omat virheensä. Lyhimmän peräkkäisyyden löytämistä voisi verrata tilanteeseen, jossa olet liikenneympyrässä ja pohdit, mikä mahtaisi olla lyhin reitti perille. Reitin valinta vaikuttaa siihen, kuinka nopeasti ja helposti pääset perille. Perille pääsee varmasti useamman reitin kautta, mutta osa reiteistä voi olla huomattavasti hitaampia tai mutkittelevampia kuin toiset. Myös Bomberbotissa tehtävän voi ratkaista useamman vaihtoehdon avulla, mutta paras ratkaisu on usein lyhin. TUNTISUUNNITELMA Tuntisuunnitelma koostuu kahdesta osasta: uuden käsitteen opettamisesta (n. 30 min) sekä pelin pelaamisesta ja loppukeskustelusta (n. 25 min). Suunnitelman kokonaiskesto on noin 60 min, mutta opettaja voi räätälöidä dioista luokalleen sopivan kokonaisuuden. KERTAUS 3
Dia 1: PERÄKKÄISYYS Käy läpi: Tunnin voi aloittaa tekemällä miellekartan viimeksi opitusta tai oppilailta voi kysellä, mitä he muistavat ohjelmoinnista ja tietokoneista. Ohjelmointi on ohjeiden ja ohjeistojen laatimista sekä muuntamista tietokoneen kielelle. UUDEN KÄSITTEEN OPETTAMINEN Dia 2: OHJELMA ON KUIN KIRJOITETTU SATU Käy läpi: Käy oppilaiden kanssa läpi satujen ja ohjelmien yhtäläisyyksiä seuraavien esimerkkien avulla: Tietokoneohjelmia, kuten myös satuja, voidaan kirjoittaa eri kielillä (tietokoneohjelmia eri ohjelmointikielillä ja satuja eri maiden kielillä). Ohjelmoijan tehtävä on kertoa tietokoneelle, mitä tapahtuu ohjelman alussa, keskellä ja lopussa. Myös satukirjailija kertoo lukijoilleen tarinan alun, keskivaiheen ja lopun. Tietokoneohjelma lukee ja suorittaa ohjelmoijan ohjeet eli koodin alusta loppuun. Myös satua luetaan vasemmalta oikealle ja alusta loppuun, kirjailijan kirjoittamassa järjestyksessä. Jotta lukija voi ymmärtää tarinan, tulee hänen lukea satu peräkkäisyyden mukaisesti, ei sikin sokin. Myös tietokoneen pitää lukea ohjeet peräkkäisessä järjestyksessä, jotta se osaa suorittaa annetut tehtävät. Voit demonstroida tätä ottamalla kirjan (joka ei ole oppilaille tuttu) ja lukemalla yksittäisiä lauseita sieltä sun täältä. Ymmärtävätkö oppilaat kirjan juonen? Dia 3: MITÄ TARKOITAA PERÄKKÄISYY S? Käy läpi: Samalla tavalla kuin tarinoissa on alku ja loppu, myös ohjelmoinnissa ohjelmalla on alku ja loppu. Mikäli kirjailija kirjoittaa vain tarinan alun, jää tarina kesken. Myös ohjelmoijan tulee kirjoittaa ohjelma alusta loppuun, jotta tietokone tietää, mitä seuraavaksi tehdään. Bomberbotissa oppilaat suunnittelevat ohjelmia antamalla peräkkäisiä ohjeita robotille ja laatimalla eri tasoihin ratkaisuja. Peräkkäisyys kuvaa järjestystä, jossa ohjelma lukee ohjeet alusta loppuun yksi kerrallaan. 4
Dia 4: JÄRJESTYK- SELLÄ ON VÄLIÄ Käy läpi: Yksi tärkeimpiä asioita ohjelmoinnissa on ohjeiden järkevä järjestys. Esimerkiksi jos Bomberbotille annetaan ohjeita väärässä järjestyksessä, robotti ei tee, mitä oppilas haluaa. Keskustelu: Tutkikaa peräkkäisyyden tärkeyttä vaihtamalla Punahilkka-sadun tapahtumajärjestystä. Mitä Punahilkka-sadussa tapahtuu dian kuvien perusteella? Onko järjestys Punahilkka-sadun mukainen? Mikäli oppilaat haluavat kertoa Punahilkka-sadun, heidän tulee noudattaa sadun oikeaa järjestystä. Myös Bomberbotin tasojen ratkaisussa oppilaiden tulee noudattaa tiettyä järjestystä eli löytää lyhin mahdollinen reitti, mikäli he haluavat saada tasosta kolme tähteä. Tietyn tehtävän suorittamiseksi voi olla useampi tapa, mutta tietokoneiden työmäärän helpottamiseksi ohjeiden tulee olla mahdollisimman lyhyet ja selkeät. Myös arkielämässä tarvitaan taitoa tiivistää ja sanoa asiat selkeästi. Voit lukea oppilaille esimerkkilauseet (tai keksiä omat) ja kysyä, kumpi on helpompi ymmärtää: Tiistaina kävelin kouluun Joo siis mä menin tiistaina kouluun ja sit mä en sit ottanu pyörää ku en jaksanu vaan mä kävelin sinne. Dia 5: KONEET EIVÄT AJATTELE Dia 6: BOMBERBOT NOUDATTAA OHJEITA Käy läpi: Koneet tai esimerkiksi sadun hahmot eivät osaa ajatella itse. Kirjailijan tai ohjelmoijan pitääkin kirjoittaa, mitä sadun henkilöt tai koneet tekevät. Jos tarina on oudossa järjestyksessä, johtuu se siitä, että kirjailija on kirjoittanut tarinan outoon järjestykseen. Samalla tavalla, jos ohjelma toimii oudossa järjestyksessä, johtuu se ohjelman tekijästä. Käy läpi: Pyydä oppilailta määrittelemään, mitä ohje tarkoittaa Bomberbotissa ja miten robotti suorittaa esimerkiksi vasaralla murskaamisen? Esimerkiksi: Ohje on toiminto, jonka avulla kerromme Bomberbotille, mitä sen pitää tehdä. Bomberbotilla on käytössä 5 erilaista toimintoa: liikkuminen vasemmalle, oikealle, eteenpäin ja 5
taaksepäin sekä vasaralla murskaaminen. Bomberbot suorittaa toiminnot yksi kerrallaan alusta loppuun. Järjestystä, jossa ohjelma lukee ohjeet eli koodin, kutsutaan peräkkäisyydeksi. Kysy oppilailta, mitä tapahtuu, kun Bomberbot on toistanut oppilaiden ohjelman kaikki ohjeet? (Vastaus: Aivan kuten sadun lopun jälkeen satu ei enää jatku, ei myöskään ohjelma voi jatkua ilman ohjeita robotti siis pysähtyy, kun noudatettavat ohjeet loppuvat.) OFFLINE-HARJOITUKSET 1 & 2 Ajankäyttö: n 5-10 min Dia 7: OFFLINE- HARJOITUKSET 1 & 2 Valitse alla olevista harjoituksista 1-2 luokassa tehtäväksi. Harjoitusten tarkoitus on selkiyttää oppilaille peräkkäisyyden merkitystä. Offlineharjoitus 1: Ihmisbomberbot (5-10 min) Pelin kulku: Tällä kertaa tarkoituksena on antaa ohjeet peräkkäisyyttä noudattaen. Oppilaiden tehtävänä on kirjoittaa kaikki ohjeet alusta loppuun taululle ennen kuin IhmisBomberbot käynnistetään. Kun ohjeet on kirjoitettu, noudattaa robotti ohjeita alusta loppuun, eikä lopeta, ennen kuin ohjelma on suoritettu. Osa A Valitkaa oppilas, joka esittää IhmisBomberbotia. Pyydä oppilasta poistumaan luokasta ja keksikää IhmisBomberbotille tavoite. Päättäkää, mistä robotti aloittaa ja kirjoittakaa taululle ohjeet tavoitteen suorittamiseksi. Robotin aloituspaikka kannattaa valita niin, että robotti pystyy koko ajan seuraamaan taulun ohjeita. Kun ohjeet on kirjoitettu, pyytäkää IhmisBomberbot takaisin luokkaan ja asetelkaa hänet lähtöpaikalle. Kertaa vielä, että Ihmisbomberbotin tarkoitus on noudattaa taululla olevia ohjeita alusta loppuun annetussa järjestyksessä ja lopettaa vasta, kun kaikki ohjeet on käyty läpi. Kun kaikki on valmista, voitte 6
yhdessä huutaa Pelaa, jolloin IhmisBomberbot aloittaa ohjelman suorittamisen. Seuratkaa tarkkaan, noudattaako robotti ohjeita täsmällisesti. Mikäli ei, niin voitte luokan kanssa muistuttaa robottia siitä, että se ei osaa ajatella, vaan noudattaa vain käskyjä. Osa B Poista puolet ohjeista ja pyydä IhmisBomberbotia suorittamaan vain puolet ohjeista. Pyydä luokkaa huutamaan Pelaa, jolloin robotti suorittaa vain osan ohjeista ja pysähtyy. Kysy oppilailta, miten ongelma voitaisiin ratkaista. Oppilaat todennäköisesti hoksaavat, että ohjeet pitää kirjoittaa uudestaan. Lisää puuttuvat ohjeet ja huutakaa Pelaa. Tässä kohtaa IhmisBomerbotin pitäisi muistaa, että ohjelma suorittaa ohjeet aina alusta loppuun. IhmisBomerbotin pitäisi aloittaa ohjelman suorittaminen alusta, ei keskeltä. Muistuta oppilaita peräkkäisyydestä ja kysy noudattiko robotti peräkkäisyyttä aloittaessaan ohjelman suorittamisen. Oppilaat saattavat ihmetellä, miksi heidän pelaamissaan peleissä pelin voi keskeyttää ja jatkaa myöhemmin siitä, mihin jäätiin. Tämä johtuu siitä, että oppilaiden laatimissa ohjeissa eli koodissa ei ole neuvottu robottia jatkamaan siitä, mihin se jäi. Oppilaiden pelaamissa peleissä ohjelmoijat ovat kuitenkin ohjelmoineet peliin tällaisen toiminnon. Mikäli oppilaat tekevät ohjelmassa virheen ja haluavat lisätä ohjeita, tulee heidän aina palauttaa Bomberbot aloituspisteeseen ennen ohjelman käynnistämistä. Osa C Osa C:n tarkoitus on havainnollistaa, miten vasara-toiminto ja peräkkäisyys linkittyvät toisiinsa. Tee teipistä neljä ruutua: ensimmäinen on tyhjä, toisessa ruudussa on pino kirjoja ja kolmas ja neljäs ruutu ovat taas tyhjiä. Pyydä oppilaita miettimään ohjeet sille, miten IhmisBomerbot pääsisi neljänteen ruutuun. Käytettävät toiminnot ovat samat kuin pelissä eli liikkeen lisäksi oppilailla 7
on käytössä vasara-toiminto (joka voi tässä tapauksessa toimia Siirrä - toimintona). Kirjoita oppilaiden keksimät ohjeet ylös taululle. Kun ohjeet ovat valmiit, käynnistäkää robotti. Mikäli ohjeissa on virheitä (esimerkiksi ohjelmassa on yksi askel liian vähän), pyydä oppilaita lukemaan kirjoitettu koodi ääneen ja pohtimaan, mitä pitäisi muuttaa. Oikeat ohjeet ovat seuraavat: 1. Ota yksi askel eteenpäin. 2. Käytä vasara-toimintoa. 3. Ota kolme askelta eteenpäin. Offlineharjoitus 2: Sekoitettu resepti tai tarina (10-15 min.) SEKOITETTU TARINA Pyydä oppilaita kirjoittamaan lyhyt, alle kymmenen virkkeen tarina, esimerkiksi Bomberbotista. Jokaisen virkkeen tulee olla omalla rivillään. Pyydä oppilaita leikkaamaan virkkeet ja vaihtamaan ne luokkakaverin kanssa. Oppilaiden tulee yrittää järjestää toisen oppilaan tarina alkuperäiseen järjestykseen. Oppilaat voivat kirjoittaa tarinat myös etukäteen äidinkielen tunnilla tai kotona ajan säästämiseksi. Pohtikaa, oliko tarina helppo järjestää alkuperäiseen järjestykseen? Osaako Bomberbot järjestää sekaisin olevat ohjeet oikeaan järjestykseen? LISÄHARJOITUS: SEKOITETTU RESEPTI Saman harjoituksen voi tehdä reseptien kanssa. Oppilaat voivat yrittää järjestellä valmiiden reseptien pilkottuja ohjeita oikeaan järjestykseen. 8
HARJOITUSTASOT Dia 8: HARJOITUSTASO 1 Toiminta: Heijasta ensimmäinen taso oppilaiden nähtäväksi ja kysy, miten tason saisi ratkaistua lyhimmillä mahdollisilla ohjeilla. Ratkaiskaa taso yhdessä. Kun ohjelma on valmis, voit kertoa oppilaille, että olette juuri luoneet peräkkäisistä ohjeista muodostuvan ohjelman, jonka Bomberbot suorittaa alusta loppuun yksi toiminto kerrallaan. Tätä tarkoittaa ohjelmoinnissa peräkkäisyys. (Tason ratkaisu: ota askel oikealle, murskaa palikka, ota askel oikealle ja murskaa rubiini). Dia 9: PERÄKKÄISYYDEN LÖYTÄMINEN Keskustelu: Miten Bomberbotissa sai täydet kolme tähteä? (Käyttämällä mahdollisimman vähän ohjeita - mitä vähemmän peräkkäisiä ohjeita, sitä parempi. Kolme tähteä saa, kun onnistuu ratkaisemaan tason annetulla askelmäärällä) Käy läpi: Toisinaan tasojen ratkaisemiseen voi olla useampi oikea vaihtoehto. Aluksi kannattaa aina miettiä, mihin suuntaan Bomberbotin pitäisi lähteä kävelemään, jotta reitistä tulisi mahdollisimman lyhyt. Suunta, jonka oppilas valitsee, vaikuttaa siihen, kuinka monta ohjetta Bomberbotin pitää tason ratkaisemiseksi suorittaa. Paras mahdollinen polku on se, jossa on lyhin peräkkäisyys. Oppilaille voi antaa käytännön esimerkkinä lyhimmän reitin pohtimisen koulusta kotiin. Oppilas voi päästä useampaa reittiä perille, mutta lyhimmän reitin valinta nopeuttaa kotiin pääsemistä. 9
Dia 10: HARJOITUSTASO 2 Toiminta: Tehkää oppilaiden kanssa yhteisesti vielä taso kaksi. Oppilaiden tulee keksiä, miten Bomberbot saa suoritettua diojen reitit. Kirjoittakaa molempien reittien ohjeet ylös ja selvittäkää, kummassa vaihtoehdossa on vähemmän ohjeita. Dia 11: PELAA TASOJA Oppilaat voivat suorittaa oppitunnin 2 tasoja itsenäisesti tai pareittain. Muistuta, että tasojen tavoite on luoda mahdollisimman lyhyitä ohjelmia mahdollisimman lyhyillä ohjeilla eli peräkkäisyydellä. Jos ongelmia ilmenee, voit ohjeistaa oppilaita lukemaan koodin ääneen. Onko ohjeita riittävästi vai kenties liikaa? Puuttuuko vasara-toiminnon jälkeen askelia? Kirjaa oppilaiden yleisimpiä ongelmia ylös, jotta voitte pohtia niitä tunnin lopuksi. Oppilaiden tulee suorittaa tasot 1 13. Nopeimmat oppilaat voivat jatkaa tasojen suorittamista tasosta 14 eteenpäin. Oppilaat voivat suorittaa lisätasoja myös kotona. LOPPUKESKUSTELU Dia 12: LOPPU- KESKUSTELU Keskustelu: Tarkista, että oppilaat ovat ymmärtäneet seuraavat asiat: Peräkkäisyys tarkoittaa järjestystä, jossa ohjelma lukee ohjeet eli koodin alusta loppuun Ohjeiden tulee olla loogisessa ja peräkkäisessä järjestyksessä (kuten reseptissä) Ohjelma suorittaa yhden toiminnon kerrallaan (vasara-toimintoon ei sisälly liike) Käykää yhdessä läpi mahdolliset ongelmat. 10
LISÄTEHTÄVÄT Oppilaat voivat jatkaa tasojen tekemistä kotona. Oppilaat voivat etsiä peräkkäisyyttä myös oikeasta elämästä. Millaisissa asioissa peräkkäisyyden periaatetta noudatetaan? Oppilaat voivat viikon ajan kirjata löytämiään esimerkkejä ylös. Käykää esimerkit yhdessä läpi. 11