11,12 - Algoritmi sa razgranatom strukturom
Razgranata algoritamska struktura ili selekcija omogućava izbor jedne putanje kojom će se nastaviti izvršavanje operacija. Izbor putanje vrši se na osnovu uslova koji je definisan kao logički izraz.
if - struktura
| if struktura: | ![]() |
| if-else struktura: | ![]() |
Logički izrazi kao rešenje mogu imati tačno ili nije tačno, odnosno DA ili NE.
Na primer:
|
uslov |
šta znači: |
| A == B | Da li je A JEDNAKO B ? |
| A > B | Da li je A veće od B ? |
| A < B | Da li je A manje od B ? |
| A >= B | Da li je A veće ili jednako B ? |
| A <= B | Da li je A manje ili jednako B ? |
| A != B | Da li je A RAZLIČITO od B? |
U nastavku je sve ovo detaljnije objašnjeno:
U životu smo svakodnevno prinuđeni da donosimo odluke i na osnovu tih odluka sprovodimo određene akcije. Primeri algoritamskih struktura bi mogli biti:
- Odlazak u školu ili na posao. Ispituje se istinitost tvrdnje "Danas je radni dan", i na osnovu toga se izvršavaju određene obaveze, ili se ako je vikend, odmaramo.
- Nošenje kišobrana. Ispituje se istinitost tvrdnje "Danas je lepo vreme i vremenska prognoza je povoljna". Na osnovu toga se donosi odluka o obuvanju odgovarajuće obuće i nošenju kišobrana.
- Kupovina. Ispituje se istinitost tvrdnje "Imam dovoljno novaca i ovaj predmet mi je zaista potreban". Na osnovu toga postajemo novopečeni vlasnici neke stvari ili ne.
Algoritmi sa razgranatom strukturom su takvi da se svaki algoritamski korak izvršava najviše jedanput. To znači da postoje algoritamski koraci koji se ne izvrše. U ovom slučaju mora da postoji bar jedan uslovni korak koji omogućava grananje algoritma.
Na sledećoj slici su prikazani elemanti koji se koriste kod algoritama sa razgranatom strukturom:
![]() |
1. Početak ili kraj algoritma |
![]() |
2. Ulaz ili izlaz |
![]() |
3. Obrada |
![]() |
4. Uslov ili selekcija |
Kod prostih linijskih algoritamskih struktura prelazak na sledeći korak ne zavisi od rezultata obrade u ma kom algoritamskom koraku. Međutim, u praksi tok računanja najčešće zavisi od međurezultata dobijenih u toku računanja ili od konkretnih vrednosti nekih polaznih podataka. To znači da u algoritmima mora postojati algoritamski korak u kojem se donosi odluka o daljem toku računskog procesa, tj o prenošenju upravljanja na jedan ili drugi algoritamski korak, a to su blokovi za selekciju (blokovi gde se ispituje da li je neki uslov ispunjen ili ne). Blokovi selekcije imaju za cilj da ispitaju ispunjenost nekog uslova i da u zavisnosti od rezultata ovog ispitivanja odaberu za izvršavanje samo jednu od dve, a ponekad jednu od više algoritamskih blokova. Tako dolazimo do algoritama sa razgranatom strukturom.
Znači da naglasimo još jednom:
Razgranata algoritmska struktura je ona kod koje se svaki korak izvršava jednom ili nijednom.
Stvar se u tome da, kada zadatak zahteva da se neke vrednosti unesu u promenljive, jednostavno, ne možemo da znamo koje će to vrednosti biti. Videli smo da se u slučaju linijskih algoritama na osnovu unetih vrednosti dolazi do rezultata prolazeći korak po korak od početka do kraja. Međutim, u mnogo većem broju slučajeva, problem ne možemo rešiti jednostavnim nizom koraka.
Prosto, potreban nam je neki korak pomoću koga možemo da postavimo pitanje "šta ako", ili možda tačnije "da li je". Ovakav korak predstavlja "račvanje" izvršavanja programa. U našem algoritmu pripremamo dve odvojene grane, i zavisno od provere na "raskrsnici" izvršiće se koraci u jednoj ili u drugoj. Zbog toga kažemo da se neki koraci izvrše jednom, a neki nijednom.
Međutim, šta ako je potrebno imati više od dve mogućnosti? Tj. šta ako je potrebno da se algoritam odvaja u više od dve grane? Pa, jednostavno - svaku granu uvek možemo ponovo da "račvamo". Takođe, za specifičan tip problema, možemo koristiti višestruko grananje.
Kako program odlučuje?
Korak koji služi za "račvanje", u sebi sadrži izraz logičkog tipa. To znači da se u ovom koraku zadaje neki uslov. Njegova vrednost može biti "tačno" (true) ili "netačno" (false). Najjednostavnija vrsta ovakvog izraza su relacioni izrazi, odnosno upoređivanja.
X > 5 10 <= Y A == "Pera" Inače svejedno da li pišemo: X > 5 5 < X
Odgovor na ovakvu "pitalicu" je uvek "da" ili "ne", i na osnovu toga se izvršava jedna od dve grane algoritma. Uslovi mogu biti i kompleksni (to ćemo raditi na nekom od narednih časova)
Prvi slučaj:
Ako je uslov ispunjen (korak 2) izvršiće se naredba ili blok naredbi, odnosno algoritamskih koraka (korak 3). Ako uslov nije ispunjen naredba (ili blok naredbi) se ignoriše i neće se izvršiti.

Primer 1: Ako je a < 0 tada je y <- 4
Zadatak: Proveriti tok algoritma ako korisnik unese 1, 5, -5 i 0 Ovu vrstu razgranatih algoritama često nazivaju IF THEN, zato što je u većini programskih jezika tako realizovano - sa naredbom IF (neki uslov) THEN (neka akcija). Drugi slučaj: Ako je uslov ispunjen (korak 2) izvršiće se naredba ili blok naredbi, algoritmskih koraka (korak 3). Ako uslov nije ispunjen izvršiće se naredba ili blok naredbi, algoritmskih koraka (korak 4). Ovu vrstu razgranate algoritamske strukture često možete naći pod nazivom IF THEN ELSE, jer se najčešće realizuje u obliku IF (uslov) THEN (naredba 1) ELSE (naredba 2) Primer: Ako je x1<x2 tada je y:=x1+x2 inače y.=x1-x2. Postoje i vrste razgranatih algoritama gde se koristi višestruka selekcija: što znači da postoji neki uslov koji se ispituje, i više od dva izbora, pa se odabire samo jedan od ponuđenih algoritamskih koraka - naravno u zavisnosti od uslova. *** Kao poslednja od vrsta selekcija koje obrađujemo u ovoj lekciji je slučaj kada imamo neku selektorsku promenjivu i npr, ako ta promenjiva ima jednu vrednost, radi se blok br 1, ako ima drugu vrednost radi se blok 2, ako ima treću vrednost, onda blok 3 i tako redom, a ako ne uzima nijednu od ponuđenih vrednosti, inda se radi blok sa oznakom default. - ovo ćemo raditi kasnije -








