Documente Academic
Documente Profesional
Documente Cultură
Structurile alternative
Structurile alternative permit executarea unor anumite secvențe de cod (ramificarea
codului), în funcție de valoarea unei variabile sau au unei expresii logice. Cele două tipuri de
structuri alternative ce pot fi utilizate în C# sunt:
secvența if-else-if – include o expresie logică și, în funcție de valoarea ei, conduce la
ramificarea în două direcții posibile. În cazul în care există mai mult de două secvențe
ramificate, atunci pot fi folosite secvențele if-else-if imbricate;
secvența switch – include o expresie logică și oferă mai multe ramificații, permițând
executarea mai multor secvențe de cod, în funcție de valoarea de adevăr a expresiei logice.
............
default:
secvență_instrucțiuni;
..............
break;
}
Atunci când expresia logică este evaluată ca fiind falsă, atunci controlul programului este
transferat instrucțiunii imediat următoare structurii repetitive. Astfel, următorul program cere
utilizatorului să introducă două numere întregi și două caractere, iar apoi afișează, folosind o
structură repetitivă cu test inițial, toate numerele întregi cuprinse între nr1 și nr2 precum și toate
caracterele cuprinse între ch1 și ch2. În cazul în care nr1 nu este mai mic decât nr2 sau
caracterul ch1 este situat alfabetic după caracterul ch2 (expresia logică este evaluată cu
valoarea de adevăr false încă de la prima evaluare), atunci secvența de instrucțiuni nu se va
executa repetat niciodată. Dacă expresia este evaluată cu valoare de adevăr, se va afișa
repetat valoarea întregului nr1, respectiv (în cea de-a doua structură repetitivă) a caracterului
ch1, care apoi este incrementat la fiecare iterație. Secvența de instrucțiuni se va executa
repetat cât timp nr1<=nr2, respectiv cât timp ch1<ch2 pentru cea de-a doua structură repetitivă.
Structura repetitivă cu test final: DO WHILE
Similar structurii repetitive cu test inițial, și cea cu test final permite executarea repetată
a unei secvențe de atât timp cât expresia logică evaluată (testul final) este evaluat cu valoarea
de adevăr. Diferența dintre cele două structuri repetitive constă în faptul că, în cazul celei cu
test final, secvența de instrucțiuni se execută cel puțin odată, deoarece evaluarea expresiei
logice se face la sfârșitul blocului de instrucțiuni ce se va executa repetat. În acest sens,
instrucțiunea do…while presupune executarea corpului de instrucțiuni cel puțin odată. Sintaxa
acesteia este următoarea:
do {
................
................
// secvența de instrucțiuni care se va executa repetat
} while(expresie logică);
Structura repetitivă cu contor
Structura repetitivă cu contor se utilizează atunci când se dorește executarea repetată
a unei secvențe de instrucțiuni și se cunoaște numărul de iterații ce se vor realiza. Sintaxa
acesteia este următoarea:
for(inițializarea variabile; expresie logică; incrementare/decrementare variabilă)
{
secvență de instrucțiuni
}
unde:
inițializarea variabile se referă la atribuirea unei valori inițiale variabilelor care controlează
structura repetitivă;
expresie logică este o condiție booleană cu semnificația că secvența de instrucțiuni se va
executa repetat atât timp cât această condiție este evaluată cu valoarea de adevăr
adevărat; atunci când condiția logică devine falsă, se abandonează structura repetitivă și
se execută instrucțiunea imediat următoare structurii repetitive;
incrementare/decrementare variabilă se referă la modificarea (la fiecare iterație) valorii
variabilei care controlează structura repetitivă.
Exemplu:
Instrucțiunea continue
Instrucțiunea continue are rolul de a forța neexecutarea secvenței de instrucțiuni din
interiorul structurii repetitive, făcând saltul către secvența de incrementare aferentă. Spre
deosebire de instrucțiunea break, continue întrerupe execuția secvenței de instrucțiuni, fără
însă să abandoneze structura repetitivă, ci permițând executarea următoarei iterații.
Astfel, codul sursă din exemplul următor permite însumarea doar a numerelor întregi
pare dintre 1 și 10. Atunci când se ajunge la un număr impar, instrucțiunea continue nu permite
execuția liniei S = S + i;, realizând saltul către secvența de incrementare i++. Astfel, la final,
variabile S va avea valoarea 30.