CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
||||
|
||||
TERMENI importanti pentru acest document |
||||
Switch
Instructiunea switch este realizator special de decizii multiple
care testeaza daca o expresie se potriveste cu una dintr-un
numar de valori constante si ramifica corespunzator programul.
In capitolul 1 am scris un program care contorizeaza apari-
tiile fiecarei cifre, a spatiului, si a tuturor celorlalte
caractere, folosind o secventa de if else. Dam in continuare
acelasi program cu instructiunea switch.
main() /* contorizeaza cifre , blancuri , alte caractere */
printf('digits =');
for (i = 0; i < 10; i++)
printf(' %d', ndigit[i]);
printf('nwhite space= %d, other= %dn', nwhite,nother);
}
Switch evalueaza expresia intreaga din paranteze (in acest program
caracterul c) si compara valoarea ei cu toate cazurile. Fiecare
caz trebuie sa fie etichetat cu o constanta intreaga sau caracter
sau cu o expresie constanta. Daca un caz se potriveste cu valoa-
rea expresiei, executia incepe la acel caz. Cazul etichetat 'de-
fault' este executat daca nici unul din cazuri nu este satisfacut.
Un 'default' este optional; daca el nu este prezent si nici unul
din cazuri nu se potriveste nu se executa nici o actiune. Cazurile
si 'default' pot apare in orice ordine. Cazurile trebuie sa fie
toate diferite.
Instructiunea break declanseaza o iesire imediata din switch.
Deoarece cazurile servesc doar ca etichete, dupa ce codul unui caz
a fost executat, executia continua spre urmatoarea instructiune
daca nu nu luati o actiune explicita spre a iesi. Break si return
sint modurile cele mai uzuale de a parasi o instructiune switch. O
instructiune switch poate fi deasemenea folosita si pentru a forta
o iesire imediata dintr-o bucla while, for sau do, asa cum vom
discuta mai departe in acest capitol.
Ramificarea in cazuri este si buna si rea. Pe partea pozi-
tiva, ea permite mai multe cazuri pentru o singura actiune, asa
cum sint cazurile pentru blanc, tab sau linie noua in acest
exemplu. Dar implica deasemenea faptul ca, in mod normal, fie-
care caz trebuie sa se termine cu un break, pentru a preve-
ni ramificarea pe cazul urmator. Iesirea dintr-un caz in altul nu
este buna, fiind inclinata spre dezintegrare atunci cind progra-
mul este modificat. Cu exceptia etichetelor multiple pentru un
singur caz, aceste iesiri dintr-un caz in altul trebuie folo-
site cu economie.
Ca o problema de forma buna, puneti un break dupa ultimul
caz (la noi, cazul default) chiar daca logic nu este necesar.
Intr-o zi cind veti adauga la sfirsit un caz nou, aceasta bucatica
de programare defensiva va va salva.
Exercitiul 3.1. Scrieti o functie expand(s, t) care converteste
caracterele de tipul lui 'linie noua' si 'tab' in secvente
escape vizibile de tipul 'n' si 't' in timp ce se copiaza
sirul s in sirul t. Folositi instructiunea switch.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1072
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved