STRUKTURA GRANANJA
1
2
Za rjeavanje veine zadataka potrebne su programske strukture kod kojih redoslijed izvravanja naredbi ovisi o vrijednostima
podataka koji se obrauju.
Grananje je programska struktura koja omoguuje razliit tok programa, ovisno o rezultatu postavljenog uvjeta.
PROGRAMSKA STRUKTURA GRANANJA
3
PROGRAMSKA STRUKTURA GRANANJA
Primjer programske strukture grananja:
Korisnik unosi cijeli broj, a zatim se rauna apsolutna
vrijednost tog broja i ispisuje
rezultat.
4
Dijelovi programa koji se uvjetno izvode grupiraju se u blokove naredbi.
Blok naredbi se omeuje parom vitiastih zagrada, zbog preglednosti pie se uvueno.
Zagrade se mogu izostaviti ako se blok sastoji od jedne naredbe.
BLOK NAREDBI
5
Varijable deklarirane unutar bloka naredbi nazivaju se lokalnevarijable.
Ako se varijable deklariraju unutar bloka, postoje samo unutar bloka u kome su deklarirane, u glavnoj funkciji one ne postoje.
LOKALNE VARIJABLE
6
PRIMJER
Primjer lokalne varijable:
Treba deklarirati cjelobrojnu varijablu x unutar zasebnog bloka, pa joj pridruiti vrijednost. Pokuati ispisati vrijednost varijable x
u glavnoj funkciji.
Upisi cijeli broj u bloku:Vrijednost varijable iz bloka x=....
7
BLOK
PRIMJER
8
Pri pokuaju kompajliranja javit e se greka.
Varijabla deklarirana unutar bloka vidljiva je samo unutar tog bloka. U glavnoj funkciji varijabla x ne postoji. Zato se
pri prevoenju javlja greka.
PRIMJER
9
Programska struktura grananja moe se ostvariti naredbama: if
if else
if else if - else
switch case.
NAREDBE GRANANJA
10
Jednostruko uvjetno grananje omoguava izvrenje bloka
naredbi samo ako je zadani
uvjet ispunjen.
Ako uvjet nije ispunjenizvrava se prva naredba
nakon bloka.
JEDNOSTRUKO UVJETNO GRANANJE
11
Za jednostruko uvjetno grananje koristi se naredba if.
Uvjet je logiki izraz, zapisuje se unutar para okruglih
zagrada.
Na kraju naredbe if ne stavlja se znak ;
JEDNOSTRUKO UVJETNO GRANANJE - IF
12
PRIMJER 1A
Treba unijeti cijeli broj razliit od 0 pa provjeriti da li je negativan ili pozitivan. U oba sluaja ispisati apsolutnu vrijednost broja.
Ispis neka bude oblika:
Upisi cijeli broj razlicit od 0:Broj...je .... Njegova apsolutna vrijednost je ....
13
Ako je (a0).
Ako nije ispunjan niti drugi uvjet (za a=0), drugi bloknaredbi se preskae i izvoenje se nastavlja od naredbe
return 0.
PRIMJER
14
1. BLOK
0
2. BLOK
0
PRIMJER
15
Za (a0):
PRIMJER
16
Ako nije ispunjen niti prvi niti drugi uvjet (unesena je 0), program se prekida.
PRIMJER
17
Dvostruko uvjetno grananje omoguava da se ovisno o
ispunjenju postavljenog
uvjeta izvodi jedan od dva
neovisna bloka naredbi.
DVOSTRUKO UVJETNO GRANANJE
18
Za dvostruko uvjetno grananje koristi se naredba if - else.
DVOSTRUKO UVJETNO GRANANJE
19
Ako je vrijednost uvjeta logika istina izvodi se prvi blok. Nakon njegova zavretka izvoenje se nastavlja od prve naredbe iza drugog
bloka.
Ako je vrijednost uvjeta logika neistina, preskae se prvi blok i izvodi se drugi blok (iza naredbe else). Nakon njegova zavretka izvoenje se
nastavlja od prve naredbe iza drugog bloka.
DVOSTRUKO UVJETNO GRANANJE
20
PRIMJER 1B
Primjer treba rijeiti upotrebom dvostrukog uvjetnog grananja.
Ispis neka bude oblika:
Upisi cijeli broj razlicit od 0:Broj...je....Njegova apsolutna vrijednost je....
21
PRIMJER
Primjer je rijeen uz pomo if else naredbe.
Ako je (a0), preskae se prvi blok i izvodi se drugi blok naredbi.
22
1. BLOK
2. BLOK
0
PRIMJER
23
Za (a
24
GREKA PRILIKOM UNOSA
to ako korisnik ne proita uputu paljivo, pa unese broj 0? Rezultat nee biti ispravan:
Bilo bi dobro izbjei takvu situaciju.
25
Uneseni broj treba provjeriti. Ako je unesena 0, korisnika treba upozoriti, a potom korisnik mora unijeti novi broj koji je razliit od 0.
Da bi to bilo mogue, potrebna je naredba koja omoguava nastavak odvijanja programa od odabrane naredbe.
GREKA PRILIKOM UNOSA
26
NAREDBA GOTO
Naredba goto omoguava nastavak odvijanja programa od odabrane naredbe.
Naredba na koju se eli skoiti, od koje se eli nastaviti odvijanje programa, moe biti bilo gdje u programu.
Opi oblik naredbe:
goto oznaka_naredbe;
27
Naredbu od koje se eli nastaviti odvijanje programa treba oznaiti oznakom iza koje dolazi znak dvotoke.
oznaka_naredbe:naredba;
goto oznaka_naredbe;
NAREDBA GOTO
28
PRIMJER DOPUNA
29
PRIMJER - DOPUNA
Za a==0
GOTO
estom uporabom naredbe goto teko je slijediti tok odvijanja programa to oteava otkrivanje greaka.
Naredbu goto stoga treba izbjegavati i nastojati zadatak rjeiti na drugi nain, pomou petlji koje e biti objanjene kasnije.
30
31
UVJETNA NAREDBA KRATKI OBLIK
Ako su uvjet i naredbe uvjetnih blokova kratki,umjesto if - else naredbi moe se koristiti skraeni oblik zapisa.
(uvjet) ? (1.blok naredbi) : (2. blok naredbi)
Koristi se kada uvjet i naredbe blokova stanu u jedan red.
32
if (a
33
VIESTRUKO UVJETNO GRANANJE
Viestruko grananje omoguava ispitivanje vie uvjeta.
Ovisno o ispunjenju postavljenih uvjeta izvodi se odgovarajui blok
naredbi.
34
Za viestruko uvjetno grananje koristi se naredba
if else if -....- else.
Broj postavljenih uvjeta nije ogranien.
VIESTRUKO UVJETNO GRANANJE
35
Ako je vrijednost prvog uvjeta logika istina, izvodi se prvi blok naredbi. Nakon njegova zavretka izvoenje se nastavlja od prve naredbe iza
zadnjeg bloka naredbi.
Ako je vrijednost prvog uvjeta logika neistina, provjerava se drugi uvjet.
Ako je on logika istina, izvodi se drugi blok naredbi, a potom prva naredba iza zadnjeg bloka naredbi.
VIESTRUKO UVJETNO GRANANJE
36
Ako je vrijednost drugog uvjeta logika neistina, provjerava se trei uvjet, i td.
Provjere se tako redom nastavljaju sve do naredbe else.
Ako do tada niti jedan od uvjeta nije imao vrijednost logike istine, izvrit e se zadnji blok naredbi koji se nalazi iza naredbe else.
VIESTRUKO UVJETNO GRANANJE
37
Prethodni primjer treba rijeiti upotrebom viestrukog uvjetnog grananja.
Ispis neka bude oblika:
Upisi broj:Broj...je....Njegova apsolutna vrijednost je....iliUnio si 0. Apsolutna vrijednost od 0 je 0.
PRIMJER
38
PRIMJER
39
Ako se unese 0, poruka e biti:
U ostalim sluajevima, provjera je ista kao u primjeru 26.
PRIMJER
40
Treba upisati prirodni broj pa provjeriti da li je vei ili manji od 100, te da li je paran ili neparan.
Ispis neka bude oblika:
Upisi prirodni broj:Uneseni broj je ... od 100 i ....
PRIMJER 2
41
Viestrukim uvjetnim grananjem provjerava se da li je broj vei, manji ili jednak 100.
Dvostrukim uvjetnim grananjem (neovisno o tome da li je broj vei ili manji od 100) provjerava se parnost broja.
Parnost se provjerava operatorom modula (ostatak % dijeljenja s 2 se usporeuje s 0).
PRIMJER
PRIMJER
42
43
PRIMJER
Provjera:
44
GRANANJE SWITCH-CASE
Naredba switch-case omoguava viestruko grananje koje ovisi o vrijednosti postavljenog uvjeta.
Za razliku od viestrukog grananja naredbom if u kojoj su uvjeti logiki izrazi, u naredbi switch-case uvjet je cjelobrojan izraz ili cjelobrojna
varijabla.
Raunanje cjelobrojnog izraza ili vrijednost cjelobrojne varijable je cijeli broj (cjelobrojna konstanta).
GRANANJE SWITCH-CASE
45
46
GRANANJE SWITCH-CASE
Vrijednost se uvjeta usporeuje s nizom zadanih cjelobrojnih konstanti: konst1,
konst2, konst3, itd.
Ako je vrijednost uvjeta jednaka nekoj od zadanih konstanti, izvrava se blok
naredbi pridruen toj konstanti.
47
Po izvrenju bloka naredbi (kao primjer uzet je prvi
blok), naredba break
oznaava izlaz iz bloka
switch-case i nastavlja
program prvom naredbom
nakon switch-case bloka.
GRANANJE SWITCH-CASE
48
Ako vrijednost uvjeta nije jednaka niti jednoj od
ponuenih konstanti,
izvrava se blok naredbi
pridruen naredbi default.
Ako izostavimo naredbu default program e nastaviti izvravanje
prvom naredbom nakon switch-case bloka.
GRANANJE SWITCH-CASE
49
Treba izraunati ukupni otpor za otpore R1 i R2, ovisno o tome da li su spojeni serijski ili paralelno. Za odabir serijskog spoja
korisnik upisuje 1, a za paralelnog 2.
Ispis neka bude oblika:
Otpor R1 (u omima):Otpor R2 (u omima):Za serijski spoj otpora upisi 1, a za paralelni 2:Ako se otpori od ... oma i ... oma spoje u ... ukupni je otpor ... oma.
PRIMJER 3
50
Treba nainiti dvije grane (serijski spoj-1, parale