Vous êtes sur la page 1sur 7

Osnovi programiranja dr Boban Stojanovi

Naredbe uslovnog grananja


Reavanje veine problema esto zahteva izvravanje odreenog dela programa u
zavisnosti od ispunjenosti nekog uslova. Iz tog razloga neophodno je postojanje razgranatih
struktura, koje se u programskom jeziku C ostvaruju korienjem naredbe uslovnog grananja
if i naredbe viestrukog grananja switch.

Naredba uslovnog grananja IF


Naredba uslovnog grananja if omoguava izvravanje odreenog dela programa u
zavisnosti od toga da li je navedeni uslov ispunjen ili ne. Ukoliko je uslov ispunjen, tj. ukoliko
je vrednost logikog iskaza tano (true), onda se izvrava jedna naredba ili blok naredbi
navedenih unutar komande if. Ukoliko je vrednost logikog izraza netano (false), moe se
izvriti neka druga naredba, odnosno blok naredbi.

Sintaksa
if (<logicki_izraz>) <naredba1> [ else <naredba2> ];
Korienjem ovakve if else konstrukcije mogue je formirati vie oblika uslovnog grananja,
kao to su: jednostruko, dvostruko i viestruko grananje.

Jednostruko grananje
Kod jednostrukog grananja raunar ispituje vrednost logikog izraza i ukoliko je ova vrednost
tano (true), izvrava se naredba, odnosno blok naredbi iza naredbe if. Ukoliko je vrednost
izraza netano (false), ova naredba se ne izvrava.
Na slici je prikazan ematski prikaz ovakvog grananja:

Uslov da

ne
Komanda

Slika ### ematski prikaz jednostrukog grananja

C kod koji bi odgovarao ovakvoj vrsti grananja bi bio:


if (logiki_izraz) naredba;
ili
if (logiki_izraz)
{
naredba_1;
naredba_2;
...
naredba_n;
}

1
Osnovi programiranja dr Boban Stojanovi

Primer
Napisati program koji na osnovu broja utroenih kilovata elektrine energije P i cene po
kilovatu C, izraunava ukupnu naknadu koju potroa treba da plati T. Ukoliko je naknada
vea od 1000 dinara, raun se uveava za 10%, kako bi se stimulisala tednja elektrine
energije.

#include <stdio.h>

main()
{
const float LIMIT = 1000.0; {Limit iznad koga se uvecava naknada}
const float PENALI = 10.0; {Procenat za koji se uvecava naknada}
float P,C,T;

printf("Unesite broj untrosenih kilovata P: ");


scanf("%f", &P);
printf("Unesite cenu po kilovatu C: ");
scanf("%f", &C);

T = P * C;

if(T > LIMIT) T = T + T * PENALI / 100.0;

printf("Vas racun za elektricnu energiju je %f dinara.\n", T);


}

Dvostruko grananje
U sluaju dvostrukog grananja, ukoliko je logiki izraz taan izvrava se naredba ili blok
naredbi iza naredbe if, a ako logiki izraz nije taan izvrava se naredba, odnosno blok
naredbi, koji se navode iza rezervisane rei else.
ematski prikaz koji opisuje ovakvu vrstu grananja prikazan je na slici:

da Uslov ne

Komanda 1 Komanda 2

Slika ### ematski prikaz dvostrukog grananja

C kod koji bi odgovarao dvostrukom grananju bi bio:


if (logiki_izraz) naredba_1;
else naredba_2;
ili
if (logiki_izraz)
{
naredba_11;
naredba_12;
...
naredba_1n;

2
Osnovi programiranja dr Boban Stojanovi

}
else
{
naredba_21;
naredba_22;
...
naredba_2m;
}

Primer
Napisati program koji za x dato na ulazu izraunava vrednost funkcija f(x) i g(x) koje imaju
oblik:

1, ako je x 0 ln x , ako je x 0

f x i g x
2 x 3, ako je x 0
e x , ako je x 0
#include <stdio.h>
#include <math.h>

main()
{
float x,f,g;

printf("Unesite x: ");
scanf("%f", &x);

if(x < 0)
{
f = -1.0;
g = log(-x);
}
else
{
f = 2.0*x+3.0;
g = exp(x);
}

printf("f(x)=%f\n", f);
printf("g(x)=%f\n", g);
}

Viestruko grananje
Imajui u vidu da se unutar if-else konstrukcije mogu nai bilo koja naredba ili blok naredbi,
zakljuujemo da to mogu biti i druge if naredbe. Korienjem takvih konstrukcija moemo
ostvariti viestruko grananje, kao to je to prikazano na slici:

3
Osnovi programiranja dr Boban Stojanovi

da Uslov 1 ne

da Uslov 2 ne

Komanda 1 Komanda 2

Komanda 3

Slika ### ematski prikaz viestrukog grananja

U ovom sluaju program prvo ispituje da li je prvi uslov ispunjen. Ukoliko Uslov 1 nije
ispunjen, program izvrava Komandu 3. Meutim, ako je Uslov 1 ispunjen, program ispituje
Uslov 2 i u zavisnosti od toga da li je on ispunjen ili nije, program izvrava Komandu 1 ili
Komandu 2. Na ovaj nain dobili smo algoritamsku strukturu sa trostrukim grananjem, koja
moe izvravati neku od tri zadate komande u zavisnosti od ispunjenosti pojedinih uslova.
Na slian nain, kombinacijom if i else naredbi, moemo dobiti proizvoljan broj uslovnih
grananja.

Primer
Napisati program koji na osnovu broja bodova osvojenih na ispitu, odreuje ocenu prema
sledeoj tabeli:
Broj bodova Ocena
51-60 6
61-70 7
71-80 8
81-90 9
91-100 10

#include <stdio.h>

main()
{
int bodovi,ocena;

printf("Unesite broj bodova: ");


scanf("%d", &bodovi);

if(bodovi >= 91) ocena = 10;


else
if(bodovi >= 81) ocena = 9;
else
if(bodovi >= 71) ocena = 8;
else
if(bodovi >= 61) ocena = 7;
else
if(bodovi >= 51) ocena = 6;
else ocena = 5;

4
Osnovi programiranja dr Boban Stojanovi

printf("Student je dobio ocenu %d\n", ocena);


}

Naredba viestrukog grananja SWITCH


Iako se viestruko grananje moe ostvariti korienjem naredbe if, program pisan na takav
nain je esto veoma nepregledan. Da bi se to izbeglo, u programskom jeziku C postoji
naredba viestrukog grananja switch, koja omoguava grananje programa u zavisnosti od
vrednosti nekog izraza, kao to je to prikazano na slici:

Izraz

Konstanta 1 Komanda 1
Konstanta 2 Komanda 2

Konstanta n Komanda n

Slika ### ematski prikaz viestrukog grananja pomou naredbe case

Iza naredbe switch navodi se izraz koji moe biti bilo kog nabrojivog tipa (char, bool, int,
skup ili intervalni tip). Nakon izraza se nabrajaju mogue vrednosti izraza i odgovarajue
naredbe ili blokovi naredbi.

Sintaksa
switch (<izraz>)
<case konstanta_1: naredba_1; break;>
[case konstanta_2: naredba_2; break;]
...
[case konstanta_n: naredba_n; break;]
[default: naredba_def;]
end;
Napomenimo da posle naredbe ne mora da sledi komanda break. U tom sluaju naredba se
izvrava ukoliko je navedeni izraz jednak bilo kojoj od uzastupnih konstanti.
Switch naredba funkcionie tako to se prvo izraunava vrednost izraza, a zatim trai
konstanta koja je jednaka vrednosti izraza. Ukoliko takva konstanta postoji, izvrava se
naredba navedena iza konstante. Ako takve konstante nema, onda se nastavlja izvravanje
programa zanemarujui naredbu switch. Mogue je korienje rezervisane rei default
umesto konstante iza koje se navodi naredba koja e se izvriti u sluaju da vrednost izraza
nije jednaka ni jednoj od navedenih konstanti.

Primer 1
Napisati program koji na osnovu ocene od 1 do 5, odreuje opisnu ocenu koja moe biti
"nedovoljan", "dovoljan", "dobar", "vrlo dobar" ili "odlian".

5
Osnovi programiranja dr Boban Stojanovi

#include <stdio.h>

main()
{
int ocena;

printf("Unesite ocenu: ");


scanf("%d", &ocena);

printf("Ucenik je ");

switch(ocena)
{
case 1:
printf("nedovoljan");
break;
case 2:
printf("dovoljan");
break;
case 3:
printf("dobar");
break;
case 4:
printf("vrlo dobar");
break;
case 5:
printf("odlican");
break;
}
}

Primer 2
Napisati program koji odreuje broj dana u zadatom mesecu.

#include <stdio.h>

main()
{
int mesec;
char prestupna;

printf("Unesite redni broj meseca: ");


scanf("%d", &mesec);

switch(mesec)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("Mesec ima 31 dan.\n");
break;
case 4:
case 6:
case 9:

6
Osnovi programiranja dr Boban Stojanovi

case 11:
printf("Mesec ima 30 dana.\n");
break;
case 2:
printf("Da li je godina prestupna (D/N)? ");
getchar(); // Ciscenje bafera !!!
scanf("%c", &prestupna);
if(prestupna == 'D' || prestupna == 'd')
printf("Mesec ima 29 dana.\n");
else
printf("Mesec ima 28 dana.\n");
break;
default:
printf("Pogresan broj meseca.\n");
break;
}
}

Vous aimerez peut-être aussi

  • Stohasticka Skripta PDF
    Stohasticka Skripta PDF
    Document39 pages
    Stohasticka Skripta PDF
    Aleksandar Grujić
    Pas encore d'évaluation
  • Stohasticka Skripta PDF
    Stohasticka Skripta PDF
    Document39 pages
    Stohasticka Skripta PDF
    Aleksandar Grujić
    Pas encore d'évaluation
  • Informatika
    Informatika
    Document1 page
    Informatika
    Aleksandar Grujić
    Pas encore d'évaluation
  • DaniloRapaic PDF
    DaniloRapaic PDF
    Document78 pages
    DaniloRapaic PDF
    vahid
    Pas encore d'évaluation
  • Kolokvijum 3
    Kolokvijum 3
    Document1 page
    Kolokvijum 3
    Aleksandar Grujić
    Pas encore d'évaluation
  • Liste U Html-U
    Liste U Html-U
    Document5 pages
    Liste U Html-U
    Aleksandar Grujić
    Pas encore d'évaluation
  • Rad
    Rad
    Document104 pages
    Rad
    Aleksandar Grujić
    Pas encore d'évaluation
  • 1 Osnove HTML-a PDF
    1 Osnove HTML-a PDF
    Document2 pages
    1 Osnove HTML-a PDF
    Aleksandar Grujić
    Pas encore d'évaluation
  • Rad
    Rad
    Document104 pages
    Rad
    Aleksandar Grujić
    Pas encore d'évaluation
  • DaniloRapaic PDF
    DaniloRapaic PDF
    Document78 pages
    DaniloRapaic PDF
    vahid
    Pas encore d'évaluation
  • Klasa Porez
    Klasa Porez
    Document3 pages
    Klasa Porez
    Aleksandar Grujić
    Pas encore d'évaluation
  • Kolokvijum1 PDF
    Kolokvijum1 PDF
    Document1 page
    Kolokvijum1 PDF
    Aleksandar Grujić
    Pas encore d'évaluation
  • Osnove Softverskog Paketa
    Osnove Softverskog Paketa
    Document83 pages
    Osnove Softverskog Paketa
    Владимир Дојчиновић
    Pas encore d'évaluation
  • Predavanje 3
    Predavanje 3
    Document106 pages
    Predavanje 3
    Aleksandar Grujić
    Pas encore d'évaluation
  • Jklghtgkuf
    Jklghtgkuf
    Document7 pages
    Jklghtgkuf
    Aleksandar Grujić
    Pas encore d'évaluation
  • Lateh Formulee
    Lateh Formulee
    Document16 pages
    Lateh Formulee
    Aleksandar Grujić
    Pas encore d'évaluation
  • Lateh Formulee
    Lateh Formulee
    Document16 pages
    Lateh Formulee
    Aleksandar Grujić
    Pas encore d'évaluation
  • Osnove Softverskog Paketa
    Osnove Softverskog Paketa
    Document83 pages
    Osnove Softverskog Paketa
    Владимир Дојчиновић
    Pas encore d'évaluation
  • Lateh Formulee
    Lateh Formulee
    Document16 pages
    Lateh Formulee
    Aleksandar Grujić
    Pas encore d'évaluation
  • b1 6 Francuske Reci
    b1 6 Francuske Reci
    Document1 page
    b1 6 Francuske Reci
    Aleksandar Grujić
    Pas encore d'évaluation
  • 07 Nestandardni Tipovi Podataka
    07 Nestandardni Tipovi Podataka
    Document4 pages
    07 Nestandardni Tipovi Podataka
    Aleksandar Grujić
    Pas encore d'évaluation
  • b1 3 Francuski Reci
    b1 3 Francuski Reci
    Document3 pages
    b1 3 Francuski Reci
    Aleksandar Grujić
    Pas encore d'évaluation
  • Resenje Prvog Kol. 2016
    Resenje Prvog Kol. 2016
    Document3 pages
    Resenje Prvog Kol. 2016
    Aleksandar Grujić
    Pas encore d'évaluation
  • 03 Ulazno Izlazne Naredbe
    03 Ulazno Izlazne Naredbe
    Document4 pages
    03 Ulazno Izlazne Naredbe
    Aleksandar Grujić
    Pas encore d'évaluation
  • 07 - Osnovi Programiranja
    07 - Osnovi Programiranja
    Document16 pages
    07 - Osnovi Programiranja
    Aleksandar Grujić
    Pas encore d'évaluation
  • Karamazovi PHP PDF
    Karamazovi PHP PDF
    Document30 pages
    Karamazovi PHP PDF
    Andrija Božović
    Pas encore d'évaluation
  • 08 Nizovi
    08 Nizovi
    Document12 pages
    08 Nizovi
    Aleksandar Grujić
    Pas encore d'évaluation
  • Prvi Kolokvijum Iz OPG 2016
    Prvi Kolokvijum Iz OPG 2016
    Document1 page
    Prvi Kolokvijum Iz OPG 2016
    Aleksandar Grujić
    Pas encore d'évaluation
  • Problemi Rešetke I Mreže-Pikova Teorema
    Problemi Rešetke I Mreže-Pikova Teorema
    Document10 pages
    Problemi Rešetke I Mreže-Pikova Teorema
    vladamisic
    Pas encore d'évaluation