INSTRUCŢIUNEA SWITCH
Switch este o instructiune de decizie multipla care ramifica executia programului catre o anumita secventa de instructiuni dupa cum o expresie este egala cu o anumita valoare constanta.
Format:
switch (expresie)
instructiune
unde expresie este o expresie la care rezultatu 848c23i l evaluarii trebuie sa fie de tip int, iar instructiunea este o instructiune compusa, în care fiecare secventa de instructiuni ce se doreste a se executa pentru unele valori ale expresiei trebuie sa fie etichetata cu acele valori constante. Eticheta este de forma:
case expresie-constanta:
unde expresie-constanta este o constanta întreaga sau caracter sau o expresie constanta, sau de forma:
default:
Efectul instructiunii switch este urmatorul:
- se evalueaza expresia si se compara cu valoarea cazurilor prezente în etichetele case;
- daca valoarea expresiei este egala cu constanta de la unul din cazuri, executia continua de la secventa de instructiuni etichetata cu acel case în jos. Daca secventa respectiva se termina cu instructiunea break, se executa doar acele instructiuni, astfel executia continua cu urmatoarea secventa pâna se întâlneste un break sau sfârsitul instructiunii switch. Aceasta curgere în jos la urmatoarea secventa poate fi în avantajul programatorului, dar poate fi si cauza unor erori;
- daca valoarea expresiei nu este egala cu nici o constanta de la nici unul din cazuri, executia continua cu secventa de instructiuni etichetata cu default, iar daca default lipseste atunci nu se executa nimic.
Etichetele case si default pot fi puse în orice ordine, deci nu trebuie înteles ca ar trebui sa fie puse în ordine crescatoare si default la sfârsit, dupa cum si default poate sa lipseasca. În schimb, nu este permisa scrierea a doua etichete case identice.
Este indicat sa se foloseasca switch în situatia când realizarea unei decizii multiple cu ajutorul constructiei de if-uri imbricate ar fi suparatoare.
Programul urmator utilizeaza instructiunea seitch pentru a numara de câte ori apare cuvântul "far" într-un fisier text.
Exemplu 3.4.1.
# include stdio.h
main ( )
FILE pf;
int c, k, nrcuv;
if ((pf = fopen(" text.txt","r")) = = 0)
printf("Deschidere de fisier nereusita \n");
exit (1);
nrcuv = k = 0;
while (( c= fgetc (pf))! = EOF)
switch (c)
case ' ' : if (k<4)
k = 1;
else
nrcuv ++;
k = 1;
break;
case ' f ' :
case 'F ' : if (k = = 1)
k + +;
else
k = 0;
case ' a ' :
case 'A ' : if (k = = 2)
k + +;
else
k = 0;
break;
case ' r ' :
case 'R ' : if (k = = 3)
k + +;
else
k = 0;
break;
case '\n' : break;
default: k= 0;
printf (" Cuvântul far apare în fisier de %u ori \n", nrcuv);
Exemplu 3.4.2.
Instructiunea switch se mai poate folosi cu succes si la ramificari multiple, de exemplu ramificarile cerute de un menu.
# include "stdio.h"
main ( )
int k;
..............
printf(" M E N U \n");
printf(" 1 = creare fisier \n");
printf(" 2 = Modificare articol \n");
printf(" 3 = stergere articol \n");
printf(" 4 = Adaugare în coada \n");
printf(" Optiunea dvs.");
scanf (" %d , &k);
switch (k)
case 1: creare (.....) ; break;
case 2: modif (.....) ; break;
case 3: sterg (.....) ; break;
case 4: adaug (.....) ; break;
default: exit (1);
|