Borland C++ Instructiunea SWITCH-CASE

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. 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 Reprezentare prin schema logică break break instrucţiune1 instrucţiune2 instrucţiune_n Reprezentare prin pseudocod: Dacă expresie=expr_const_1 instrucţiune1; [ieşire;] Altfel dacă expresie=expr_const_2 instrucţiune2; [ieşire;] Altfel dacă expresie=expr_const_n-1 instrucţiune n-1; test_expresie

Transcript of Borland C++ Instructiunea SWITCH-CASE

Page 1: Borland C++ Instructiunea SWITCH-CASE

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.

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

Reprezentare prin schema logică

break

break

instrucţiune1

instrucţiune2

instrucţiune_n

Reprezentare prin pseudocod: Dacă expresie=expr_const_1 instrucţiune1; [ieşire;] Altfel dacă expresie=expr_const_2 instrucţiune2; [ieşire;] Altfel dacă expresie=expr_const_n-1

instrucţiune n-1;

test_expresie

Page 2: Borland C++ Instructiunea SWITCH-CASE

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

Page 3: Borland C++ Instructiunea SWITCH-CASE

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:

Page 4: Borland C++ Instructiunea SWITCH-CASE

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