SlideShare a Scribd company logo
1 of 7
Razgranati algoritmi
Za rješavanje većine zadataka potrebne su složenije programske strukture kod kojih redoslijed izvršavanja
naredbi zavisi o vrijednostima podataka koji se obrađuju.
Grananje je programska struktura koja omogućuje različit tok programa, zavisno o rezultatu postavljenog uslova.
To je važna struktura bez koje bi mogućnost rješavanja zadataka računarom bila vrlo ograničena.
Razgranata algoritamska struktura je ona kod koje se svaki korak izvršava jednom ili nijednom. Stvar je
u tome da, kada zadatak zahteva dase neke vrijednosti unesu u promenljive, jednostavno, ne možemo da znamo
koje će to vrednosti biti.
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 dvije odvojene
grane, i zavisno od provjere 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 dvije mogućnosti? Tj. šta ako je potrebno da se algoritam odvaja
u više od dvije grane? Pa, jednostavno - svaku granu uvijek možemo ponovo da "račvamo". Takođe,
za specifičan tip problema, možemo koristiti višestruko grananje.
Naredbe grananja su:
•if,
•if-else,
•if-else if-else,
•switch-case.
Jednostruko uslovno grananje
Naredba if omogućava jednostruko uslovnono grananje programa. Uslov je logički izraz, a upisuje se unutar para
malih zagrada.
Na kraju naredbe if ne stavlja se znak tačka zarez (;).
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 vrijednost može biti "tačno" (true) ili "netačno"
(false).
Najjednostavnija vrsta ovakvog izraza su relacioni izrazi, odnosno upoređivanja.
Blokovi naredbi
Dijelovi programa koji se uslovno izvode, grupišu se u skupine ili blokove naredbi. Svaki se blok naredbi ograničava parom
otvorena-zatvorena vitičasta zagrada ({ }).
Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi naredbi se obično pišu uvučeno zbog
preglednosti.
Primjer bloka naredbi
{
int x;
cout<<endl<<"Upisi cijeli broj u bloku:";
cin>>x;
}
Relacijki operatori
Evo primjera gdje početnici često griješe.
Potrebno je sastaviti uslov kojim se provjerava da li je vrijednost promjenljive X u intervalu od 0 do 9. Matematički
je sasvim opravdano napisati:
0 <= X <= 9
Međutim, u programiranju je ovo pogrešno!
Računar bi prvo ispitao da li je 0 manje od X, a onda dobijenu vrijednost (true ili false) uporedio sa 9.
U nekim programskim jezicima bi ovo bilo prijavljeno kao greška, a u nekim bi računar nastavio da radi, ali bismo
dobili pogrešan rezultat (true bi prepoznao kao 1, a false kao 0 pa bi to uvek bilo manje od 10). U programiranju bismo
morali da napišemo npr. ovakav uslov:
(X >= 0) && (X <= 9)
Dakle, provjeravamo da li važi da je X veće ili jednako 0 i istovremeno X manje ili jednako 10.
Ova dva uslova povezujemo operatorom AND.
Hajdemo korak dalje.
Recimo da treba ispitati da li je X van ovog intervala. Pazite, kreiranje "obrnutog" uslova nije trivijalan zadatak.
Rješenje bi bilo:
(X < 0) || (X > 9)
Znači pitamo da li važi da je X manje od 0 ili možda da je X veće od 9.
Kao što vidimo, ne možemo baš samo da "obrnemo znakove". Primećujemo da za povezivanje uslova koristimo
operator OR, koji vraća vrednost "tačno" ako je zadovoljen bilo prvi, bilo drugi uslov.
Ako je problem samo "obrtanje" postojećeg uslova, mnogo je lakše da koristimo operator NOT:
!((X >= 0) && (X <= 9))
Inače, u razgranatim strukturama mogu učestvovati svi koraci koje smo do sada naučili ( ulaz, izlaz i obrada
podataka), kao i strukture koje ćemo tek učiti.
Primjer 1: Napiši program koji ispituje da li je broj pozitivan ili negativan!
Primjer 2: Napiši program koji ispisuje da li je uneseni broj pozitivan, negativan ili nula!

More Related Content

What's hot

Tematski dan: Prepoznaj loše-promeni se; Sebicni dzin
Tematski dan: Prepoznaj loše-promeni se; Sebicni dzinTematski dan: Prepoznaj loše-promeni se; Sebicni dzin
Tematski dan: Prepoznaj loše-promeni se; Sebicni dzinAlenka Orescanin
 
Trening asertivna komunikacija obuka
Trening asertivna komunikacija obuka Trening asertivna komunikacija obuka
Trening asertivna komunikacija obuka Miodrag Kostic, CMC
 
Trigonometrijske funkcije oštrog ugla pravouglog trougla
Trigonometrijske funkcije oštrog ugla pravouglog trougla Trigonometrijske funkcije oštrog ugla pravouglog trougla
Trigonometrijske funkcije oštrog ugla pravouglog trougla milenajeretin
 
Matematika-geometrija-8. razred-formule
Matematika-geometrija-8. razred-formuleMatematika-geometrija-8. razred-formule
Matematika-geometrija-8. razred-formuleZorana Raičević
 
Redosled racunskih operacija
Redosled racunskih operacijaRedosled racunskih operacija
Redosled racunskih operacijaIvica Zupanjac
 
Чардак ни на небу ни на земљи
Чардак ни на небу ни на земљиЧардак ни на небу ни на земљи
Чардак ни на небу ни на земљиdvucen
 
Testovi znanja - podsetnik za nastavnike
Testovi znanja - podsetnik za nastavnikeTestovi znanja - podsetnik za nastavnike
Testovi znanja - podsetnik za nastavnikeBiljana Radović
 
Aktivnosti upoznavanja okoline pu kraljevo
Aktivnosti upoznavanja okoline pu kraljevoAktivnosti upoznavanja okoline pu kraljevo
Aktivnosti upoznavanja okoline pu kraljevoObrazovanjeplus
 
1 - 2- 3 - Učinkovita disciplina
1 - 2- 3 - Učinkovita disciplina1 - 2- 3 - Učinkovita disciplina
1 - 2- 3 - Učinkovita disciplinaInes Falak
 
синтагме
синтагмесинтагме
синтагмеmilijana1
 
Banka pitanja windows- za 5 razred test
Banka pitanja windows- za 5 razred testBanka pitanja windows- za 5 razred test
Banka pitanja windows- za 5 razred testIvana Grujovic
 

What's hot (20)

Tematski dan: Prepoznaj loše-promeni se; Sebicni dzin
Tematski dan: Prepoznaj loše-promeni se; Sebicni dzinTematski dan: Prepoznaj loše-promeni se; Sebicni dzin
Tematski dan: Prepoznaj loše-promeni se; Sebicni dzin
 
Trening asertivna komunikacija obuka
Trening asertivna komunikacija obuka Trening asertivna komunikacija obuka
Trening asertivna komunikacija obuka
 
Trigonometrijske funkcije oštrog ugla pravouglog trougla
Trigonometrijske funkcije oštrog ugla pravouglog trougla Trigonometrijske funkcije oštrog ugla pravouglog trougla
Trigonometrijske funkcije oštrog ugla pravouglog trougla
 
Matematika-geometrija-8. razred-formule
Matematika-geometrija-8. razred-formuleMatematika-geometrija-8. razred-formule
Matematika-geometrija-8. razred-formule
 
Redosled racunskih operacija
Redosled racunskih operacijaRedosled racunskih operacija
Redosled racunskih operacija
 
Чардак ни на небу ни на земљи
Чардак ни на небу ни на земљиЧардак ни на небу ни на земљи
Чардак ни на небу ни на земљи
 
Testovi znanja - podsetnik za nastavnike
Testovi znanja - podsetnik za nastavnikeTestovi znanja - podsetnik za nastavnike
Testovi znanja - podsetnik za nastavnike
 
Aktivnosti upoznavanja okoline pu kraljevo
Aktivnosti upoznavanja okoline pu kraljevoAktivnosti upoznavanja okoline pu kraljevo
Aktivnosti upoznavanja okoline pu kraljevo
 
Linearne nejednacine
Linearne nejednacineLinearne nejednacine
Linearne nejednacine
 
Služba reči u rečenici
Služba reči u rečeniciSlužba reči u rečenici
Služba reči u rečenici
 
sukobi
sukobisukobi
sukobi
 
1 - 2- 3 - Učinkovita disciplina
1 - 2- 3 - Učinkovita disciplina1 - 2- 3 - Učinkovita disciplina
1 - 2- 3 - Učinkovita disciplina
 
синтагме
синтагмесинтагме
синтагме
 
Linearne jednacine
Linearne jednacineLinearne jednacine
Linearne jednacine
 
Bogacenje recnika
Bogacenje recnikaBogacenje recnika
Bogacenje recnika
 
Banka pitanja windows- za 5 razred test
Banka pitanja windows- za 5 razred testBanka pitanja windows- za 5 razred test
Banka pitanja windows- za 5 razred test
 
Гласовне промене
Гласовне променеГласовне промене
Гласовне промене
 
Folderi i fajlovi
Folderi i fajloviFolderi i fajlovi
Folderi i fajlovi
 
Skupovi
Skupovi Skupovi
Skupovi
 
Govor tela
Govor telaGovor tela
Govor tela
 

Razgranate strukture

  • 1. Razgranati algoritmi Za rješavanje većine zadataka potrebne su složenije programske strukture kod kojih redoslijed izvršavanja naredbi zavisi o vrijednostima podataka koji se obrađuju. Grananje je programska struktura koja omogućuje različit tok programa, zavisno o rezultatu postavljenog uslova. To je važna struktura bez koje bi mogućnost rješavanja zadataka računarom bila vrlo ograničena. Razgranata algoritamska struktura je ona kod koje se svaki korak izvršava jednom ili nijednom. Stvar je u tome da, kada zadatak zahteva dase neke vrijednosti unesu u promenljive, jednostavno, ne možemo da znamo koje će to vrednosti biti. 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 dvije odvojene grane, i zavisno od provjere 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 dvije mogućnosti? Tj. šta ako je potrebno da se algoritam odvaja u više od dvije grane? Pa, jednostavno - svaku granu uvijek možemo ponovo da "račvamo". Takođe, za specifičan tip problema, možemo koristiti višestruko grananje.
  • 2. Naredbe grananja su: •if, •if-else, •if-else if-else, •switch-case. Jednostruko uslovno grananje Naredba if omogućava jednostruko uslovnono grananje programa. Uslov je logički izraz, a upisuje se unutar para malih zagrada. Na kraju naredbe if ne stavlja se znak tačka zarez (;). 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 vrijednost može biti "tačno" (true) ili "netačno" (false). Najjednostavnija vrsta ovakvog izraza su relacioni izrazi, odnosno upoređivanja.
  • 3. Blokovi naredbi Dijelovi programa koji se uslovno izvode, grupišu se u skupine ili blokove naredbi. Svaki se blok naredbi ograničava parom otvorena-zatvorena vitičasta zagrada ({ }). Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi naredbi se obično pišu uvučeno zbog preglednosti. Primjer bloka naredbi { int x; cout<<endl<<"Upisi cijeli broj u bloku:"; cin>>x; }
  • 5. Evo primjera gdje početnici često griješe. Potrebno je sastaviti uslov kojim se provjerava da li je vrijednost promjenljive X u intervalu od 0 do 9. Matematički je sasvim opravdano napisati: 0 <= X <= 9 Međutim, u programiranju je ovo pogrešno! Računar bi prvo ispitao da li je 0 manje od X, a onda dobijenu vrijednost (true ili false) uporedio sa 9. U nekim programskim jezicima bi ovo bilo prijavljeno kao greška, a u nekim bi računar nastavio da radi, ali bismo dobili pogrešan rezultat (true bi prepoznao kao 1, a false kao 0 pa bi to uvek bilo manje od 10). U programiranju bismo morali da napišemo npr. ovakav uslov: (X >= 0) && (X <= 9) Dakle, provjeravamo da li važi da je X veće ili jednako 0 i istovremeno X manje ili jednako 10. Ova dva uslova povezujemo operatorom AND. Hajdemo korak dalje. Recimo da treba ispitati da li je X van ovog intervala. Pazite, kreiranje "obrnutog" uslova nije trivijalan zadatak. Rješenje bi bilo: (X < 0) || (X > 9) Znači pitamo da li važi da je X manje od 0 ili možda da je X veće od 9. Kao što vidimo, ne možemo baš samo da "obrnemo znakove". Primećujemo da za povezivanje uslova koristimo operator OR, koji vraća vrednost "tačno" ako je zadovoljen bilo prvi, bilo drugi uslov. Ako je problem samo "obrtanje" postojećeg uslova, mnogo je lakše da koristimo operator NOT: !((X >= 0) && (X <= 9))
  • 6. Inače, u razgranatim strukturama mogu učestvovati svi koraci koje smo do sada naučili ( ulaz, izlaz i obrada podataka), kao i strukture koje ćemo tek učiti. Primjer 1: Napiši program koji ispituje da li je broj pozitivan ili negativan!
  • 7. Primjer 2: Napiši program koji ispisuje da li je uneseni broj pozitivan, negativan ili nula!