joi, 7 aprilie 2016

Instructiunea repetitiva switch


In unele cazuri este necesara o decizie multipla speciala. Instructiunea switch permite acest lucru.
Reprezentare prin pseudocod:
Daca expresie=expr_const_1
 instructiune1;
 [iesire;]
Altfel daca expresie=expr_const_2
 instructiune2;
 [iesire;]
............................................
Altfel daca expresie=expr_const_n-1
 instructiune_n-1;
 [iesire;]
Altfel instructiune_n;

Se testeaza daca valoarea pentru expresie este una dintre constantele specificate (expr_const_1, expr_const_2, etc.) si se executa instructiunea de pe ramura corespunzatoare. In schema logica test_expresie este una din conditiile: expresie=expr_const_1, expresie=expr_const_2, etc.
Sintaxa:
switch (expresie)
{
case expresie_const_1:  instructiune_1;
    [break;]
case expresie_const_2:  instructiune_2;
    [break;]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
case expresie_const_n-1:  instructiune_n-1;
    [break;]
[ default: instructiune_n; ]
}
    Este evaluata expresie (expresie aritmetica), iar valoarea ei este comparata cu valoarea expresiilor constante 1, 2, etc. (expresii constante=expresii care nu contin variabile). In situatia in care valoarea expresie este egala cu valoarea expr_const_k, se executa instructiunea corespunzatoare acelei ramuri (instructiune_k). Daca se intalneste instructiunea break, parcurgerea este intrerupta, deci se va trece la executia primei instructiuni de dupa switch. Daca nu este intalnita instructiunea break, parcurgerea continua. Break-ul cauzeaza deci, iesirea imediata din switch.
    In cazul in care valoarea expresiei nu este gasita printre valorile expresiilor constante, se executa cazul marcat cu eticheta default (cand acesta exista). Expresiile expresie, expresie_const_1, expresie_const_2,etc., trebuie sa fie intregi. In exemplul urmator, ele sunt de tip char, dar o data de tip char este convertita automat in tipul int.
xercitiu:   Sa rescriem programul pentru problema 2, utilizand instructiunea switch.
#include <iostream.h>
int main()
{
 char oper;
 cout<<”Introdu operator aritmetic, simplu, binar:”;
cin>>oper;
 switch (oper)
 {
  case (’+’):
         cout<<”Operatorul de adunare!\n”;
              break;
  case (’-’):
        cout<<”Operatorul de scadere!\n”;
              break;
case (’*’):
          cout<<” Operatorul de inmultire!\n”;
                 break;
  case (’/’):
        cout<<”Operatorul de impartire!\n”;
                  break;
  case (’%’):
        cout<<”Operatorul rest!\n”;
                  break;
 default:
          cout<<”Operator ilegal!\n”;
        }
     return 0;
}

Niciun comentariu:

Trimiteți un comentariu