Programmeerimine ilma arvutita
Programmeerimise õppimine põhineb suuresti konkreetsel programmeerimiskeelel, mida õpetatakse. Samas saab õpetamisel lähtuda printsiibist, et ei õpetata konkreetset programmeerimiskeelt, vaid üldisi programmeerimise põhimõtteid ja oskusi ning keel on vaid vahendiks. Kui mõelda, et programmi kirjutamine ei ole midagi muud kui käskude ritta seadmine, siis võib programmeerimist õpetada ka teisiti. Leidub meetodeid, mille abil võib programmeerimist õpetada ilma konkreetse programmeerimiskeeleta ja arvutita. Muidugi ei ole sellisel juhul tulemuseks konkreetne arvutiprogramm. Eesmärgiks ongi oluliste põhimõtetega tutvumine.
Järgnevalt esitatakse näiteid programmeerimist õpetavatest tegevustest ilma arvutita, mida saab rakendada erinevas vanuses õpilastega. Eriti hästi sobivad need nooremas kooliastmes katsetamiseks ja esimestesse programmeerimise tundidesse.
Robotite lauamäng
Eesmärk: õpetada algoritmide koostamist.
Mänguks on vaja
- Mängulaud tugevamal paberil või papil
- Neli või kuus mängijat
- Kuus nuppu ehk robotit. Iga robot on identifitseeritav vastava numbri järgi 1–6. Robotite peal on number koos noolega, mis näitab liikumise suunda. Robotid võib teha näiteks pudelikorkidest või vanadest klaviatuuri klahvidest ja neile peale kleepida nooled koos numbritega või 3D-printida.
- 10x6 käskude tabelid paberil igale mängijale. Lae tabel alla siit.
- Täring
Juhend
Mängulaual võistlevad kahe võistkonna robotid. Võitjaks on võistkond, kes suudab esimesena kõik oma robotid (ehk mängunupud) algusest finišisse viia. NB! Võitjaks on võistkond, kes suudab KÕIK oma robotid, mitte ainult esimese, lõppu toimetada.
- Moodustage kaks rühma, kus esimesse rühma kuuluvad robotid numbritega 1–3 ja teise rühma 4–6.
- Iga mängija saab ühe roboti ja robotit ei vahetata mängu jooksul.
- Robotid paigutatakse juhuslikus järjekorras mängu starti suunaga finiši poole. Võistluse start on kuue ruuduga ala mängulaua servas (vaata joonis 1) ja finiš on nelja ruuduga ala (vaata joonis 2).
Joonis 1. Lauamängu start
Joonis 2. Lauamängu finiš
- Iga mängija saab käskude tabeli, kuhu kirjutatakse roboti käsud. Iga tabeli lahter tähistab üht käsku.
- Mängu mängitakse seeriate kaupa, kuni üks võistkond võidab. Iga seeria koosneb järgmistest tegevustest:
- Iga mängija kirjutab oma käskude tabelisse kuni kümme käsku üksteise alla, mida ei näidata teistele mängijatele. Võib kasutada ka vähem kui kümmet käsku. Robotit saab juhtida järgmiste käskude abil: mine üks ruut edasi (E), mine üks ruut tagasi (T), pööra paremale (P), pööra vasakule(V). Tähelepanu! Paremale ja vasakule pööramisel robot ei liigu edasi ja mitut käsku ei saa panna korraga ühte käsku. Näiteks ei saa tabeli ühte lahtrisse kirja panna kahte paremale pööramise käsku.
- Üks ruut edasi (E) – Robot liigub edasi ühe sammu otse (selles suunas, kuhu näitab nool). See õnnestub, kui ruut, kuhu robot peaks liikuma, on vaba roheline ruut. Kui sellel ruudul on teine robot, kehtib nügimisreegel (vt reeglipunkt 5e).
- Üks ruut tagasi (T) – Toimib sarnaselt käiguga „Edasi“, kuid liigutakse üks samm otse tagasi (robotile nii-öelda selja taha).
- Pööre vasakule (V) – Robotit keeratakse kohapeal 90 kraadi vasakule ning see käsk õnnestub alati.
- Pööre paremale (P) - Robotit keeratakse kohapeal 90 kraadi paremale ning see käsk õnnestub alati.
- Pärast seda, kui kõik mängijad on robotite käsud kirja pannud, viskab üks mängijatest täringut. Täringu silmade arvu järgi otsustatakse, milline robot liikumist mängulaual alustab. Näiteks kui viske tulemuseks on neli silma, siis alustab robot numbriga neli. Seejärel liigutatakse järgmise numbriga robotit. Näiteks kui alustas robot numbriga neli, siis järgmisena liigutatakse robotit numbriga viis, siis kuus, seejärel üks, kaks, kolm.
- Roboti liigutamiseks loeb mängija oma roboti käsud ette ja robotit liigutab mänguväljal vastasvõistkonna mängija.
- Mängulaual on seina tähtistatud telliskivimüürina, millest robotid läbi minna ei saa.
- Nügimine – Kui robot üritab liikuda ruudule, kus paikneb juba teine robot, siis see õnnestub, kui on korraga täidetud kaks tingimust:
- antud ruudule liikuda üritav robot on sellele ruudule eelnevalt ületanud veel vähemalt ühe rohelise ruudu (ehk ta on juba liikumises) JA
- eksisteerib vaba roheline ruut, kuhu nügitav robot saab liikuda.
- Kui nügimine õnnestub (kaks eelnevat tingimust on täidetud), liigub oma samme tegev robot soovitud ruudule ning nügitav robot liigub ühe ruudu võrra selles suunas, kuhu poole teda lükati.
- NB! Nügida saab ühte robotit korraga vaid ühe ruudu võrra (edasised sammud selles suunas ebaõnnestuvad). Ühe käigukorra ajal saab nügimist teha kokku kaks korda, kuid kui soovitakse teha kaks järjestikust nügimist, on vaja teise korra jaoks „koguda hoogu“ ehk liikuda üks samm tagasi ning seejärel kaks edasi (et kehtiks esimene nügimise õnnestumise tingimus).
- Kõik kirja pandud roboti käsud realiseeritakse. See tähendab seda, et kõik roboti liigutused teostatakse tabeli järgi järjest, olenemata sellest, kas antud käigul eelnevad sammud õnnestusid või mitte. Seega saab robot ära teha mitu sammu, mis ebaõnnestuvad, kuid siiski järgmise sammuga näiteks suunda vahetada ja edasi käia (kuigi siis ei pruugi robot jõuda sellisesse kohta, nagu tema kontrollija algselt plaanis).
- Kui robot jõuab finišisse, siis ta eemaldatakse finiširuutudelt, et teha ruumi teistele robotitele.
- Iga mängija kirjutab oma käskude tabelisse kuni kümme käsku üksteise alla, mida ei näidata teistele mängijatele. Võib kasutada ka vähem kui kümmet käsku. Robotit saab juhtida järgmiste käskude abil: mine üks ruut edasi (E), mine üks ruut tagasi (T), pööra paremale (P), pööra vasakule(V). Tähelepanu! Paremale ja vasakule pööramisel robot ei liigu edasi ja mitut käsku ei saa panna korraga ühte käsku. Näiteks ei saa tabeli ühte lahtrisse kirja panna kahte paremale pööramise käsku.
- Võitmine - Kui robot on liikunud finiši ruudule, siis eemaldatakse robot mängulaualt ning ta ei osale enam mängus. Järelejäänud robotid liiguvad tavapäraselt edasi. Esimene võistkond, kelle kõik robotid on finišisse jõudnud ning mängust eemaldatud, on võitja.
Kui mäng jääb ajanappuse tõttu pooleli, võib võitjaks kuulutada selle võistkonna, kelle robot on finišile kõige lähemal.
Keerukuse lisamine
Seda mängu saab muuta keerukamaks, lisades juurde ka funktsioonide kasutamise võimaluse. Näiteks jagatakse õpilastele lisaks üks 2x2 tabel, kuhu nad kirjutavad sobilikud roboti käsud ja annavad sellele käskude komplektile nime. Uut käsku saavad nad kasutada tavalises käskude tabelis.
Allikas: http://onfoodandcoding.blogspot.com/2013/06/the-robots-game.html
Kui … siis … aias
Eesmärk: õpetada tingimuste koostamist.
Mänguks on vaja
- Platsi õues, kus mängida
- Üht õpilast, kes on programmeerija, ja õpilasi, kes on “arvutid”
- Mängijate arv ei ole piiratud
Juhend
Selles mängus peavad “arvutid” vastavalt programmeerija käskudele tegevusi tegema.
- Mängu mängitakse mitmes voorus, kus igas voorus valitakse mängijate seast uus programmeerija
- Programmeerija ülesandeks on välja mõelda lause, mis koosneb kahes osast:
- Kui-osa, milles on programmeerija tegevus
- Siis-osa, milles on arvutite tegevus
- Näited programmeerija lausetest. “Kui ma puudutan oma nina, siis teie puudutate oma nina”, “Kui mina joonistan ringi tahvlile, siis teie joonistate kolmnurga paberile”, “Kui mina istun, siis teie lehvitate”.
Keerukuse lisamine
Seda mängu võib muuta veel keerulisemaks ja lisada mitme tingimusega laused. Näiteks “Kui ma pilgutan silmi ja tõstan oma vasaku jala üles, siis teie istute toolile”, “kui mina joonistan sinise ringi või kollase ruudu tahvlile, siis teie joonistate punase ringi paberile”.
Allikas: http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code
Hiire toitmine
Eesmärk: õpetada algoritmide koostamist
Mänguks on vaja
- Kahte mängijat, kus üks on programmeerija ja teine on “arvuti”
- Üht mänguasja, soovitavalt võiks see olla hiir
- Kaardipakki
- Erinevaid esemeid, võib kasutada ka maiustusi
Juhend
Mängus peab liigutama hiirt või muud sobiliku mänguasja mööda mängukaartidest loodud rada ja kätte saama kõik esemed või maiustused, mis on teel.
- Moodusta kaartidest rada, kus iga kaart tähistab ühte ruutu, millele võib hiir liikuda. Aseta kaardid nii, et nende tagumised küljed oleksid peal. Lisaks märgista raja algus ja lõpp (pildil on lõpp tähistatud ässaga ja algus jokkeriga).
- Lisa rajale sobivatesse kohtadesse esemed.
- “Arvuti” rollis olev mängija kuulab programmeerija antud käsklusi ja liigutab hiirt vastavalt antud käsklustele. Programmeerija annab järgmisi käsklusi:
- Astu samm edasi - hiirt liigutatakse ühe kaardi võrra edasi.
- Astu samm tagasi - hiirt liigutatakse ühe kaardi võrra tagasi, muutmata tema suunda (suund, kuhu vaatab hiir)
- Pööra paremale/vasakule - hiir pöörab 90 kraadi paremale/vasakule
- Võta ese - hiir võtab kaardil oleva eseme ja see eemaldatakse rajalt
Keerukuse lisamine
Mängu võib keerulisemaks muuta nii, et lisada rajale ka mõni pildiga kaart, mis tähistab mõnda alamtegevust (funktsiooni). Näiteks võib selleks alamtegevuseks olla mõni matemaatika ülesanne, mille peab ära lahendama.
Allikas: http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code
Kaardimäng
Eesmärk: õpetada tingimuslauseid
Mänguks on vaja
- Kaardipakke
- Erinevaid pseudokoodiga tingimuslauseid
Juhend
Tegemist on võistlusmänguga, kus mängib vähemalt kaks võistkonda. Võidab võistkond, kes kogub kõige rohkem punkte.
- Jaga grupp õpilasi võistkondadeks.
- Iga võistkond saab ühe kaardipaki. Pakis võib olla ka vähem kaarte kui tavalises pakis.
- Mängujuht, kelleks võib olla näiteks õpetaja, esitab ühe pseudokoodina kirjutatud tingimuslause
- Iga võistkond vaatab läbi enda kaardid ja leiab kaardid, mis vastavad esitatud tingimuslausele. Iga õigesti valitud kaart annab punkti.
- Võidab võistkond, kes saab kõige rohkem punkte.
Näited programmidest:
Kui kaart on punane, siis võistkond saab ühe punkti vastasel juhul võistkond ei saa punkti
Kui kaadi mast on risti, siis võistkond saab kaks punkti Siis kui kaart on must, siis võistkond saab ühe punkti
Keerukuse lisamine
Võistkondadele võib esitada keerulisemate tingimustega laused, kus tingimus koosneb mitmest osast või tingimuslaused on üksteise sees.
Näited
Kui kaart on punane ja ruutu, siis võistkond saab ühe punkti muidu võistkond ei saa punkti
Kui kaart on punane, siis võistkond saab punkti Muidu kui kaart on kuningas, siis võistkond saab kaks punkti muidu võistkond ei saa punkti
Allikas: https://curriculum.code.org/csf-18/coursed/13/
Vigade parandus
Eesmärk: õpetada koodist vigade leidmist ja nende parandamist (silumist, ingl debugging)
Mänguks on vaja
- Töölehti programmidega, mida õpilased analüüsivad
Juhend
Iga õpilane leiab esitatud programmist vead ja teeb parandusi. Programmi eesmärk on liigutada sipelgas maasikani, kuid programmis esineb vigu.
- Iga õpilane saab töölehe, kus on programme, milles on vigu ja programme, milles ei ole vigu.
- Õpilase eesmärgiks on leida vigane koodirida ja teha parandus.
Töölehe näited leiad siit.
Keerukuse lisamine
Õpilastele võib anda programme, milles on rohkem kui üks viga.
Allikas: https://curriculum.code.org/csf-18/courseb/1/
Kursusel osalenud õpetajate kogemused
Joonistamine
Ene Kärg: Tegin 2. klassi matemaatikas ruudulisele paberile nö programmeerimist kui õppisime vasak-parem, üles-alla. Esimene kord tegin mina. Teised korrad tegid juba õpilased ise pildi valmis ja lugesid teistele käsud ette. Mitte kõigil ei tulnud "õiged" pildid. Põhjuseks oli see, et ütleja ajas ise segi või tegija eksis liikumisega.
Alvar Soome: Ma olen kasutanud tihedalt allpool toodud Youtube videos olevat ideed, et õpetada kuidas arvuti "mõtleb". Väga äge on vaadata kui see teadmine kohale jõuab, et keegi on arvutile sellise detailsusega kõik ette kirjutanud mida ta tegema peab ... silmad lähevad suureks nagu tõllarattad. Ma olen palunud näiteks rühmadel kirjutada mulle juhend "Kuidas panna tikk põlema", enamasti hakkab see "Võta tikk ja tõmba põlema" ... siis ... üritad tikku kätte saada ilma tikutoosi avamata ... ja tõmbad vastu lauda või ... ja nii samm-sammult muudkui lähed detailsemaks ja natuke keerad igakord "vinti" peale juhendi tõlgendamisega
Veel vahvaid tegevusi
Lisaks eelnevalt kirjeldatud tegevustele, leidub veel mitmeid erinevaid mänge, mille abil programmeerimist ilma arvutita õpetada.
- https://code.org/curriculum/unplugged
- https://csunplugged.org/en/resources/
- https://progetiiger.ee/tool/63/ilma-seadmeteta-programmeerimine
- http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code
- Algoritmi järgi tantsimine. Sorteerimisalgoritm: