Naredbe i kontrola toka (C)
#fax #cs/prog/c [deo jezika C]
Program je niz naredbi.
Naredbi izraza i blokovi
Svaki izraz završeni sa ;
je naredba.
Naredba ima smisla samo ako ima sporedni efekat.
Postoji prazna naredba: ;
Više naredba grupisanih u blok tretiraju se kao jedna.
Unutra bloka mogu da se deklarišu promenljivi koji ne mogu se koristiti van bloka.
Blok:
{
...; // neke naredbe
...; // neke naredbe
} // posle } ne treba ;
Uslovi
if - else
if (izraz)
naredba1;
else // opcioni deo
naredba2;
Ako je izraz
ne-nula izvršiće naredba1
;
ako je izraz
nula izvršiće naredba2
;
Umesto naredba1
i naredba2
mogu se koristiti blokovi.
Konstrukcija else if
:
if (izraz1)
naredba1;
else if (izraz2)
naredba2;
else if (izraz3)
naredba3;
else
naredba4;
U sledećem primeru else
se odnosi na drugi if
:
if (izraz1)
if (izraz2)
naredba1;
else
naredba2;
Da bi odnosio na prvi if
:
if (izraz1) {
if (izraz2)
naredba1;
} else
naredba2;
switch
switch (izraz) {
case konst_izraz1 : naredbe1;
case konst_izraz2 : naredbe2;
...
default : naredbeN; // opcioni deo
}
Ako izraz
je jednak nekom konst_inrazK
, onda će biti izvršene sve naredbe naredbeK
, naredbe(K+1)
, ..., naredbeN
do kraja switch
, ili do prvog break
;
ako izraz
nije jednak nijednom konst_inrazK
, biće izvršene samo naredbeN
;
Posle :
moguće napisati koliko god naredbi bez { }
.
Često se koristi ovako:
switch (izraz) {
case konst_izraz1 : naredbe1; break;
case konst_izraz2 : naredbe2; break;
...
default : naredbeN; // opcioni deo
}
U ovom slučaju ako izraz
je jednak nekom konst_inrazK
, onda će biti izvršene samo naredbeK
;
ako izraz
nije jednak nijednom konst_inrazK
, biće izvršene naredbeN
;
Primeri:
switch (n % 4) {
case 1 :
case 2 :
case 3 : printf("Nije deljiv sa 4\n"); break;
default : printf("Deljiv je sa 4\n");
}
switch (dan) {
case 1 : printf("Ponedeljak\n"); break;
case 2 : printf("Utorak\n"); break;
case 3 : printf("Sreda\n"); break;
case 4 : printf("Četvrtak\n"); break;
case 5 : printf("Petak\n"); break;
case 6 : printf("Subota\n"); break;
case 7 : printf("Nedelja\n"); break;
default : printf("greška\n");
}
Petlje
while
while (izraz)
naredba;
Dok izraz
nije nula, izvršava se naredba
. Kad izraz
postaje nula, izlazi iz petlji i nastavlja sa izvršavanjem programa.
Beskonačna petlja:
while (1)
naredba;
for
for (izraz1; izraz2; izraz3)
naredba;
izraz1
— inicijalizacija: početni vrednosti promenljivih;
izraz2
— uslov;
izraz3
— korak;
Ekvivalentna je sa:
izraz1;
while (izraz2) {
naredba;
izraz3;
}
for ( ; izraz2; )
while (izraz2)
for ( ; ; )
while (1)
Operator ,
može da se koristi u izra1
i izraz3
Primeri:
for (i = 0; i < n; i++);
for (i = 0, j = 10; i < j; i++, j--);
do - while
do {
naredbe;
} while (izraz);
Ekvivalentna je sa:
naredbe;
while (izraz)
naredbe;
Naredbe break
i continue
petlja {
naredbe1;
if (izraz)
break/continue;
naredbe2;
}
break
— pri nailasku na break
, program izlazi iz petlje;
continue
— pri nailasku na continue
, program prelazi u sledeću iteraciju petlje (tj propušta naredbe2
);
Dejstvuju samo na unutrašnju petlju.
Uvek je moguće napisati kod bez break
i continue
;