wiki:algoritmi
Last modified 9 years ago Last modified on 2009-07-14 09:38:23

Yleistä

Algoritmi on tarkasti määritelty vaihesarja, jota seuraamalla voidaan ratkaista tietty ongelma. Algoritmissa on äärellinen määrä vaiheita. Algoritmi ei voi olla päättymätön, vaan sen täytyy päättyä joskus.

Eräs alakoulussa opittu algoritmi on jakokulmassa jakaminen (muistathan: jaa, kerro, vähennä, pudota). Siinä annettuja ohjeita seuraamalla voidaan jakaa kaksi kokonaislukua keskenään. Myös polynomeja voidaan jakaa jakokulmassa.

Algoritmit eivät liity pelkästään tietokoneisiin.

  • Esim. keittokirja on itse asiassa kokoelma algoritmeja, joita seuraamalla kokkaamisen pitäisi onnistua.
  • Vastaavasti koottavan kirjahyllyn mukana pitäisi tulla algoritmi, jonka avulla palasista saa koottua toimivan kirjahyllyn. Käytännössä homma voi kuitenkin olla vaikeampaa kuin äkkinäinen luulisi.

Algoritmin ei tarvitse selittää miksi, vaan ainoastaan miten ongelma ratkaistaan.

Tietokoneohjelma esittää tietyn algoritmin tietokoneen ymmärtämässä muodossa.

  • Koska tietokone ei ymmärrä ihmisten käyttämää kieltä, ei esim. keittokirjaa sellaisenaan voi naputtaa koneeseen ja tehdä kokkausrobottia.
  • Tietokone ei ymmärrä mitään siitä, mitä siihen syötetyllä ohjelmalla pyritään tekemään.
  • Koska tietokone on "tyhmä", tietokoneohjelmassa algoritmin ohjeet täytyy selittää rautalangasta vääntäen erittäin tarkasti.
  • Suurin osa tietokoneohjelmien virheistä tulee joko siitä, ettei algoritmia ole esitetty tietokoneelle oikein, tai siitä, että koko algoritmi on alkujaankin ollut päin mäntyä.
  • Yleensä algoritmia ei heti alkuun esitetä tietokonekielellä (nollina ja ykkösinä), vaan se kirjoitetaan ensin sopivaan ihmisen luettavaan "välimuotoon" jotain ohjelmointikieltä käyttäen (tällä kurssilla C#).
  • Tietokone osaa sitten tehdä ohjelmointikielellä tehdystä ohjelmasta sopivan 0- ja 1-jonon.
  • Ohjelmointikielellä tehty ohjelma on siis sekä ihmisen että koneen "ymmärtämässä" muodossa.

Yksittäisen olion metodin toteutuksessa tarvitaan algoritmeja!

Yksinkertainen esimerkki

Tietokone ei käynnisty

Sähköjohto kytketty?

Kyllä

Sähköjohto rikki?

Kyllä

Osta uusi sähköjohto

Ei

Osta uusi tietokone

Ei

Kytke sähköjohto