Documente Academic
Documente Profesional
Documente Cultură
Structura alternativ: n acest caz se va executa doar unul din dou blocuri de instruciuni n funcie de valoarea de
adevr a unei expresii logice
Structura alternativ multipl: n aceast situaie se va executa un bloc de instruciuni din mai multe variante posibile.
o conditie, transcris prin am promovat la toate materiile, conditie pe care o vom nota cu C;
o aciune transcris prin mesajul m voi duce n tabr, notata cu B1, aciune asociata cu cuvntul ATUNCI, adic se
execut dac i numai dac am promovat la toate materiile;
o aciune transcris prin mesajul stau s nv, notat cu B2, aciune asociat cu cuvntul ALTFEL, adic se execut
dac i numai dac NU am promovat la toate materiile
Structura alternativ este implementat n limbajul C++ de instruciunea IF. n continuare vom prezenta
modul de reprezentare a acestei structuri n limbaj pseudocod, n schem logic i n limbajul de programare
C++. Modul de execuie este identic pentru oricare din cele trei reprezentri. Sintetiznd cu notaiile de mai
sus structura alternativ se poate reprezenta astfel:
Pot exista i cazuri particulare de utilizare a acestei structuri, atunci cand unul dintre cele doua blocuri de
instruciuni lipseste.
Cazul 1. Daca lipseste B2 atunci structura se reprezinta astfel:
Cazul 2. Daca lipseste B1 atunci structura se reprezinta astfel:
Pot exista i situaii n care structurile alternative sunt incluse unele in altele. In acest caz spunem ca
instruciunilie if sunt imbricate. Exista o regula de asociere a cuvntului else de if:
n exemplul urmtor este sugerat cum sunt imbricate 3 instructiuni if. Pentru a le putea identifica uor ele
sunt scrise cu culoari diferite (negru, albastru si portocaliu).
Dac n aceasta schem grupm instruciunile cu acolade se poate schimba fundamental structura
programului:
Se observ c primul cuvnt else este asociat cu cel de-al doilea if, acest lucru fiind determinat de gruparea
ntre acolade a instructiunii if (c3), reprezentate pe desen cu portocaliu
Aplicaii
1. Se citesc dou numere ntregi a i b. S se determine valoarea maxim dintre ele.
2. S se determine valoarea maxima dintre trei numere memorate n variabilele a, b i c.
3. S se scrie un program care s rezolve ecuaia de gradul I: ax+b=0 , valorile lui a i b se citesc de la
tastatur i sunt valori reale. Se vor lua n discuie toate cazurile.
4. S se scrie un program care s rezolve ecuaia de gradul II: ax2+bx+c=0, valorile lui a, b, c se citesc de la
tastatur i sunt valori reale. Se vor lua n discuie toate cazurile.
switch(expresie)
{
case c1: secventa_instructiuni_1; break;
case c2: secventa_instructiuni_2; break;
........................................
case cn: secventa_instructiuni_n; break;
[default: secventa_instructiuni_n+1];
}
unde:
expresie are semnificaia de expresie de tip ntreg;
ci sunt constante de tip ntreg;
secventa_ instruciuni_i: reprezint o secven de instruciuni.
Principiul de execuie
- se evalueaz expresia;
- se compar apoi pe rnd valoarea expresiei din parantez cu valorile constantelor c1, c2,
... , ci. Dac ea coincide cu constanta ci, atunci se execut secvena de instruciuni i. n
cazul n care, valoarea expresiei nu coincide cu nici una din constantele c1, c2, ... , cn,
atunci se execut secvena de instruciuni n+1, de pe ramura default. Dup execuia
secvenei de instruciuni i se trece la instruciunea urmtoare instruciunii switch n
program.
Observatii importante!
Aternativa default este opional. In lipsa ei, dac valoarea expresiei nu coincide cu nici una din
constantele c1, c2, ..., cn, atunci instruciunea switch nu are nici un efect, i se trece la
urmtoarea instruciune din program ( cea care este plasat dup instruciunea switch).
Constantele c1, c2, ... cn trebuie s fie distincte.
Construcia break reprezint o instruciune. Ea termin fiecare secven de instruciuni i,
provocnd saltul la instruciunea urmtoare instruciunii switch, sau cum se mai spune realizeaz
ieirea din instruciunea switch.
Instruciunea break nu este obligatorie. n cazul cnd ea este absent, se trece n secven, adic
dup irul de instruciuni respectiv, se trece la irul urmtor din instruciunea switch.
Astfel, dac avem instuciunea switch de forma:
switch (expresie)
{
case c1: secventa_instructiuni_1;
case c2: secventa_instructiuni_2;
}
atunci ea se execut n felul urmtor:
- dac valoarea expresiei este egal cu c1, atunci se execut secvena de instruciuni 1 i apoi
secvena de instruciuni 2
- dac valoarea expresiei este egal cu c2, atunci se execut secvena de instuciuni 2;
- dac valoarea expresiei difer de valorile c1 i c2, atuci instruciunea switch de mai sus nu este
efectiv, ajungndu-se direct la prima instruciune de dup ea.
Aplicatie: Scriei un program care determin perimetrul i aria unui triunghi. Exist 4 situaii
posibile. Un triunghi poate fi:
1. isoscel
2. echilateral
3. dreptunghic
4. oarecare.
In funcie de cifra introdus de la tastatur (1, 2, 3 sau 4) se cere s se citeasc pentru fiecare tip
de triunghi datele necesare, astfel nct s se poat calcula perimetrul i aria triunghiului.