teisipäev, 12. september 2017

Algoritmid ja plokkskeemid

Programm on enamasti teatud kindlate tegevuste jada, mis viib mingile lõpptulemusele (programm teeb midagi).

Programmeerimine on selle programmi kirjutamine.

Ülesande lahendamiseks vajalikku plaani, mida järgides on võimalik jõuda tulemuseni, nimetatakse algoritmiks. NB! Lahenduseni jõudmiseks on sageli mitu teed!

Algoritmi kohta öeldakse tihti ka lihtsalt protseduur.

Algoritmil on neli olulist omadust:
  1. Algoritmi iga samm peab olema täpne, st olema ühetähenduslik.
  2. Algoritm peab olema lõplik. Vastasel juhul me ei saa probleemile lahendust.
  3. Algoritm peab olema efektiivne, st ta peab andma probleemile korrektse vastuse.
  4. Algoritm peab olema üldine, st ta peab lahendama ülesande iga eksemplari. Näiteks ringi pindala leidmise algoritm peab sobima kõigi võimalike algandmete jaoks.

Allikas: https://courses.cs.ut.ee/MTAT.03.100/2012_fall/uploads/opik/04_algoritmid.html

Üks algoritmi näide (pannkookide valmistamine):
1. võta kauss
2. võta 3 muna
3. klopi munad lahti
4. lisa 3 supilusikatäit jahu
5. lisa maitse järgi suhkrut
6. lisa veidi soola
7. sega
8. lisa piima, kuni segu on piisavalt vedel
9. pane pann tulele
10. lisa pannile õli ja oota, kuni õli on kuum
11. võta kulbiga pannkoogitainast
12. vala tainas pannile
13. oota kuni üks pool on küpsenud kuldseks
14. keera pannkook ümber
15. oota, kuni teine pool on küpsenud kuldseks
16. tõsta pannkook pannilt taldrikule

Ülesanne 1
  1. Logi Google Drive keskkonda (kooli e-postiaadress ja parool!), loo sinna kaust nimega "Programmeerimine" ja jaga seda õpetajaga (vilve.roosioks@g.viimsi.edu.ee).
    • JUHEND kausta loomiseks ja jagamiseks
  2. Ava kaust ning loo sinna uus dokument (UUS -> Google'i dokumendid).
  3. Pane dokumenti kirja üks algoritm. Näited: mõni retsept, juhend kuidas jõuad kodust kooli või koolist koju, kuidas õpid inglise keele sõnud vms. Nummerda tegevused, et algoritmi oleks lihtsam jälgida (vt pannkoogi küpsetamise näidet eespool!).


Algoritme pannakse sageli kirja plokkskeemidena. Plokkskeemide komponendid võib lühidalt kokku võtta nii (vt allolevat pilti):

_images/l04_fig9.png
Pilt: https://courses.cs.ut.ee/MTAT.03.100/2012_fall/uploads/opik/_images/l04_fig9.png
Igast plokist saab väljuda üks nool, välja arvatud tingimusest (Otsustuse plokk), mille puhul väljub kaks noolt vastavalt pealkirjadega "jah" ja "ei", samuti ei välju lõpust ühtki noolt, siseneda võib rohkem nooli.

Eelpool toodud algoritm võiks plokkskeemina välja näha selline:

Plokkskeemide joonistamiseks on sobiv näiteks:


Veel mõni näide plokkskeemist (jõuluvana): http://progetiiger.cs.ut.ee/sites/default/files/Python/algoritm_jouluvana.png
(enne kooli): http://www.gliffy.com/go/publish/image/8913231/L.png

Ülesanne 2 - Pane ülesande 1 algoritm plokkskeemina kirja!
  1. Vali sobiv keskkond!
  2. Proovi ülesandes 1 kirja pandud algoritm plokkskeemiks kokku panna. Mõtle, milliseid plokke milliste tegevuste kirjeldamiseks võiks kasutada!
  3. Salvesta loodud plokkskeem Google Drive, ülesandes 1 loodud kausta "Programmeerimine".