Operaţia de decizie

Instructiunea if

Sintaxa:

if (expresie)
 instructiune1;
[ else
 instructiune2;]

Ramura “else” este optionala.
La intalnirea instructiunii “if”, se evalueaza expresie (care reprezinta o conditie) din paranteze.
Daca valoarea expresiei este 1, sau diferita de 0 (conditia este indeplinita) se executa
instructiune1; daca valoarea expresiei este 0 (conditia nu este indeplinita), se executa
instructiune2. Deci, la un moment dat, se executa doar una dintre cele doua instructiuni: fie
instructiune1, fie instructiune2. Dupa executia instructiunii “if” se trece
la executia instructiunii care urmeaza acesteia.

Observaţii:

  1. Instructiune1 si instructiune2 pot fi instructiuni compuse (blocuri), sau chiar alte instructiuni if (if-uri imbricate).
  2. Deoarece instructiunea if testeaza valoarea numerica a expresiei (conditiei), este posibila prescurtarea: if (expresie), in loc de if (expresie != 0).
  3. Deoarece ramura else a instructiunii if este optionala, in cazul in care aceasta este omisa din secventele if-else imbricate, se produce o ambiguitate. De obicei, ramura else se asociaza ultimei instructiuni if.

Instructiunea switch

In unele cazuri este necesara o decizie multipla speciala. Instructiunea switch permite acest lucru.
Se testeaza daca valoarea pentru expresie este una dintre constantele specificate (expr_const_1, expr_const_2, etc.) si se executa instructiunea de pe ramura corespunzatoare. In schema logica test_expresie este una din conditiile: expresie=expr_const_1, expresie=expr_const_2, etc.

switch (expresie)
{
case expresie_const_1: instructiune_1;
 [break;]
case expresie_const_2: instructiune_2;
 [break;]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
case expresie_const_n-1: instructiune_n-1;
 [break;]
[ default: instructiune_n; ]
}

Este evaluata expresie (expresie aritmetica), iar valoarea ei este comparata cu valoarea expresiilor
constante 1, 2, etc. (expresii constante=expresii care nu contin variabile). In situatia in care valoarea expresie este egala cu valoarea expr_const_k, se executa instructiunea corespunzatoare acelei ramuri (instructiune_k).
Daca se intalneste instructiunea break, parcurgerea este intrerupta, deci se va trece la executia primei instructiuni de dupa switch. Daca nu este intalnita instructiunea break, parcurgerea continua. Break-ul cauzeaza deci, iesirea imediata din switch.
In cazul in care valoarea expresiei nu este gasita printre valorile expresiilor constante, se executa cazul marcat cu eticheta default (cand acesta exista). Expresiile expresie, expresie_const_1, expresie_const_2,etc., trebuie sa fie intregi.