Sunteți pe pagina 1din 4

Laboratorul 8

Selecţie multiplă prin instrucţiunea SWITCH – CASE

1. Prezentarea noţiunilor teoretice


Instrucţiunea switch .. case este o modalitate mai bună de a scrie un
program atunci când apar o serie de if else sau atunci când dorim ca
utilizatorul să aleagă din mai multe variante posibile.
În unele cazuri este necesară o decizie multiplă specială.
Instrucţiunea switch permite acest lucru.

Reprezentare prin schema logică Reprezentare prin pseudocod:

test_expresie
Dacă expresie=expr_const_1
instrucţiune1;
instrucţiune1 [ieşire;]
break Altfel dacă
expresie=expr_const_2
instrucţiune2 instrucţiune2;
[ieşire;]
break

Altfel dacă
instrucţiune_n expresie=expr_const_n-1
instrucţiune n-1;

Se testează dacă valoarea pentru test_expresie este una dintre


constantele specificate (expr_const_1, expr_const_2, etc.) şi se execută
instrucţiunea de pe ramura corespunzătoare. În schema logică test_expresie
este una din condiţiile: expresie=expr_const_1, expresie=expr_const_2, etc.
Este evaluat test_expresie (expresie aritmetică), iar valoarea ei este
comparată cu valoarea expresiilor constante 1, 2, etc. (expresii
constante=expresii care nu conţin variabile). În situaţia în care valoarea
expresie este egală cu valoarea expr_const_k, se execută instrucţiunea
corespunzătoare acelei ramuri (instrucţiune_k). Dacă se întâlneşte
instrucţiunea break, parcurgerea este întreruptă, deci se va trece la execuţia
primei instrucţiuni de după switch. Dacă nu este întâlnită instrucţiunea
break, parcurgerea continuă. Break-ul cauzează deci, ieşirea imediată din
switch.

Sintaxa generală a instrucţiunii SWITCH este:

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; ]
}

În cazul în care valoarea expresiei nu este găsită printre valorile expresiilor


constante, se execută cazul marcat cu eticheta default (când acesta există).
Expresiile expresie, expresie_const_1, expresie_const_2,etc., trebuie să fie
întregi.

2. Aplicaţii practice
Problema 1:
Scrieţi un programul utilizând instrucţiunea switch care identifică operatorii
matematici folosiţi în C++:
#include <iostream.h>
void 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”;
}
}
Problema 2:
În funcţie de valoarea variabilei de tip char c (' +', '-', '*' sau ' /'), vom
efectua operaţia corespunzătoare între variabilele x şi y. Dacă variabila c are
valoarea '-' sau ' ! ', vom da mesajul "Nu e operator binar! ", iar dacă c are
orice altă valoare, vom da mesajul "Eroare".
#include<iostream.h>
main ()
{
char c;
float x=3.75, y=7.21;
cout<<"Introduceti un operator binar"<<endl;
cin>>c;
switch (c)
{
case '*': x *= y; cout<<" Valoarea calculata a lui x"<<x; break;
case '/': x /= y; cout<<" Valoarea calculata a lui x"<<x; break;
case '+': x += y; cout<<" Valoarea calculata a lui x"<<x; break;
case '-': x -= y; cout<<" Valoarea calculata a lui x"<<x; break;
case '~': cout<<" Nu e operator binar!"; break;
case '!': cout<<" Nu e operator binar!"; break;
default : cout<<" Eroare!";
}}

Problema 3:
Program ce indică ziua corespondentă datei introduse pentru luna
septembrie 2008 (data de 1 a lunii începe cu ziua de luni). Realizaţi schema
logică pentru acest program.

Problema 4:
Sa se scrie un program care sa afiseze numarul introdus de utilizator in litere pentru
intervalul 1-10, folosind instructiunea SWITCH.

S-ar putea să vă placă și