Naredbe i kontrola toka (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;