Matematiikan soveltava projekti

Algoritmit

  • Algoritmi on joukko toimenpiteitä (käskyjä), joilla jokin annettu tehtävä saadaan suoritettua.
  • Toimenpiteissä edetään askel askeleelta.
  • Toimenpiteiden tulisivat olla mahdollisimman selkeitä ja yksiselitteisiä.
  • Toisin sanoen, kannattaa pitää huolta siitä, ettei annettuja käskyjä ole mahdollista tulkita väärin.

Miten löytää perille?

https://peda.net/id/16ad2e403bcJoonaksella on syntymäpäiväjuhlat lauantaina 28.5 klo 14 osoitteessa Meikäläisentie 16.

Miksi tämä ei ole toimiva algoritmi?

  • Lauantaina lounaan jälkeen
  • Kävele puiston läpi
  • Joonas asuu kioskin lähellä

Miten algoritmistä voisi saada toimivamman? Kirjoita oma ehdotus!

Haluat käydä moikkaamassa Annaa. Anna asuu osoitteessa Teikäläisentie 18.

Miksi tämä ei ole toimiva algoritmi?

  • Kävele samaa tietä suoraan eteenpäin
  • Parin talon jälkeen olet perillä

Miten algoritmistä voisi saada toimivamman? Kirjoita oma ehdotus!

Piirustusalgoritmi 1

  1. Piirrä neliö paperin alaosalle.

  2. Väritä neliö ruskeaksi.

  3. Piirrä neliötä isompi tasasivuinen kolmio neliön päälle siten, että reunat koskettavat toisiaan ja kuviot ovat keskilinjassa.

  4. Piirrä hieman pienempi tasasivuinen kolmio edellisen kolmion yläpuolelle siten, että edellisen kolmion kärki koskettaa ylemmän kolmion kantaa ja kuviot ovat keskilinjassa.

  5. Piirrä hieman pienempi tasasivuinen kolmio edellisen kolmion yläpuolelle siten, että edellisen kolmion kärki koskettaa ylemmän kolmion kantaa ja kuviot ovat keskilinjassa.

  6. Piirrä hieman pienempi tasasivuinen kolmio edellisen kolmion yläpuolelle siten, että edellisen kolmion kärki koskettaa ylemmän kolmion kantaa ja kuviot ovat keskilinjassa.

  7. Väritä kaikki kolmiot vihreiksi.

Ota lopuksi kuva piirustuksestasi.

Voiko tästä ohjeesta tehdä lyhyemmän, miten?

Piirustusalgoritmi 2

  1. Piirrä ympyrä paperin alaosalle.

  2. Piirrä hieman pienempi ympyrä edellisen ympyrän yläpuolelle siten, että ympyröiden reunat koskettavat toisiaan ja ovat keskilinjassa.

  3. Piirrä vielä pienempi ympyrä edellisen ympyrän yläpuolelle siten, että ympyröiden reunat koskettavat toisiaan ja ovat keskilinjassa.

  4. Piirrä pienintä ympyrää pienempi neliö pienimmän ympyrän yläpuolelle siten, että ympyrän ja neliön reunat koskettavat toisiaan ja ovat keskilinjassa.

  5. Väritä neliö mustaksi.

  6. Piirrä paksu vaakatasossa oleva viiva pienimmän ympyrän ja neliön väliin. Viivan tulisi olla neliön sivua pidempi.

  7. Piirrä pieni, ylösalaisin oleva tasasivuinen kolmio pienimmän ympyrän sisälle, aivan keskelle.

  8. Piirrä pienimmän ympyrän sisälle ja kolmion alle keskilinjassa oleva, todella pieni puolikas ympyrä.

  9. Piirrä kaksi toisiinsa nähden vaakatasossa olevaa pistettä pienimmän ympyrän sisälle, kolmion yläpuolelle.

  10. Piirrä kaksi keskilinjassa ja toisiinsa nähden pystytasossa olevaa pistettä keskimmäisen ympyrän sisälle.

  11. Piirrä kolme keskilinjassa ja toisiinsa nähden pystytasossa olevaa pistettä alimman ympyrän sisälle.

  12. Piirrä vaakatasossa oleva viiva, jonka alkupiste on keskimmäisen ympyrän vasemman puolen reunassa.

  13. Piirrä vaakatasossa oleva viiva, jonka alkupiste on keskimmäisen ympyrän oikean puolen reunassa.

 

Ota lopuksi kuva piirustuksestasi.

Voiko tästä ohjeesta tehdä lyhyemmän, miten?

Koodin lyhentäminen

  • Määritellään käsky (työvaihe), jolle annetaan täsmällinen nimitys.
  • Määriteltyä työvaihetta ei tarvitse määritellä uudestaan ja koodaaja säästää aikaa ja vaivaa. :)
  • Pidempi algoritmi voidaan valmiiksi määriteltyjen työvaiheiden ansiosta kirjoittaa näin ollen paljon lyhyemmin.
  • Jos jokin työvaihe toistuu, jokaista vaihetta ei myöskään tarvitse kirjoittaa erikseen (ks. esimerkki).

Esimerkki:

Piirrä kolme ympyrää siten, että ympyröiden reunat koskettavat toisiaan ja muodostavat "kolmion", työvaiheen nimi = (ympyräkolmio)

:left small

 

 

 


Piirrä neljä kolmiota siten, että kolmiot muodostavat keskenään neliön, työvaiheen nimi = (kolmioneliö)

:left small

 

 

 

 

Algoritmi:
  1. Piirrä (ympyräkolmio) (kolmioneliö):n päälle siten, että kuvioiden reunat koskettavat toisiaan.
  2. Toista edellinen työvaihe (kolmioneliö):n toisillakin sivuilla, eli yhteensä kolme kertaa.

:left medium










Tee oma piirustusalgoritmi!

  • Tee ensin yksinkertainen mallipiirustus.

  • Piirustuksen tulisi sisältää vain selkeitä geometrisiä kuvioita (neliöitä, (tasasivuisia) kolmioita, ympyröitä ja suoria viivoja).

  • Mieti piirustuksen vaiheita ja laadi samanlainen ohje kuin edellisissä tehtävissä. Käteviä termejä ovat keskilinja, pysty- ja vaakataso.

  • Mieti tarkkaan, voitko lyhentää joitakin työvaiheita piirustusalgoritmissäsi. Onko toistuvia kuvioita tai työvaiheita?

  • Palauta piirustusohjeesi palautuslaatikkoon.

  • Kun kaikki ovat palauttaneet tehtävänsä, saat toisen oppilaan kirjoittaman piirustusohjeen.

  • Tehtävänäsi on piirtää kuva ohjeiden mukaisesti ja antaa palautetta ohjeen kirjoittajalle.

Ihminen vs. tietokone

Ihminen kykenee tulkitsemaan epätarkkoja ohjeita ja tekemään omia ratkaisuja. Täytyy kuitenkin varautua siihen, että lopputulokset eroavat toisistaan. Kuvittele tilannetta, jossa opettaja antaa kaikille oppilaille samat ohjeet kuvistunnilla. Valmiit piirustukset eroavat kuitenkin toisistaan, koska kaikkia työvaiheita ei ole tarkkaan määritelty ja useimmiten oppilas voi tehdä omia valintoja esimerkiksi värien käytön suhteen. Lopputuloksissa, eli piirustuksissa, on luultavasti paljon samaa, mutta kahta täysin samanlaista taideteosta ei löydy. Arkitilanteissa annetaan monesti tulkinnanvaraisia ohjeita ja oletetaan ohjeiden vaastanottajan pystyvän ratkaisemaan tilanteen parhaaksi katsomallaan tavalla.

Antaessa ohjeita tietokoneelle joutuu olemaan todella, todella täsmällinen. Tietokone ei tee omia tulkintoja, vaan lopputuloksesta tulee todennäköisimmin virheellinen tulkinnanvaraisia ohjeita antaessa. Pahimmassa tapauksessa lopputulosta ei ole ollenkaan, koska tietokone "menee solmuun tai jumiin" (error). Tietokone voi tehdä vain sen, mitä se on koodattu tekemään. Ohjeen antajan pitää olla tietoinen siitä, mitä tietokone voi tehdä ja millä tavalla ohje pitää muotoilla ymmärrettävään muotoon. Tämän sivun piirustusohjeet eivät kävisi sellaisinaan tietokoneelle, vaan kaipaisivat tarkat mitat kaikista työvaiheista. Tietokone ei osaa tulkita mitä "hieman pienempi" käytännössä tarkoittaa ja kaipaa täsmällisiä ohjeita.

Ihmisillä ja tietokoneilla on kuitenkin yksi yhteinen piirre. Kumpikaan ei voi tietää miten juuri SINÄ olet tulkinnut tai ajatellut jotain ja tarvitsee todella tarkkoja ohjeita kyetäkseen toteuttamaan kaikki käskyt samalla tavalla kuin itse toimisit!

BONUS: Vuokaavio

Vuokaavio esittää algoritmia tai prosessia, kertoen vaiheet nuolilla sekä erityyppisillä muodoilla.



Vuokaavion (flowchart) avulla on helpompi nähdä prosessin vaiheita ja millaisia ongelmia siinä mahdollisesti on. Kysymysvaiheessa (oranssi) vastaus on aina joko kyllä tai ei. Tavoitteena on aina päästä alusta loppuun.

Tee oma helppo vuokaavio jostain arkipäivän toiminnasta!