Instrucţiunea switch

Instrucţiunea switch.
*switch este o instrucţiune decizională multiplă (cu mai multe ramuri). Structura ei este
următoarea:
switch (expresie_intreaga)
{
case val1:
/* grupul de instructiuni 1 */
break;
case val2:
/* grupul de instructiuni 2 */
break;
/* .... */
case valn:
/* grupul de instructiuni n */
break;
default:
/* grupul de instructiuni n+1 */
}
Semnificaţia instrucţiunii este: Se evaluează expresia expresie_intreaga care trebuie sa
aibă o valoare întreagă. Avem următoarele situaţii:
 Dacă valoarea expresiei este egală cu val1, atunci se execută grupul de instrucţiuni 1.
 Dacă valoarea expresiei este egală cu val2, atunci se execută grupul de instrucţiuni 2.
…………….
 Dacă valoarea expresiei este egală cu val n, atunci se execută grupul de instrucţiuni n.
 Dacă valoarea obţinută în urma evaluării expresiei nu este egală cu nici una dintre
valorile val1, … , valn, atunci se execută grupul de instrucţiuni n+1.
Să facem câteva observaţii:
1) La instrucţiunea switch grupurile de instrucţiuni de pe ramuri nu trebuiesc
delimitate cu acolade. Nu este greşit însă dacă le delimităm totuşi cu acolade.
18
2) După fiecare grup de instrucţiuni punem în general instrucţiunea break. În lipsa
instrucţiunii break se execută şi instrucţiunile de pe ramurile de mai jos până la
sfârşitul instrucţiunii switch (inclusiv cele de pe ramura default) sau până se
întâlneşte primul break. Instrucţiunea break întrerupe execuţia instrucţiunii switch
şi a celor repetitive (for, while şi do ... while).
3) Ramura default poate lipsi.
4) Dacă există ramura default, nu este obligatoriu să fie ultima.
5) Valorile val1, val2, …, valn trebuie să fie constante întregi şi distincte două câte
două.
Spre exemplificare considerăm o secvenţă de program pentru calcularea într-un punct a
valorii unei funcţii f cu trei ramuri:

int x;
printf("Dati un numar întreg: ");
scanf("%d",&n);
printf("Valoarea functiei este f(%d)=",x);
switch (x)
{
case 0:
printf("-1"); break;
case 1:
printf("-2"); break;
default:
printf("%d",x+1); break;
}

0 comentarii:

Trimiteți un comentariu