Mis on algoritm?

Enne programmi koostamist mingi ülesande lahendamiseks arvutis on oluline omada täielikku ettekujutust sellest, millist ülesannet me lahendame. Oluline on koostada ülesande lahendamise plaan.

Ülesande lahendamine tähendab üldjuhul teatud tegevuste teatud järjekorras täitmist. Algoritm määrab ära:

  • mida on vaja teha ülesande lahendamiseks
  • millises järjekorras neid asju tegema peab

Wikipedia ütleb:

Algoritm on samm-sammuline tegevusjuhis, juhend, eeskiri mingi tegevuse sooritamiseks või eesmärgi saavutamiseks. Kõige sagedamini kasutatakse seda terminit matemaatilise ülesande lahendamiseks mõeldud eeskirja kohta. Algoritmi esitust mingis formaalses keeles, tavaliselt programmeerimiskeeles või masinakoodis, nimetatakse programmiks.

Sõna algoritm pärineb araabia matemaatiku Abu Ja'far Muhammad ibn Musa Al-Khwarizmi
 nimest, kes elas Bagdadis umbes 780 kuni 850

Algoritmi võib kirjeldada ka kui:
  • Programmeerimises – ülesannete lahendamise eeskirjade koostamine arvutile.
  • Algoritmiks nimetatakse eeskirjade kogumit, mis rakendatuna teatud lähteandmetele viib etteantud järjekorras sooritatud operatsioonide teostamise määratud tulemuseni.
Lihtsamate algoritmide näiteks võib tuua: täisarvude liitmine, lahutamine, korrutamine, jagamine jne.

Algoritmide põhiomadused:
  • ühesus - ühesuguste lähteandmete korral peab algoritmi täitmine viima ühesugustele lõpptulemustele. Algoritmi täitmise tulemus ei tohi sõltuda täitjast.
  • lõplikkus - lõpliku arvu sammude järel peab algoritm viima lõpptulemusele
  • universaalsus - algoritm peab olema mõeldud kõikide antud
  • klassi ülessannete lahendamiseks

Algoritmide tüübid
  • Lineaarne algoritm - algoritmi sammude täitmise järjekord ei sõltu vahetulemustest
  • Hargnev algoritm - sammude täitmise järjekord sõltub mingist tingimusest või vahetulemusest
  • Tsükliline algoritm - algoritmi mingit osa täidetakse korduvalt

Iga ülesande puhul võib algortimi koostamise võib jagada:
  • Ülesande püstitus - määratletakse kasutada olevad algandmed ning soovitav lõpptulemus; ülesande püstituse korrektsusest sõltub ülesande lahendamise edukus
  • Ülesande analüüs - ülesande püstituse täpsustamine, sobiva lahendusmeetodi valimine
  • Algoritmi koostamine algoritmkeeles - koostatakse üldisem algoritm, tuues ära vaid üldisemad tegevused; edaspidi täpsustatakse algoritmi, kuni on saadud korrektne algoritm
  • Algoritmi kontrollimine - tänapäevani puudub algoritmi õigsuse üle otsustamiseks hea meetod. Enimkasutatavam on testimine, st algoritmi täidetakse selliste algandmete korral, mille puhul on tulemus ette teada
Algoritmide esitusviisid:

Sammalgoritm - kogu tegevus jaotatakse teatud lihtoperatsioonideks, mis nummerdatakse ja kirjutatakse üksteise järele, eeldades, et sammud täidetakse numbrite järjekorras

Näide: tahvli pesemise algoritm

1. leia tahvel
2. leia lapp
3. võta lapp
4. nühi tahvlit lapiga

Skeemalgoritm - algoritmi esitusviis, mille korral samme ei nummerdata, kuid iga sammu kirjutamist alustatakse uuelt realt. Kokkukuuluvad st. järjestikku täidetavad read ühendatakse vasakult suure nurksuluga üheks skeemiks

Plokkskeem - algoritmi graafiline kujutamine plokkide ja neid ühendavate noolte abil.

Elemendid:
  • Algoritmi algus ja lõpp
  • Sisestus/väljastusplokk
  • Töötlusplokk
  • Kontrollplokk


Struktuurprogrammeerimise jaoks:
JSP - Jackson Structured Programming
JSD - Jackson System Development

  • Modelleerimine
  • Võrk
  • Teostamine

Autor: Michael A. Jackson


Objekt-orienteeritud programeerimise jaoks:
Unified Modelling language UML