Structura
alternativa de selectie dirijeaza
executia unei secvente de instructiuni (S1,S2,...,Sn) in functie de valoarea
unui selector.
Instrucţiunea
SWITCH:
Sintaxă: switch
(selector)
{ case V1: instructiune S1; break;
case V2: instructiune S2; break;
...
case Vn: instructiune Sn; break;
default: instructiune
Sn+1;
}
unde: selector este o expresie de
tip int sau char,
V1-Vn sunt expresii
constante de acelaşi tip cu expresia selector.
S1,S2,…,Sn,Sn+1 reprezinta secvente de instructiuni
Clauza default
este opţională.
Mod de
funcţionare: instrucţiunea dirijează execuţia unei secvenţe de instrucţiuni în
funcţie de valoarea unui selector (se va executa instrucţiunea corespunzătoare
valorii selectorului, iar dacă valoarea nu apare în listă atunci se execută
instrucţiunea de pe ramura default – în cazul în care există). Dacă pe una din
ramuri de doresc includerea mai multor instrucţiuni, acestea vor fi grupate
într-o instrucţiune compusă.
Exemplu:
cin>>x;
switch (x)
{ case 1: cout<<”s-a introdus valoarea 1”; break;
case 2: cout<<”s-a introdus valoarea 2”;
break;
case 3: cout<<”s-a introdus
valoarea 3”; break;
default: cout<<”s-a introdus altceva”;
}
Se cunosc lungimea şi lăţimea unei suprafeţe în
formă dreptunghiulară. Se doreşte realizarea unui program C++ cu un meniu în
care atunci când se va tasta 1 să se afişeze perimetrul suprafeţei, când se
tastează 2 să se afişeze aria iar când se tastează 3 să se afişeze diagonala
suprafeţei. Se va verifica şi corectitudinea introducerii datelor.
Programul este
scris şi pe tablă în timp ce elevii lucrează individual pe calculator.
#include <iostream>#include <math.h>
using namespace std;
int main()
{
float lung, lat, p, a, d;
int optiune;
{ cout<<"lungimea = "; cin>>lung;
cout<<"latimea = "; cin>>lat;
if ((lung<=0) || (lat<=0))
cout<<"nu ati introdus corect laturile";
else
{ p=2*lung+2*lat; a=lung*lat; d= sqrt(lung*lung+lat*lat);
cout<<"1. perimetru\n";
cout<<"2. arie\n";
cout<<"3. diagonala\n";
cout<<"4. lalele\n";
cout<<"optiune= ";
cin>>optiune;
switch (optiune)
{ case 1: cout<<"perimetrul= "<<p;break;
case 2: cout<<"aria=" <<a;break;
case 3: cout<<"diagonala= "<<d;break;
case 4:cout<<"nr lalele="<<a*100;break;
default: cout<<"optiune invalida";
}
}
}
completarea algoritmului cu afişarea numărului de
bulbi de lalea care pot fi plantaţi pe întreaga suprafaţă(la apăsarea tastei 4)
dacă se cunoaşte faptul că dimensiunile suprafeţei sunt date în metri şi că fiecărei
lalele îi sunt necesari 10cm2.
Se va discuta
la tablă modul de realizarea al acestei cerinţe. Modificarea va fi în mesajul
explicativ al meniului şi în cadrul instrucţiunii switch, astfel:
switch (optiune)
{ case
1: cout<<”perimetrul= ”<<p; break;
case 2: cout<<”aria=
”<<a; break;
case 3: cout<<”diagonala=
”<<d; break;
case 4: cout<<”numar
de lalele= ”<<a*100; break;
default: cout<<”optiune invalida”;
}
tema pentru acasa:
“ Problemele
1 şi 2 de la pagina 23 din manual “