You are on page 1of 12

JUMS

ELEKTROTEHNIČKA ŠKOLA
TUZLA
školska. 2021/2022

USLOVNE NAREDBE
STRUKTURA IF - ELSE
PREDMET: PROGRAMIRANJE

RAZRED: 4T5, 4T6, 4T7

Datum: 25-28-29.10.2021. godine Prof. Amir Jaranović


Grananje
Za rješavanje većine zadataka potrebne su složenije
programske strukture kod kojih redoslijed izvršavanja naredbi
ovisi o vrijednostima podataka koji se obrađuju.

Grananje je programska struktura koja omogućuje različit tok


programa, ovisno o rezultatu postavljenog uslova. To je važna
struktura bez koje bi mogućnost rješavanja zadataka
računarom bila vrlo ograničena.

Blokovi naredbi
Dijelovi programa koji se uslovno izvode, grupiraju se u skupine
ili blokove naredbi. Svaki se blok naredbi omeđuje 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;
}

Naredbe grananja
Naredbe grananja su:

• if,
• if-else,
• if-else if-else,
• switch-case.

Jednostruko uslovno (uvjetno) grananje


Naredba if omogućava jednostruko uslovno grananje programa.
Uslov je logički izraz, a upisuje se unutar para okruglih
zagrada. Na kraju naredbe if ne stavlja se znak tačka zarez (;).
• Ako je vrijednost uslova logička istina (true, 1), izvodi se
blok naredbi koji se nalazi iza naredbe if.
• Ako je vrijednost uslova logička neistina (false, 0), blok
naredbi iza naredbe if se preskače i izvođenje se nastavlja
od prve naredbe iza bloka.

Zadatak: Treba unijeti cijeli broj različit od 0 pa provjeriti da li je


negativan ili pozitivan. U oba slučaja ispisati apsolutnu vrijednost
broja. Ispis neka bude oblika:

Upisi cijeli broj razlicit od 0:

Broj ... je negativan. Apsolutna vrijednost mu je ....

Broj ... je pozitivan. Apsolutna vrijednost mu je ....


Rješenje:
#include<iostream>
using namespace std;

int main()

int a;

cout<<"Upisi cijali broj razlicit od 0:";

cin>>a;

if(a<0)

cout<<"Broj "<<a<<" je negativan. Apsolutna vrijednost mu je

"<<-a<<endl;

if(a>0)

cout<<"Broj "<<a<<" je pozitivan. Apsolutna vrijednost mu je

"<<a<<endl;

return 0;

}
Provjera za unos vrijednosti -45:

Upisi cijeli broj razlicit od 0:


-45
Broj -45 je negativan. Apsolutna vrijednost mu je 45.

Dvostruko uslovno (uvjetno) grananje


Dvostruko uslovno grananje omogućava da se ovisno o ispunjenju
postavljenog uslova izvodi jedan od dva neovisna bloka naredbi.

• Ako je vrijednost uslova logička istina (true, 1), izvodi se


prvi blok naredbi. Nakon njegova završetka izvođenje se
nastavlja od prve naredbe iza drugog bloka.
• Ako je vrijednost uslova logička neistina (false, 0),
preskače se prvi blok i izvodi se drugi blok (iza
naredbe else). Nakon njegova završetka izvođenje se
nastavlja od prve naredbe iza drugog bloka.
Zadatak: Treba unijeti realni broj pa provjeriti da li je taj broj veći od ili
jednak 0 (>=0). Ako jest, računa se kvadratni korijen tog broja, a ako
nije ispisuje se odgovarajuća poruka.
Ispis neka bude oblika:

Upisi realni broj:


Kvadratni korijen od ... je ....
ili
Greska. Broj je manji od 0.

U zadatku je pokazana primjena matematičke funkcije za


računanje kvadratnog korijena.

Rješenje:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float broj,rez;
cout<<"Upisi broj:";
cin>>broj;
if (broj>=0)
{
rez=sqrt(broj);
cout<<"Kvadratni korijen od "<<broj<<" je
"<<rez<<endl;
}
else
{
cout<<"Greska. Broj je manji od 0"<<endl;
}
return 0;
}

Provjera za unos vrijednosti 81.5:

Upisi broj: 81.5


Kvadratni korijen od 81.5 je 9.02773.

Uslovni (uvjetni) operator


Jednostavni oblici naredbe if-else mogu se zamijeniti uslovnim
operatorom koji se zapisuje znakom upitnik (?).

Opći oblik naredbe if-else zapisan uslovim operatorom:

(uvjet) ? (naredba 1) : (naredba 2)

Ovakav način zapisa koristi se kod postavljanja jednostavnih


uslova, kada naredba stane u jedan redak.

Grananje zapisano naredbom if-else

if (a<0)
cout<<-a;
else
cout<<a;

Grananje zapisano uslovim operatorom ?

(a<0) ? (cout<<-a) : (cout<<a);

Višestruko uslovno (uvjetno) grananje


Višestruko uslovno grananje omogućava ispitivanje više uslova.
Ovisno o ispunjenju postavljenih uslova izvodi se odgovarajući
blok naredbi.

• Ako je vrijednost prvog uslova logička istina (true, 1),


izvodi se prvi blok naredbi. Nakon njegova završetka
izvođenje se nastavlja od prve naredbe iza zadnjeg bloka
naredbi. Ako je vrijednost prvog uslova logička neistina
(false, 0), provjerava se drugi uslov.
• Ako je vrijednost drugog uslova logička istina (true, 1),
izvodi se drugi blok naredbi. Nakon njegova završetka
izvođenje se nastavlja od prve naredbe iza zadnjeg bloka
naredbi. Ako je vrijednost drugog uslova logička neistina
(false, 0), provjerava se treći uslov.
• Provjere se tako redom nastavljaju sve do naredbe else.
Ako do tada niti jedan od uslova nije imao vrijednost
logičke istine (true, 1), izvršit će se zadnji blok naredbi
koji se nalazi iza naredbe else.

Zadatak: Treba unijeti koeficijente linearne jednadžbe, pa ovisno o


njihovim vrijednostima izračunati i ispisati iznos varijable x. U slučaju da
je vrijednost jednog od koeficijenata 0, ispisati odgovarajuća upozorenja.
Ispis neka bude oblika:
Upisi koeficijent a:
Upisi koeficijent b:
Ako je a=0, jednadzba 0*x+...=0 nema rjesenje.
ili
Ako je b=0 rjesenje jednadzbe ..*x+0=0 :
x=0.
ili
Rjesenje jednadzbe ...*x+. .=0 :
x=...

Rješenje:
#include<iostream>
using namespace std;
int main()
{
float a,b,x;
cout<<"Upisi koeficijent a:";
cin>>a;
cout<<"Upisi koeficijent b:";
cin>>b;
if(a==0)
{
cout<<"Ako je a=0, jednadzba "<<a<<"*x+("<<b<<")=0
nema rjesenje." <<endl;
}
else if(b==0)
{
cout<<"Ako je b=0, rjesenje jednadzbe
"<<a<<"*x+("<<b<<")=0:"<<endl;
cout<<"x=0"<<endl;
}
else
{
x=-b/a;
cout<<"Rjesenje jednadzbe
"<<a<<"*x+("<<b<<")=0:"<<endl;
cout<<"x= "<<x<<endl;
}
return 0;
}

Provjera za unos vrijednosti 6 i 18:


Upisi koeficijent a: 6
Upisi koeficijent b: 18
Rjesenje jednadzbe 6*x+(18)=0 :
x=-3

Ugnježđivanjem naredbi if može se ispitivati više različitih


uslova. Ugnijezditi if naredbe znači smjestiti jednu if naredbu
unutar druge. Sljedeći zadatak pokazuje takav primjer.

Zadatak: Treba upisati prirodni broj, a zatim provjeriti je li uneseni broj


veći, manji ili jednak 100, te je li paran ili neparan.
Ispis neka bude oblika:

Upisi prirodni broj:


Uneseni broj ... je ... od 100. Paran je. (ili Neparan je.)

Zadatak je rješen s pomoću ugniježđenih naredbi if. Vanjski


blok naredbi if provjerava je li broj veći, manji ili jednak 100.
Unutarnji blokovi naredbi if (neovisno o tome je li broj veći ili
manji od 100) provjeravaju parnost broja.

Rješenje:
#include<iostream>
using namespace std;
int main()
{
int a;
cout<<"Upisi prirodni broj:";
cin>>a;
if (a==100)
cout<<"Unesen je broj 100. Paran je."<<endl;
else if (a<100)
{
cout<<"Uneseni broj "<<a<<" je manji od 100.";
if (a%2==0)
cout<<" Paran je."<<endl;
else
cout<<" Neparan je."<<endl;
}
else
{
cout<<"Uneseni broj "<<a<<" je veci od 100.";
if (a%2==0)
cout<<" Paran je."<<endl;
else
cout<<" Neparan je."<<endl;
}
return 0;
}

Provjera za unos vrijednosti 875:


Upisi prirodni broj: 875
Uneseni broj 875 je veci od 100 i neparan je.

You might also like