Avainsana: koodauksen perusrakenteet

Ohjelmoinnin perusteet, mitä ne on?

Aloitin ohjelmoinnin opiskelun 1990- luvulla ja virallisesti ensimmäisen ohjelmointikurssin kävin1997. Ohjelmoinnin perusteet- kurssi tarkoitti noihin aikoihin ohjelman kirjoittamista eli koodaamista C++ ohjelmointikielellä. Kurssin aluksi ei kerrottu mitä ohjelmointi on, saatikka olisi kerrottu kaikille ohjelmointikielille yhteisistä rakenteista (=käskylause, ehtolause, muuttujat, silmukat yms.). Aloimme opettajan johdolla kirjoittamaan ohjelmaa, jonka avulla tietokone kirjoitti mustalle näytölle jotain. Tehtäväksi saatettiin antaa; ohjelma kysyy kaksi lukua ja ilmoittaa niiden yhteissumman näytöllä. Mitään koodia ei saanut kopioida mistään, vaan kaikki piti kirjoittaa itse. Jos/kun kääntäjä antoi virheitä, niin ohjeet syntaksiin löytyi kirjasta tai ohjelman Help- toiminnosta.

Olipa aika tylsää, vaan silti jotkut aiheesta innostuivat. Suurimmasta osasta kuitenkin tuntui kaikki olevan kovin monimutkaista, ja kurssilaisista karsiutua pois useita sen takia, että tapa opettaa ohjelmointia oli sopimaton heille.
Miten niin?
Koska ohjelmointia oppii tekemällä ja tekemällä ja tekemällä… enkä tarkoita koodin kirjoittamista kopioimalla opettajan mallikoodista. Ongelmien ratkaisu on mielestäni ohjelmoinnissa parasta eli koodauksen ”suola” ja sitä luovaa tekemistä. Usein ongelman voi ratkaista monella eri tapaa! Ongelma voi olla yksinkertaisuudessaa olla esim. miten saat hahmon liikkumaan pisteestä A pisteeseen B ja sanomaan hei. Ratkaisuna hahmo voi liikkua pisteisiin vaikkapa eri reittejä…

Itse kävin 2000-luvulla nuoruuden innolla alkeis- ja jatkokursseja useista eri kielistä mm. C++, Delphi ja Java. Silloin oli internet yleistymässä, mutta HTML ja Javascript (nettisivujen teko) ei olleet vielä koodarien mielestä ohjelmointia ollenkaan… olio-ohjelmointia se olla piti. En oivaltanut tuolloin, että ”opettele käyttämään ohjelmoinnin perusrakenteita hyvin jossain kielessä opit käyttämään kaikkia tarvitsemiasi ohjelmointikieliä helposti”.

Onneksi pääsin nopsaan alan töihin. Työkokemus karttui. Huomasin muutamassa vuodessa projektien vaihtuessa, että ohjelmointikielestä toiseen siirtyminen onkin helppoa. Kaikista löytyy ensinnäkin ne perusrakenteet:

  • käskylause
  • ehtolause (=If, Then, Else)
  • muuttujat (char, string, array, integer jne.)
  • funktio
  • toistorakenteet (for, while)

Ja toisekseen löytyy paljon paljon muutakin yhteistä esim. stringin käsittelyn funktiot, ja array käsittelyn funktiot jotain mainitakseni. Jos olisin tämän jo alussa tiennyt, niin en takuulla olisi tuhlannut paukkuja useiden eri ohjelmointikielien alkeiskursseihin. Eikähän nykyään edes tarvitse ulkoa opiskella useiden eri kielten syntakseja, koska kyllä mm. Google niissä osaa neuvoa 😉

Olen opettanut koodausta lapsille vuodesta 2014 lähtien ja oivaltanut, että ohjelmoinnin opiskelun voi aloittaa hauskasti ja helposti. Nykyään se on mahdollista. Ja toivon mukaan koodausta opetetaan näin peruskoulussa tänä päivänä. Eihän kaikista tarvi koodareita tulla, mutta ihan hyvää yleistietämystä on se, että tietokoneita alkaa olla vähän joka laitteessa nykyään ja tietokoneiden ollessa tyhmiä on ihmisen pakko määritellä miten ne toimivat ja/tai mitä tekevät! Aloittelijoille (myös aikuisille) annankin vinkiksi:
opiskelkaa ohjelmoinnin perusrakenteet ensin helpossa graafisessa ympäristössä (esim. code.org, scratch, bomberbot), kuten lapset tekevät, niin ymmärrätte miten pienistä palikoista ohjelmointi oikeastaan koostuu. Sen jälkeen on paljon helpompi syventyä johonkin oikeaan kieleen oli se sitten yliopistokurssien Java tai Python tai jotain muuta!

Kokemuksia koodauksen opettelusta Bomberbotilla

Kävimme 6. luokan kanssa Bomberbotin alkeiskurssin läpi. Lähtötaso oli, että oppilaat olivat aiempina vuosina tutustuneet koodaukseen jonkin verran mm. code.org tehtävillä. Osa oppilaista opiskeli koodausta ensimmäisen kerran peruskoulun aikana.

Bomberbotin Alkeet- osassa aloitettiin opettelemalla mitä ohjelmointi on. Sitten käytiin läpi ohjelmoinnin perusrakenteita: lause, ehtolause, silmukka, funktio ja muuttuja. Me kävimme Bomberbotin kaksi aihealuetta yhtenä päivänä läpi, ja tämä tuntui sopivalta tahdilta.

Kuva: tuntien sisällöt

Viimeisellä kerralla kerrattiin aiemmin opittujen rakenteiden käyttöä, ja paneuduttiin oma ohjelman suunnitteluun. Tämä tarkoitti Bomberbotissa oman tason suunnitelman tekemistä. Suunnitelmat eli omat tasot testattiin parin kanssa..

Ohjelman tekemiseen kuuluu koodauksen lisäksi suunnitelman laatiminen ja testaus. Nämä kaikki osa-alueet tuli käytyä läpi bomberbotin Alkeet- osassa.
Voin suositella Bomberbotia muillekin kuutosluokille. Tällaisella sisällöllä tulee opeteltua koodauksen perusteet (=perusrakenteet) ja jokainen tekee lopuksi myös oman graafisen ohjelman suunnitelman, jonka toimivuus testataan.
Eli OPS2016 tavoitteet 6. luokan osalta tulevat tässä minimissään täytettyä.

Innokkaimmat oppilaani tekivät myös Bomberbotin Jatko-osan tehtäviä omatoimisesti, joten nekin sopivat tasoltaan tämän ikäisille. Jatko-osaa voi mielestäni suositelle niille, jotka kiinnostuvat ohjelmoinnista Alkeet- osan jälkeen, koska jatkossa käsitellään edistyneempi koodauksen juttuja mm. debuggaus!

Annoin oppilaille arvosanat 2h x 5pv kurssin jälkeen. Arvostelu perustui ahkeruuteen eli tehtyjen tehtävien määrä kurssilla (sen näkee bomberbotista) ja lopputyöhön, joka oli oman tason suunnitelma ja ratkaisuehdotus. Keskiarvoksi tuli 7,5. Lisäämällä harjoittelua saisi keskiarvon helposti yli 8, koska monikaan ei tehtäviä tehnyt kotona.

Kokemuksena tästä jäi hyvä mieli!