Ohjelmoinnin opetukseen liittyvien käsitteiden määritelmät peruskoulun opettajille

OhjelmointiTälle sivulle on koottu perusopetuksen ohjelmointiin ja ohjelmoinnin opetukseen liittyviä keskeisiä käsitteitä määritelmineen.

Peruskäsitteet

Ohjelmointi (engl. programming)
Ohjelmointi tarkoittaa tietokoneelle tai tietokonetta vastaavalle laitteelle annettavien toimintaohjeiden eli algoritmien laatimista. Ohjelmointi voi koostua esimerkiksi ongelman analysoinnista, mahdollisten ratkaisujen arvioinnista, ratkaisun suunnittelusta, ohjelmointikoodin kirjoittamisesta, ohjelmoidun sovelluksen testaamisesta ja virheiden korjauksesta. Ohjelmointi on automatisointiajattelun ja algoritmisen ajattelun käytännön toteutusta. Esimerkiksi historian tarinan kertominen animaationa, matemaattisen ongelman visualisointi tai opetuspelin laatiminen alemman vuosiluokan oppilaille.

Ohjelma (engl. program, application, app)
Ohjelma on (kookas) algoritmi, joka toteuttaa tietyn hyödyllisen toiminnon. Esimerkiksi kännykän sovellukset (appsit, esim. Whatsapp, Instagram) tai tietokoneen ohjelmat (Word, internet-selain), sekä kunkin itse laatimat yksinkertaiset tai monimutkaisemmat ohjelmat.

Koodaaminen (engl. coding)
Koodaaminen on ohjelmoinnin vaihe, jossa tuotetaan varsinainen ohjelmakoodi. Esimerkiksi muuttujien, silmukoiden ja ehtorakenteiden kirjoittaminen ohjelmakoodiksi siten, että ohjelma tekee sitä mitä sen halutaan tekevän. Puhekielessä koodaamista käytetään nykyisin myös synonyymina ohjelmoinnille.

Koodi (engl. code, program code)
Tietyllä ohjelmointikielellä tuotettu algoritmi tai ohjelma, jonka tietokone voi suorittaa. Esimerkiksi Python-kielellä: “if hinta<10: osta()”

Algoritmi (engl. algorithm)
Algoritmi on yksityiskohtainen kuvaus jonkin tehtävän suorittamiseksi tarvittavista toimenpiteistä. Algoritmia seuraamalla voi ratkaista tietyn ongelman tai tehtävän tai luoda jotain uutta. Esimerkiksi ruokareseptit, sävellyksen nuotit, jakolaskualgoritmi tai käsityöohjeet ovat algoritmeja. Algoritmi rakennetaan esimerkiksi lauseista sekä toisto- ja ehtorakenteista.

Algoritminen ajattelu (engl. algorithmic thinking)
Algoritminen ajattelu ohjaa purkamaan ongelman osiin, etsimään ongelmaan liittyviä toistuvia sääntöjä, luomaan yksikäsitteisiä toimintaohjeita eli algoritmeja ja yleistämään sekä automatisoimaan ratkaisun. Esimerkiksi ruokareseptien, nuottien, koreografioiden tai käsityöohjeiden laatiminen edellyttää algoritmista ajattelua.

Automatisointiajattelu/ohjelmoinnillinen ajattelu/laskennallinen ajattelu (engl. computational thinking)
Taito havaita millaisia ongelmia voidaan ratkaista ja millaisia ideoita toteuttaa tietokoneita ohjelmoimalla. Ongelmien muotoilu tietokoneen ymmärtämään muotoon edellyttää algoritmista ajattelua ja ohjelmointia.

Ohjelmointikieli (engl. programming language)
Kun algoritmi koodataan tietokoneen ymmärtämäksi koodiksi, käytetään aina jotakin ohjelmointikieltä, joka yleensä on tekstipohjainen, joskus visuaalinen. Osa kielistä soveltuu ohjelmoinnin opiskeluun, osaa taas käytetään työelämässä.

Visuaalinen ohjelmointikieli, graafinen ohjelmointiympäristö (engl. visual programming language)
Visuaalinen ohjelmointikieli on ohjelmointikieli, jossa koodia ei tarvitse itse kirjoittaa, vaan ohjelma koostetaan valmiista tai muokattavista kuvakkeista (lohkoista). Tällaisten ohjelmointikielien ilmaisuvoima on usein rajatumpi kuin tekstipohjaisten ohjelmointikielien. Ohjelmoinnin tulos voi olla esimerkiksi pieni peli, seikkaileva satuhahmo tai näyttävä geometrinen kuvio. Tunnettuja visuaalisia ohjelmointikieliä ovat esimerkiksi Scratch, ScratchJr ja Snap.

Lause, komento (engl. statement, command)
Lause on yksi komento koodissa, jonka tietokone suorittaa tullessaan sen kohdalle.

Lausesarja, komentosarja, skripti (engl. block, script)
Lausesarjassa tai komentosarjassa lauseita suoritetaan järjestyksessä. Ehtorakenteet ja toistorakenteet voivat vaikuttaa suoritusjärjestykseen.

Ehtorakenne, ehtolause (engl. conditional construct, conditional statement)
Ehtorakenteissa ohjelman suoritus haarautuu erilaisiin vaihtoehtoisiin suuntiin ehdosta riippuen. Esimerkiksi ohjelmassa liikkuva hahmo liikkuu vasemmalle, jos vasemmalla on tilaa.

Toistorakenne, toistolause, silmukka (engl. loop, repetition, iteration)
Toistorakenne toistaa tiettyä ohjelman osaa useamman kerran sille annetun ehdon mukaisesti. Esimerkiksi “ota 5 askelta” tai “ota askeleita kunnes olet perillä”.

Tapahtuma (engl. event)
Ohjelmointiin liittyvä käsite, joka aiheuttaa komentosarjan suorittamisen, kun jokin ulkoinen asia tapahtuu. Esimerkiksi kun kosketaan painiketta, ohjelma soittaa äänen tai pelissä esiintyvä kissa vaihtaa suuntaa, tai kun kello on 7.00, soitetaan herätysääni.

Rinnakkaisuus (engl. parallelism)
Rinnakkaisuus tarkoittaa ohjelman suorittamista siten, että eri lausesarjoja suoritetaan samanaikaisesti. Monessa visuaalisessa ohjelmointikielessä rinnakkaisuus tulee mukaan luontevasti kun samassa ohjelmassa laaditaan monta lausesarjaa, jotka reagoivat eri tapahtumiin. Jos toinen osista reagoi klikkaukseen ja toinen näppäimen painallukseen, nämä osat voidaan suorittaa samaan aikaan.

Suunnittelu (engl. design)
Suunnittelu on osa ohjelmointia, jossa hahmotellaan, mitä ohjelman tulisi tehdä ja miten se kannattaisi toteuttaa.

Testaaminen (engl. testing)
Testaaminen on osa ohjelmointia, jossa testataan ohjelmaa ja varmistutaan siitä, että ohjelma tai sen osat (aliohjelmat) toimii suunnitellusti ja tuottaa oikeat tulokset.

Virheenkorjaus, debuggaus (engl. debugging)
Ohjelmoinnin vaihe, jossa ohjelmasta löytynyt virhe paikallistetaan ja korjataan.

Sulautettu järjestelmä (engl. embedded system)
Sulautettu järjestelmä on tiettyyn tarkoitukseen tehty laite tai laitteisto, jota ohjaa yksinkertainen tietokone ja sen suorittama ohjelma. Opetuksessa voidaan esimerkiksi ohjelmoitavien mikrokontrollerien avulla toteuttaa itsestään hämärässä syttyvät pyöräilyvalot tai älytekstiilejä.

Tulo ja lähtö (engl. I/O, input/output)
Teknisen laitteen kuten tietokoneen tai robotin "input/output" eli sisään- ja ulostuloväylät, joiden kautta tietoa siirtyy laitteesta sisään ja ulos. Esimerkiksi mikrokontrollerin I/O-liittimiin voi olla kytkettynä lämpömittari (input) ja sähkömoottori (output), ja ohjelma voi käynnistää sähkömoottorin tietyn lämpötilan havaitessaan.

Syventävät käsitteet

Operaattori (engl. operator)
Operaattori on symboli, joka koodissa suorittaa jonkin operaation. Esimerkiksi “+”-merkki tarkoittaa usein yhteenlaskua, “<”-merkki kahden arvon vertailua. Operaattori käsittelee sille annetut lausekkeet ja tuottaa paluuarvon, eli on itsessään lauseke. Esimerkiksi “(3+2)*5” sisältää operaattorit “()”, “+” ja “*”.

Vertailuoperaattori (engl. comparison operator)
Vertailuoperaattori on vertailuissa käytetty operaattori, esimerkiksi "==" (yhtä suuri), "!=" (erisuuri), ">", "<". Ehtolauseissa vertailuoperaattoreita käytetään päätöksen teon apuna. Voidaan esimerkiksi verrata muuttujan arvoa vakion arvoon ja haarautua koodissa sen mukaan onko muuttujan arvo suurempi vai pienempi.

Boolen operaattori (engl. boolean operator)
Boolen operaattoreilla tehdään loogisia päätelmiä: ja, tai, ei. Esimerkiksi “hinta<10 and rahaa>hinta” voisi kertoa, kannattaako tuote ostaa.

Aritmeettinen operaattori (engl. arithmetic operator)
Suorittaa laskutoimituksen. Tyypillisiä operaattoreita ovat +, -, *, /, % sekä sulkeet laskujärjestyksen muuttamiseksi.

Sijoitusoperaattori (engl. assignment operator)
Sijoitusoperaattori tallentaa sille annetun lausekkeen arvon sille annettuun nimettyyn muuttujaan. Monissa kielissä sijoitusoperaattori on yhtäsuuruusmerkki. Esimerkiksi “pinta_ala = korkeus * leveys” tai “pisteet = pisteet+1”.

Muuttuja (engl. variable)
Muuttuja tarkoittaa nimettyä tietovarastoa. Muuttujaan tallennettu tieto voi olla esimerkiksi tekstiä, numeroita tai kuva. Esimerkiksi tietokonepelin pisteet voidaan tallentaa nimettyyn muuttujaan "pelaajan_pisteet", jonka arvo muuttuu pelin aikana.

Rekursio (engl. recursion)
Itse itseään kutsuva funktio on rekursiivinen funktio. Rekursion avulla voidaan toteuttaa silmukoita tai ratkaista ongelmia paloissa identifioimalla ratkaisun alkeistapaukset ja jatkamalla ratkaisun etsimistä “hajoita ja hallitse” -menetelmällä. Esimerkiksi haettaessa yhtä esinettä kasasta voidaan kasa jakaa kahteen osaan yhä uudelleen, rekursiivisesti jatkaen kahtiajakamista, kunnes haluttu esine löytyy tai kasaa ei enää voida jakaa pienempiin osiin.

Ohjelmisto (engl. software)
Ohjelmisto on useista tietokoneohjelmista, niiden käyttämistä tiedostoista ja niihin liittyvästä dokumentaatiosta muodostuva kokonaisuus.

Laitteisto (engl. hardware)
Tietokone tai tietokoneen sisältävä laite, joka kykenee suorittamaan ohjelmia. Ohjelmisto määrää, mitä laitteisto tekee.

Täydentävät käsitteet

Lauseke (engl. expression)
Lauseet koostuvat lausekkeista. Lauseke on suoritettava laskutoimitus tai muu operaatio, jonka tuloksena on jokin arvo, jota lauseessa hyödynnetään. Esimerkiksi kahden arvon vertailu (onko hinta alle 10 vai ei?) on lauseke, jota voidaan hyödyntää vaikka ehtorakenteessa. Vertaa matematiikan termeihin lause ja lauseke, sekä äidinkielen termeihin virke, lause ja lauseke.

Aliohjelma, proseduuri (engl. procedure)
Nimetty lausesarja, joka suoritetaan sitä kutsuttaessa. Kutsun yhteydessä voidaan mahdollisesti välittää aliohjelmalle parametreja. Aliohjelmia käytetään, kun samaa lausesarjaa tarvitaan eri kohdissa ohjelmaa, jotta lausesarjoja ei tarvitse kirjoittaa useampaan kertaan, vaan riittää aliohjelman kutsuminen. Aliohjelman kutsu on lause.

Funktio (engl. function)
Funktio on aliohjelma, joka palauttaa valmistuttuaan jonkin arvon. Funktion avulla voidaan toteuttaa abstraktio, ratkaista ongelma yleisessä muodossa. Funktion kutsu on lauseke. Funktion tuottaman arvon tulisi riippua vain sille annetuista parametreista. Esimerkiksi funktio voi laskea suorakaiteen pinta-alan tai tuotteen alennetun hinnan.

Argumentti/parametri (engl. argument/parameter)
Tieto/tiedot, jotka välitetään aliohjelmalle sitä kutsuttaessa.

Syntaksi (engl. syntax)
Ohjelmointikielen tapa kirjoittaa ja esittää suoritettava koodi. Vertaa esimerkiksi kielen oikeinkirjoitussäännöt.

Imperatiivinen ohjelmointi (engl. imperative programming)
Yleinen ohjelmointisuuntaus. Ohjelman tila on tallessa muuttujissa, joita koodi muuttaa sijoitusoperaattorien sekä toisto- ja ehtorakenteiden avulla. Ohjelman suoritus etenee järjestyksessä ja muistuttaa läheisesti tietokoneen fyysistä toimintalogiikkaa. Ohjelmointityyli soveltuu hyvin laitteistoläheiseen ohjelmointiin. Imperatiivisen ohjelmoinnin alalajeja ovat proseduraalinen sekä oliohjelmointi.

Funktionaalinen ohjelmointi (engl. functional programming):
Ohjelmointisuuntaus, jossa ohjelma rakennetaan kirjoittamalla funktioita ja yhdistelemällä funktioita suuremmiksi kokonaisuuksiksi. Puhtaat funktiot tuottavat aina saman tuloksen samoilla parametrien arvoilla, mikä helpottaa ongelman ratkaisemista osissa sekä ratkaisun testaamista. Käyttää esimerkiksi rekursiota toiston toteuttamiseen.

Sivuvaikutukset (engl. side effect):
Puhtaan funktion toiminnan ulkopuolella tapahtuvaa toimintaa. Esim. muuttujan arvon muuttaminen sijoitusoperaattorilla, tiedoston lukeminen tai kirjoittaminen, näytöllä olevan kuvan päivittäminen, äänen tuottaminen tai robotin moottorin ohjaaminen.