Algoritminen ajattelu
Mitä on algoritminen ajattelu?
Matematiikan päättöarvioinnin kriteerit hyvälle osaamiselle (arvosanalle 8) oppimäärän päättyessä
T20 ohjata oppilasta kehittämään algoritmista ajatteluaan sekä taitojaan soveltaa matematiikkaa ja ohjelmointia ongelmien ratkaisemiseen (OPS 2016, 379).
Algoritminen ajattelu ja ohjelmointitaidot (OPS 2016, 379).
Oppilas osaa soveltaa algoritmisen ajattelun periaatteita ja osaa ohjelmoida yksinkertaisia ohjelmia (OPS 2016, 379).
Algoritmi on yksiselitteinen kuvaus tai ohje, jota seuraamalla saadaan selville miten tietty ongelma ratkaistaan. Algoritmissa toiminnot ovat yksiselitteisiä ja tietyssä järjestyksessä. Algoritmi on alkujaan metematiikan käsite. Nykyisin käsite liittyy ennen kaikkea tietotekniikkaan.
Algoritmisella ajattelulla tarkoitetaan ongelmien purkamista osiin, toiminnan kaavojen tunnistamista ja algoritmien muodostamista sekä toimintojen automatisointia.
Ongelman purkaminen osiin on oleellinen taito kaikilla elämän osa-alueilla, ei vain ohjelmoinnin opettamisessa. Tyypillisiä esimerkkejä ongelman purkamisesta osiin ovat ajo-ohjeiden antaminen toiselle ja hyvän ruokareseptin kirjoittaminen ylös.
Kaavojen tunnistamisessa on kyse toistuvien toimintatapojen havaitsemisessa, jotka auttavat arkipäiväisten ongelmien ratkaisemisessa. Olemme oppineet miten kertolaskut lasketaan. Jos seuraamme oppimiamme sääntöjä täsmällisesti, osaamme vastata mihin takansa kertolaskuun.
Algoritmien eli toimintaohjeiden luomisessa on kyse jonkin tehtävän suorittamiseksi tarvittavien toimenpiteiden kuvaamisesta. Hyvänä esimerkkinä voidaan pitää ruokareseptin laatimista. Reseptin luoja kirjoittaa ylös tietyn ruoan valmistukseen tarvittavat ainekset, niiden määrän ja suhteet sekä ohjeen ainesten käyttämiseksi josta lopulta syntyy haluttu ruoka-annos. Kyseistä toimenpidettä voidaan kutsua ruoan valmistukseen liittyvän algoritmin kuvaukseksi.
Toimintojen automatisoinnissa on kyse ongelmien ratkaisujen yleistämisestä. Kertolaskussa ei kannata tyytyä vain tiettyjen lukujen kertomiseen, vaan etsitään yleinen laskentakaava kaikkin kertolaskuihin. Kun kerran olemme oppineet kertolaskun algoritmin ei meidän tarvitse opetella sitä aina uusien numeroiden kohdalla uudelleen.
Teoria
KEOSissa on esitelty seuraavat asiat (suluissa luokat, joille aihealueen opettaminen sopii hyvin):
- Totuusarvo (1-6)
- Ehtolause (1-6)
- Muuttuja (3-6)
- Silmukka (3-6)
- Luokka (7-9)
- Olio (7-9)
Jotkin asiat ovat joko tosia (true) tai epätosia (false). Kuvitellaan, että meillä on punainen kumipallo. Siitä voisi keksiä seuraavanlaisia väittämiä, jotka ovat joko tosia tai epätosia:
Se on punainen. Tosi
Se on sininen. Epätosi
Se on pyöreä. Tosi
Se on neliskulmainen. Epätosi
Se on valmistettu metallista. Epätosi
Se on valmistettu kumista. Tosi
Samanlaisen arvon voi antaa myös abstrakteillekin asioille. Onko kahvi loppunut? Tosi vai epätosi. Onko käyttäjä opettaja? Tosi vai epätosi. Onko kesäloma alkanut? Tosi vai epätosi.
Ehtolause
Usein halutaan tehdä jotain sen perusteella, miten jokin asia on. Tällöin voidaan käyttää ehtolausetta. Esimerkiksi:
Jos ulkona sataa
->ota sateenvarjo
Ehtolauseissa voidaan hyvin käyttää myös totuusarvoja, ja tarvittaessa myös kertoa vaihtoehto ehdolle.
Jos kahvi loppunut == tosi
->keitä kahvia
Muutoin
->juo kahvia
Tai vaikkapa sisäkkäisiä ehtolauseita:
Jos tiskejä ei ole tiskattu == tosi
->tiskaa
Muutoin
->Jos pyykkejä ei ole pesty == tosi
-->pese pyykit
->Muutoin
-->rentoudu
Ehtolauseissa usein esiintyy myös JA ja TAI -ilmaisuja. Näillä voi olla suurtakin merkitystä, pohdi esimerkiksi seuraavien eroa:
Jos tiskit on tiskattu == tosi TAI pyykit on pesty == tosi
->rentoudu
Jos tiskit on tiskattu == tosi JA pyykit on pesty == tosi
->rentoudu
Mitäköhän ensimmäisessä tapauksessa kävisi pyykeille tai tiskeille? Voisi jäädä jompikumpi hoitamatta...
Muuttuja
Muuttuja on symboli, jolla on joku arvo. Muuttujien hyödyntäminen helpottaa uudelleenkäytettävyyttä ja ylläpidettävyyttä. Seuraava teksti ei ole kovin uudelleenkäytettävä:
Hei Erkki!
Mitä sinulle Erkki kuuluu?
Toivon mukaan sinulla Erkki on kaikki hyvin.
Nähdään Erkki sitten pian.
Jos tekstiä haluttaisiin käyttää uudelleen jonkun muun kanssa, nimi pitäisi vaihtaa aika moneen kohtaan. Mutta kun tilannesidonnaisen nimen tilalle vaihdetaan muuttuja jonka arvo asetetaan vain yhdessä paikassa, tekstin muokkaus onnistuu hetkessä:
nimi = [laita nimi tähän]
Hei nimi!
Mitä sinulle nimi kuuluu?
Toivon mukaan sinulla nimi on kaikki hyvin.
Nähdään nimi sitten pian.
Muuttujia on erilaisia. Muuttuja voi esimerkiksi olla merkkijono (kuten ylläoleva nimi), numero tai totuusarvo (tulee alla). Näitä käsitellään lisää seuraavassa osiossa.
Muuttujan voi selittää pienemmille laatikoiden avulla. Piirretään taululle laatikoita. Jokaiseen laatikkoon mahtuu vain yksi asia. Kun laatikkoon laitetaan seuraava asia, edellinen putoaa siitä ulos.
Silmukka
Silmukka sen sijaan toistaa tietyn asian monta kertaa. Kuvitellaan, että meillä on viisi perunaa jotka pitää kuoria. Kuorimisen voisi ohjeistaa seuraavasti:
kuori peruna
kuori peruna
kuori peruna
kuori peruna
kuori peruna
Mutta ehkä helpommin asian voisi ohjeistaa näin:
Toista 5 kertaa:
kuori peruna
Useissa ohjelmointikielissä voi myös ilmaista asian jotenkin näin:
Toista kunnes perunat loppuvat:
kuori peruna
Luokka
Oikeastaan melkein mitä tahansa asioita voidaan määritellä luokan kautta. Luokka tarjoaa raamit jonkin asian ominaisuuksille. Luokkia voisivat esimerkiksi olla huonekalu, kulkuneuvo ja käyttäjä.
Luokan ominaisuudet ovat varsin yleisiä. Määritellään vaikkapa, että huonekalulla on nimi, jalkojen määrä, materiaali ja väri. Kulkuneuvolla on myöskin nimi, renkaiden määrä, ja vaikkapa tieto siitä, kulkeeko kyseinen kulkuneuvo bensalla. Käyttäjällä taas voi olla esimerkiksi sellaisia tietoja kuin käyttäjätunnus, salasana, sähköposti ja syntymäpäivä.
Olio
Olio on luokan varsinainen edustaja. Luokan huonekalu pohjalta luodut oliot voisivat näyttää vaikka tältä:
nimi: tuoli
jalkojen määrä: 4
materiaali: puu
väri: ruskea
nimi: sohva
jalkojen määrä: 6
materiaali: nahka
väri: musta
Luokan kulkuneuvo pohjalta voisi luoda vaikka seuraavanlaisia olioita:
nimi: pyörä
renkaiden määrä: 2
kulkee bensalla: epätosi
nimi: auto
renkaiden määrä: 4
kulkee bensalla: tosi
Esimerkki käyttäjän pohjalta luodusta oliosta:
käyttäjätunnus: erkkinen
salasana: salasana123
sähköposti: erkki.erkkinen@jokumail.com
syntymäpäivä: 1980-12-24
Tehtävät jotka kehittävät algoritmista ajattelua
1. Totuusarvo
Valitse suosikkilelusi ja keksi siitä väittämiä (esim. se on keltainen, se ei ole karvainen). Kaverin pitää sanoa, oliko väittämä tosi vai epätosi.
2. Ehtolause
Käytössäsi on sadevaatteet, talvitakki ja uimapuku. Minkä valitset...
-jos olet menossa uimaan?
-jos ulkona sataa?
-jos ulkona on pakkasta?
Miten seuraavat esimerkit eroavat toisistaan:
koiralla on turkki JA häntä
koiralla on turkki TAI häntä
Oppilaat voivat keksiä lisää hullunkurisia esimerkkejä.
3. Muuttuja
Sanotaan että lasi on nyt muuttuja. Lasi on aluksi tyhjä, eli arvo on 0.
Lisätään lasiin 1dl vettä. Nyt lasin arvo on 1.
Kaadetaan toinen dl vettä. Nyt lasin arvo on 2.
Kaadetaan lasista vähän vettä pois. Mikä lasin arvo on nyt? Mitataan.
4. Silmukka
Ohjeista kaverille, miten hän voi kävellä omalta pulpetiltaan luokan ovelle. Keksitkö asian, joka toistuu monta kertaa? Miten monta kertaa se toistetaan?
5. Luokka & olio
Pohdi jotakin luokkaa, esimerkiksi käyttäjää jossakin palvelussa jota käytät tai pelihahmoa jossakin pelissä. Minkälaisia ominaisuuksia sillä on? Mihin niitä käytetään? Listaa luokka, jossa ominaisuudet määritellään, sekä esimerkkiolio, jossa ominaisuuksilla on jokin arvo.