You are on page 1of 13

Upravljake naredbe

Naredbe uslovljavanja
upravljanje izvravanjem programa na osnovu uslova koji
su poznati u trenutku izvravanja
Upravljake naredbe Naredbe ciklusa
izvravanje (ponavljanje) jedne naredbe ili bloka naredbi
potreban broj puta, zavisno od uslova
Naredbe skoka
prekidanje izvravanja redosleda naredbi i nastavljanje na
definisanom mestu, tj. preskakanje naredbi

1 2

Upravljake naredbe Naredba if

Naredbe uslovljavanja Uslovno grananje na dva razliita puta


if Opti oblik
switch if(uslov) naredba1;
Naredbe ciklusa else naredba2;
while uslov je izraz koji vraa vrednost tipa boolean,
do while ili jedna promenljiva tipa tipa boolean
for naredba je jedna naredba ili blok naredbi
Naredbe skoka deo else nije obavezan
break Izvravanje
continue ako uslov vrati vrednost true izvrava se naredba1
return inae se izvrava naredba2 (ako else deo postoji)

3 4
Primeri za if Ugnjedeni uslovi
int a, b;
// a i b dobijaju neke vrednosti ... if(i == 10) {
if(a < b) a = 0; if(j < 20) a = b;
else b = 0; if(k > 100) c = d;
else a = c; // ovaj else se odnosi na uslov if(k > 100)
int brojPodataka, n; }
// ... else a = d; // ovaj else se odnosi na uslov if(i == 10)
if(brojPodataka > 0) {
ObradiPodatke(); // Blok od dve naredbe u if delu
brojPodataka -= n;
}
else
PrikupiPodatke(); // Jedna naredba u else delu
int i = n; // Naredba koja ne pripada if-else delu

5 6

Ugnjedeni uslovi if else if


if(uslov1) if(uslov1)
naredba1; naredba1;
if(i == 10) {
else if(uslov2) else
if(j < 20) {
naredba2; if(uslov2)
a = b;
else if(uslov3) naredba2;
if(k > 100) c = d;
naredba3; else
}
else if(uslov4) if(uslov3)
else a = c; // ovaj else se odnosi na uslov if(j < 20)
naredba4; naredba3;
}
else else
else a = d; // ovaj else se odnosi na uslov if(i == 10)
naredba5; if(uslov4)
naredba4;
else
naredba5;

7 8
Primer za if else if
class GodisnjaDobaSaIfElseIf {
Naredba switch
public static void main(String args[]) { Grananje u vie putanja zavisno od vrednosti izraza
int mesec = 4; // April
Opti oblik
String godisnjeDoba;
switch(izraz) {
if(mesec==12 || mesec==1 || mesec==2)
godisnjeDoba = "zima"; case vrednost1:
else if(mesec==3 || mesec==4 || mesec==5) niz_naredbi1;
godisnjeDoba = "prolee"; [break;]
else if(mesec==6 || mesec==7 || mesec==8) case vrednost2:
godisnjeDoba= "leto";
niz_naredbi2;
else if(mesec==9 || mesec==10 || mesec==11)
godisnjeDoba = "jesen";
[break;]
else ...
godisnjeDoba = "nepostojei mesec"; default:
System.out.println("Kada je mesec april, godinje doba niz_naredbiN;
je " + godisnjeDoba + "."); }
}
}
Kada je mesec april, godinje doba je prolee. 9 10

Primer za switch
Naredba switch class PrimerZaSwitch {
izraz je jedan od tipova: byte, short, int ili char public static void main(String args[]) {
Svaka od vrednosti je jedinstven literal (konstanta) for(int i=0; i<6; i++)
Ne sme se ponoviti ista vrednost u istom switch switch(i) {
case 0: System.out.println("i je nula."); break;
Sa break se zavrava switch
case 1: System.out.println("i je jedan."); break;
Ako ne postoji break nastavlja se izvravanje sledeeg case 2: System.out.println("i je dva."); break;
case case 3: System.out.println("i je tri."); break;
Deo default je opcioni default: System.out.println("i je vee od tri.");
}
}
}
i je nula.
i je jedan.
i je dva.
i je tri.
i je vee od tri.
11 i je vee od tri. 12
Primer za switch bez break Godinja doba sa switch
class PrimerBezBreak { class GodisnjaDobaSaSwitch {
public static void main(String args[]) {
public static void main(String args[]) {
int mesec = 4;
for(int i=0; i<9; i++) String godisnjeDoba;
switch(i) { switch (mesec) {
case 0: System.out.println("i = 0"); case 12:
case 1:
case 1: case 2: godisnjeDoba = "zima"; break;
case 2: System.out.println("i < 3"); break; case 3:
case 3: case 4:
case 5: godisnjeDoba = "prolee"; break;
case 4: System.out.println("i < 5"); break;
case 6:
default: System.out.println("i >= 5"); case 7:
} case 8: godisnjeDoba = "leto"; break;
case 9:
}
case 10:
} case 11: godisnjeDoba = "jesen"; break;
default: godisnjeDoba = "nepostojei mesec";
i=0 i<5
}
i<3 i >= 5 System.out.println("Kada je mesec april, godinje deoba je " +
i<3 i >= 5 godisnjeDoba + ".");
i<3 i >= 5 }
13 } 14
i<5 i >= 5

Ugnjedena naredba switch


Poreenje if i switch
switch (izraz_spoljasnjeg_switch) {
case 1: switch proverava samo jednakost, a if proizvoljan
switch (izraz_unutrasnjeg_switch) { logiki izraz
case 0: switch je efikasniji od ugnjedenih if else if
System.out.println("unutra je 0");
break;
case 1: // ne smeta spoljanjem switch
System.out.println("unutra je 1");
break;
}
break;
case 2:
...
}

15 16
Naredbe ciklusa Petlja while

Izvravanje (ponavljanje) jedne naredbe ili bloka naredbi Opti oblik while petlje
potreban broj puta, zavisno od uslova
while(uslov)
telo_petlje
Naredbe ciklusa (petlje)
while uslov je proizvoljan logiki izraz
do while telo_petlje je jedna naredba (moe biti i prazna
for naredba) ili blok naredbi
telo_petlje se ponavlja sve dok uslov ima
vrednost true
while petlja je sa proverom na vrhu, tj. ako uslov
ima vrednost false pri prvoj proveri, ne ulazi se u
petlju, tj. telo_petlje se ne izvrava nijednom
17 18

Primer za while petlju Primer za while bez tela petlje


class PrimerZaWhile {
class WhileBezTelaPetlje {
public static void main(String args[]) {
public static void main(String args[]) {
int n = 5; // Za n=0 petlja se ne bi izvrila nijednom
int i = 100, j = 200;
while(n > 0) {
// U petlji se nalazi sredina izmeu i i j
System.out.println("Vrednost n je " + n);
while(++i < --j) ; // Petlja bez tela ima samo znak ";"
n--;
System.out.println("Sredina je " + i);
}
}
}
}
}

Vrednost n je 5 Sredina je 150


Vrednost n je 4
Vrednost n je 3
Vrednost n je 2
Vrednost n je 1

19 20
Petlja do while Primer za do while
class PrimerZaDoWhile {
Opti oblik do while petlje public static void main(String args[]) {
int n = 5; // Za n=0 petlja bi se izvrila jednom
do do {
telo_petlje System.out.println("Vrednost n je " + n);
while(uslov); n--;
} while(n > 0);
uslov je proizvoljan logiki izraz }
telo_petlje je jedna naredba ili blok naredbi }
do while petlja je sa proverom na dnu: Vrednost n je 5
telo_petlje se izvrava jednom a posle toga se Vrednost n je 4
Vrednost n je 3
proverava uslov
Vrednost n je 2
ako uslov ima vrednost true, telo_petlje se Vrednost n je 1
izvrava ponovo, a ako je vrednost false izlazi se iz
petlje Za n=0 rezultat bi bio
21 Vrednost n je 0 22

Krae napisan primer za do while


Petlja for
class PromenjenPrimerZaDoWhile {
public static void main(String args[]) { Opti oblik for petlje
int n = 5; for(inicijalizacija; uslov; iteracija)
do
telo_petlje
System.out.println("Vrednost n je " + n);
while(--n > 0);
}
}

Vrednost n je 5
Vrednost n je 4
Vrednost n je 3
Vrednost n je 2
Vrednost n je 1

23 24
Petlja for
Primer za for
inicijalizacija je izraz
izvrava se samo jednom na poetku pri ulasku u petlju class PrimerZaFor {
public static void main(String args[]) {
obino inicijalizuje upravljaku promenljivu petlje
int n;
uslov je logiki izraz, proverava se pre izvravanja tela
for(n=5; n>0; n--)
petlje System.out.println("Vrednost n je " + n);
ako je vrednost true izvrava se telo petlje }
ako je false ne izvrava se telo petlje i izlazi se iz petlje }
obino zavisi od upravljake promenljive petlje
telo_petlje je jedna naredba ili blok naredbi Vrednost n je 5
Vrednost n je 4
iteracija je izraz Vrednost n je 3
izvrava se posle tela petlje Vrednost n je 2
obino menja upravljaku promenljivu petlje Vrednost n je 1

petlja se nastavlja proverom uslova i izvravanjem tela


petlje i iteracije sve dok je uslov taan 25 26

Deklaracija promenljive unutar for petlje Primer: provera da li je broj prost


class ProstBroj {
Upravljaka promenljiva petlje se esto deklarie unutar
public static void main(String args[]) {
petlje u delu inicijalizacija
int broj = 14;
Takva promenljiva postoji samo unutar petlje
boolean prost_broj = true;
for(int i=2; i < broj/2; i++) {
class DeklaracijaUnutarFor {
if((broj % i) == 0) {
public static void main(String args[]) {
prost_broj = false;
for(int n=5; n>0; n--)
break;
System.out.println("Vrednost n je " + n);
}
}
}
}
if(prost_broj) System.out.println("Prost");
else System.out.println("Nije prost");
}
}
27 28
Vie upravljakih promenljivih for petlje Uslov ne zavisi
U inicijalizaciji se moe deklarisati i inicijalizovati vie od upravljake promenljive for petlje
upravljakih promenljivih petlje class ForSaProizvoljnimUslovom {
U iteraciji se moe menjati vie promenljivih
public static void main(String args[]) {
Izrazi u inicijalizaciji i iteraciji se razdvajaju zarezima
boolean kraj = false;
class VisePromenljivihForPetlje { for(int i=0; !kraj; i++) {
public static void main(String args[]) { System.out.println("i je " + i);
for(int a=1, b=4; a<b; a++, b--) { if(i == 5) kraj = true;
System.out.println("a = " + a); }
System.out.println("b = " + b); }
} }
}
i je 0
} i je 1
a=1 i je 2
b=4 i je 3
a=2 i je 4
b=3 29 i je 5 30

for petlja bez inicijalizacije i iteracije


Beskonana for petlja
Delovi for petlje inicijalizacija ili iteracija, ili oba dela, mogu
for( ; ; ) {
da se izostave
// ...
class ForBezInicijalizacijeIIteracije { if(uslov)
public static void main(String args[]) { break;
boolean kraj = false; // ...
int i = 0; }
for( ; !kraj; ) {
System.out.println("i je " + i);
if(i == 5) kraj = true;
i++;
}
}
}

31 32
Ugnedene for petlje Naredbe skoka
class UgnjezdeneForPetlje {
public static void main(String args[]) { Prekidanje izvravanja redosleda naredbi i nastavljanje
for(int i=0; i<5; i++) { na definisanom mestu, tj. preskakanje naredbi
for(int j=i; j<5; j++) break
System.out.print(i); continue
System.out.println();
return
}
}
}

00000
1111
222
33
4
33 34

Naredba break Zavravanje niza naredbi u naredbi switch


class PrimerBezBreak {
Zavravanje niza naredbi u naredbi switch, tj. izlazak
public static void main(String args[]) {
iz naredbe switch
for(int i=0; i<9; i++)
Izlazak iz petlje u specijalnim sluajevima (uobiajeno je switch(i) {
da se iz petlje izlazi na osnovu uslova) case 0: System.out.println("i = 0");
Vaijanta naredbe goto case 1:
case 2: System.out.println("i < 3"); break;
case 3:
case 4: System.out.println("i < 5"); break;
default: System.out.println("i >= 5");
}
}
}

35 36
Izlazak iz for petlje sa break Izlazak iz while petlje sa break
class BreakPrekidaForPetlju { class BreakPrekidaWhilePetlju {
public static void main(String args[]) { public static void main(String args[]) {
for(int i=0; i<100; i++) { int i=0;
if(i == 5) break; // prekidanje petlje kad je i=5 while(i<100) {
System.out.println("i: " + i); if(i == 5) break; // prekidanje petlje kad je i=5
} System.out.println("i: " + i);
System.out.println("Petlja je zavrena."); i++;
} }
} System.out.println("Petlja je zavrena.");
}
i: 0 }
i: 1
i: 0
i: 2
i: 1
i: 3 i: 2
i: 4 i: 3
Petlja je zavrena i: 4
37 Petlja je zavrena 38

break u ugnjedenim petljama Naredba break sa oznakom


break prekida samo najdublje ugnjedenu petlju u kojoj se nalazi Opti oblik
class BreakUUgnjezdenimPetljama {
public static void main(String args[]) { oznaka:{
for(int i=0; i<3; i++) { ...
System.out.print("i = " + i + "; j: "); if(uslov) break oznaka;
for(int j=0; j<100; j++) { ...
if(j == 10) break; // prekida unutranju petlju za j=10
}
System.out.print(j + " ");
} oznaka oznaava blok naredbi iza kojeg se nastavlja
System.out.println(); program posle izvravanja oznaene naredbe break koja
} mora biti obuhvaena blokom
System.out.println("Petlja je zavrena.");
Moe se izai iz vie ugnjedenih blokova
}
} Ne moe se preskoiti blok koji ne obuhvata oznaenu
naredbu break
i = 0; j: 0 1 2 3 4 5 6 7 8 9
i = 1; j: 0 1 2 3 4 5 6 7 8 9 Naredba if je obavezna, inae se naredbe iza naredbe
i = 2; j: 0 1 2 3 4 5 6 7 8 9 break nikad ne bi izvravale, to je greka u prevoenju
39 40
Petlja je zavrena.
Primer za oznaeni break
class BreakSaOznakom {
Primer za for i oznaeni break
public static void main(String args[]) { class ForIBreakSaOznakom {
boolean t = true; public static void main(String args[]) {
prvi: {
spoljna: for(int i=0; i<3; i++) {
drugi: {
System.out.print("i = " + i + ": j:");
treci: {
System.out.println("Pre naredbe break."); for(int j=0; j<100; j++) {
if(t) break drugi; if(j == 10) break spoljna;
System.out.println("Posle naredbe break."); System.out.print(j + " ");
} }
System.out.println("U drugom bloku.");
System.out.println("Ovo se preskae.");
}
System.out.println("U prvom bloku.");
}
} System.out.println("Petlja zavrena.");
} }
} }
Pre naredbe break. i = 0: j: 0 1 2 3 4 5 6 7 8 9 Petlja zavrena.
U prvom bloku.
41 42

Primer sa grekom Naredba continue


Opti oblik
class PogresanBreak {
public static void main(String args[]) { petlja {
prvi: for(int i=0; i<3; i++) { ...
System.out.print("i = " + i + ": j:"); if(uslov) continue;
} ...
}
for(int j=0; j<100; j++) {
if(j == 10) break prvi; // Pogreno Slui za preskakanje naredbi tela petlje od naredbe
continue do kraja tela petlje, ali se ne naputa petlja
System.out.print(j + " ");
} u while i do while petljama posle continue se
} prelazi na proveru uslova
} u for petlji posle continue se prelazi na iteraciju
Naredba if je obavezna, inae se naredbe iza naredbe
continue nikad ne bi izvravale, to je greka u prevoenju
43 44
Primer za continue
Naredba continue sa oznakom
class PrimerZaContinue {
public static void main(String args[]) { Opti oblik
for(int i=0; i<10; i++) {
oznaka: petlja1 {
System.out.print(i + " ");
if(i%2 == 0) continue;
petlja2 {
System.out.println(""); ...
} if(uslov) continue oznaka;
} ...
} }
}
01
23 oznaka oznaava petlju koja e se nastaviti posle
45 izvravanja oznaene naredbe continue
67 Naredba if je obavezna, inae se naredbe iza naredbe
89 continue nikad ne bi izvravale, to je greka u prevoenju
45 46

Primer za oznaeni continue


class ContinueSaOznakom { Naredba return
public static void main(String args[]) {
spoljna: for(int i=0; i<5; i++) { Opti oblik
for(int j=0; j<5; j++) {
if(j > i) { tip ime_metode(lista_parametara) {
System.out.println(); ...
continue spoljna; if(uslov) return [vrednost];
}
...
System.out.print(i + " ");
}
}
} Slui za izlazak iz metode
System.out.println();
Posle naredbe return kontrola se vraa pozivaocu metode
}
} Naredba if je obavezna ako naredba return nije
poslednja naredba u metodi, inae se naredbe iza naredbe
0
1 1 return nikad ne bi izvravale, to je greka u prevoenju
2 2 2 vrednost ne postoji ako je tip metode void, inae postoji
3 3 3 3 47 48
4 4 4 4 4
Primer za return

class PrimerZaReturn {
public static void main(String args[]) {
boolean t = true;
System.out.println("Pre naredbe return.");
if(t) return; // povratak pozivaocu
System.out.println("Ovo se ne izvrava.");
}
}

Pre naredbe return.

49

You might also like