Grananja
Grananja omogućavaju 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-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.
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. Ak one bi bilo grananja, na osnovu unetih vrednosti se 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. Potrebno je da imamo 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 tok programa 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 je da li pišemo: X > 5 ili 5 < X
Odgovor na ovakvu "pitalicu" je uvek "da" ili "ne", i na osnovu toga se izvršava jedna od dve grane. Uslovi mogu biti jednostavni, ali mogu biti i jako kompleksni.
Naredbe grananja - if
( Da možemo upravljati tokom izvršavanja koda.)
Zadatak: od korisnika uzeti dva cela broja i od većeg oduzeti manji.
Logično prvo treba uzeti brojeve, zatim proveriti koji je od njih veći i na kraju izračunati razliku te prikazati rezultat. Jedino što za sada ne znate da uradite je kako odrediti koji je broj veći. To određujemo preko naredbe grananja. Uradićemo ovaj zadatak koristeći nekoliko različitih načina grananja koda.
Rešenje zadatka pomoću if-a:
| rešenje u C-u |
rešenje u C++ |
|---|---|
#include <stdio.h> |
#include <iostream> |
Evo izgleda sintakse if naredbe:
if ( uslov ) { telo }
If je ključna reč, uslov mora dati rezultat različit od nule da bi se telo naredbe if izvršilo. Ukoliko uslov nije ispunjen, sve naredbe koje se nalaze u telu naredbe if biće preskočene. Vrlo jednostavno. U daljem kodu primećujemo ključnu reč „else“ iza koje sledi telo te naredbe. Njom kažemo da ako uslov if-a nije ispunjen program izvrši blok naredbi (telo) koji sledi neposredno iza ove ključne reči. Ukoliko je uslov kod if tačan blok naredbi iza else će biti preskočen. Else ne mora obavezno da stoji uz svaku if komandu, ona je opciona i ubacuje se ako ima potrebe za tim kao što je to bio slučaj u ovom primeru. Takođe, else mora stojati neposredno po završetku bloka naredbi if-a.

