6. Grafički zapis algoritma
Algoritmi:
Algoritam je konačan uređen niz precizno formulisanih koraka ili pravila kojima se rešava jedan problem ili čitava klasa problema.
Algoritam može biti napisan na jeziku ljudske komunikacije, ali može nastati problem kod složenijih problema gde bi takav algoritam postao težak za tumačenje.
Najčešći način za opisivanje algoritma je neka od grafičkih tehnika za zapis algoritma - npr. standardni dijagrami toka.
Dijagrami toka za opis nekog algoritamskog koraka koriste grafičke simbole u obliku raznih geometrijskih figura koje su međusobno povezane orijentisanim linijama. Svaka forma određuje osnovnu funkciju, a unutar svake figure upisuje se tekst kojim se potpuno opisuje taj algoritamski korak. Grafički simboli koji se u praksi najčešće koriste su:
![]() |
Ovo je simbol za granično mesto. Koristi se za označavanje graničnih mesta u programu: početak (start), kraj (end) ili tačke prekida unutar programa (stop). Početak nema predhodnika, a kraj i prekid nemaju sledbenika. |
![]() |
Ovo je simbol za obradu. Njime se prikazuju sve vrste obrada, a konkretan zakon obrade se upisuje unutar simbola i to mogu biti alritmetičke ili logičke operacije, prenos podataka, dodela vrednosti i sl. Svaki radni blok ima jednog ili više predhodnika i jednog sledbenika |
![]() |
Ovo je simbol za ulaz-izlaz. On simbolizuje operaciju ulaza tj. unos podatka u operativnu memoriju i izlaza tj. pisanja podataka iz memorije na spoljni nosilac podataka (papir, monitor, disk i sl.). |
![]() |
Ovo je simbol za odluku, uslovni prelaz, selekciju. Ovo je jedini korak koji ima više od jednog izlaza. Ovim blokom se određuje dalji tok programa. Ako je ispunjen uslov kontrola se predaje bloku B1, a ako uslov nije ispunjen izvršiće se blok B2. |
![]() |
Ovo su linije odvijanja programa. Povezuju pojedine algoritamske korake i pokazuju kojem se algoritamskom koraku predaje upravljanje. |
Na primer:

Prikaz algoritma u obliku dijagrama toka ima određene prednosti:
· Ovako prikazan algoritam je pregledan i lako čitljiv
· Daje jasne i pregledne veze između detalja i celine
· Znatno olakšava testiranje, otkrivanje i lociranje grešaka, pa samim tim i njihovo otklanjanje
· Omogućava lako menjanje algoritma, izmenu uslova kao i doradu i dopunu
· Dijagram toka ne zavisi od narednih faza u rešavanju problema, tj. od njegovog kasnijeg korišćenja.
· Dijagram toka je nezavisan od vrste računara i programskih jezika na kojima će biti realizovan
· Dijagram toka je čitljiv i za ljude koji nemaju nikakva znanja o programiranju
Algoritamske strukture:
-
Linijski algoritmi su oni kod kojih se naredbe izvršavaju sekvencijalno jedna za drugom.
-
Razgranati algoritmi su oni kod kojih se u zavisnosti od ispunjenosti uslova program nastavlja jednom od dve grane
-
Ciklični algoritmi sadrže niz instrukcija koje se ponavljaju više puta.
Algoritam proizvoljne složenosti može biti predstavljen kombinacijom tri osnovne strukture: linijske, razgranate i cikličke
Linijskim se nazivaju algoritmi kod kojih se naredbe (ili instrukcije) izvršavaju sekvencijalno jedna za drugom.
Razgranatim se nazivaju algoritmi kod kojih se u zavisnosti od vrednosti logičkih uslova izvršavanje nastavlja jednom od dve grane.
Cikličkim se nazivaju algoritmi koji sadrže niz instrukcija (telo ciklusa) koje se mogu ponavljati više puta. Postoje dve vrste cikličkih algoritama koji se razlikuju po položaju tela ciklusa u odnosu na uslov.
VAŽNO:
Svaki algoritam mora ispunjavati sledeće zahteve:
definisanost - svaka instrukcija (naredba) algoritma mora biti jednoznačno definisana, ne ostavljajući mesta za proizvoljna i nejasna tumačenja
determinisanost - vrednosti koje se dobijaju u bilo kom (ne početnom) trenutku, jednoznačno su određene vrednostima iz prethodnog trenutka
izvršivost - instrukcija u sastavu algoritma je izvršiva ako je u konačnom nizu koraka može izvršiti čovek uz upotrebu olovke i hartije.
masovnost - je zahtev da algoritam rešava što širu klasu problema, koji se razlikuju samo po ulaznim veličinama. Ulazne veličine se uzimaju iz oblasti koja se naziva "oblast primenljivosti algoritma". Na primer, umesto kreiranja algoritma koji rešava jednačinu 2x+3=0 , treba rešiti opšti slučaj: ax + b =0.
rezultativnost - algoritam mora u konačnom nizu koraka dati tražene rezultate za sve slučajeve za koje je kreiran.
U prevodu:
Da bi neko rešenje zaslužilo naziv algoritma potrebno je da su ispunjeni sledeći uslovi:
* Nakon izvođenja svakog koraka, zna se koji korak bi trebalo izvesti kao sledeći
* Postoji jasno definisana početna tačka izvođenja, te jedan ili više mogućih završetaka
* Opisani postupak rešavanja je konačan
* Predloženi postupak rešavanja je jednoznačan (determinisan)
* Algoritam mora uvek dovesti do nekog rešenja
* Za date početne uslove algoritem mora uvek osigurati iste rezultate, inače njegovo izvođenje ne bi imalo smisla
* Algoritam bi se morao primeniti na čitavu klasu srodnih problema sa različitim ulaznim veličinama.




