3.11.
Instrucţiunea if:
Instrucţiunea de ramificare simplă if, în funcţie de valoarea unei expresii de
tip boolean, decide fluxul execuţiei. Sintaxa instrucţiunii este:
Expresia booleană din componenţa instrucţiunii if se numește condiţie. Execuţia
instrucţiunii if începe prin evaluarea condiţiei. Dacă rezultatul evaluării este true, atunci
se execută Instrucțiunea 1 , iar dacă condiția are valoarea false, atunci: fie că se execută
Instrucțiunea 2 situată după cuvântul-cheie else (dacă există), fie că se trece la
instrucțiunea situată după instrucțiunea if. În programul ce urmează instrucțiunea if
este utilizată pentru determinarea maximului a două numere x și y, citite de la
tastatură: [Link]
Scrieţi un program care calculează soluţiile ecuaţiei ax2 +bx+c = 0. Numerele
reale a, b şi c se citesc de la tastatură. [Link]
Se consideră trei segmente de dreaptă cu lungimile, respectiv, a, b şi c. Scrieţi
un program care verifică dacă din aceste segmente poate fi construit un
triunghi. În caz afirmativ, programul va afişa tipul triunghiului (echilateral,
isoscel sau scalen) şi aria acestuia. Pentru calcularea ariei triunghiului astfel
format, se va utiliza formula lui Heron. Numerele reale a, b şi c se citesc de la
tastatură. [Link]
3.12. Instrucțiunea de ramificare multiplă
În cazurile în care apare necesitatea de creare a unor fluxuri de execuție cu mai mult de două
ramificări, se utilizează instrucțiunile de ramificare multiplă. Instrucțiunea de ramificare multiplă
conține obligatoriu o expresie numită selector și o listă de instrucțiuni. Fiecare instrucțiune este
prefixată de una sau mai multe constante de caz. Sintaxa instrucțiunii în studiu este:
Instructiunea switch - de ramificare multipla se scrie in felul urmator:
switch ( expresie )
{ case v1 : I1; break;
case v2: I2; break;
case v3: I3; break;
...
case vn : In; break;
default : In+1;
}
Exemplu 1.
Se da variabila int i;
1. de citit variabila i
2. Daca i=1; 2; 3;4 – de scris ce valoare are i
3. in caz contrar – de scris ca e alta valoare
Programul C++ #include< bits/stdc++.h>
using namespace std;
int main ()
{ int i; //declarăm variabila i- local
cin>>i; // citim de la ecran variabila i
switch (i) // instrucțiunea switch
{ //begin
case 1: cout <<”Am citit 1”; break; //cazul 1
case 2: cout<<”Am citit 2”; break; // cazul 2
case 3: cout<<”Am citit 3”; break; // cazul 3
case 4: cout<<”Am citit 4”; break; // cazul 4
default: cout<<”Am citit alt nr diferit de 1, 2, 3,4”;
// în caz contrar
}return 0 ; // return 0; pentru a sfârși programul cu
succes
}
Exemplu 2
Se da char c; int a,b;
1. De citit c,
2. daca c- litera mare - de scris c-litera mare
Daca c- litera mica – de scris c- litera mica
Daca c- cifra - c- este cifra; de scris a+b; a-b; a*b; a div b; a mod b; a/b(b<>0) else
impartirea nu are sens
3. else de scris c- orice alt caracter si de scris ord(c); pred(c); succ(c)
Programul in C++
#include< bits/stdc++.h>
using namespace std;
char c; int a,b;
int main ()
{ cout<<”c=”; cin>>c;
switch (c) // instrucțiunea switch
{ case ’A’...’Z’: cout <<c<<”- litera mare”; break;
case ’a’...’z’: cout <<c<<”- litera mica”; break;
case ’0’...’9’: {cout <<c<<”- cifra”;
cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
cout<<”a+b=”<<a+b<<endl;
cout<<”a-b=”<<a-b<<endl;
cout<<”a*b=”<<a*b<<endl;
if (b) { cout<<”a div b=”<<a/b<<endl;
cout<<”a mod b=”<<a%b<<endl;
cout<<”a /b=”<<1.0*a/b<<endl;
} else cout<<”impartirea la 0 nu are
sens”<<endl;
break;
}
default : { cout <<c<<”- orice alt caracter”<<endl;
cout<<”ord(c)=”<<int(c)<<endl;
cout<<”pred(c)=”<<char(c-1)<<endl;
cout<<”succ(c)=”<<char(c+1)<<endl;
break;
}
} return 0;
}
Problemă: Scrieţi un program care execută repetitiv următoarele operaţii: 1) Citeşte de la
tastatură numerele reale x şi y. 2) Afişează pe ecran un meniu care conţine comenzile ce specifică
operaţiile care trebuie efectuate asupra numerelor x şi y. 3) Citeşte de la tastatură numărul întreg c
care indică comanda din meniu, selectată de utilizator. 4) În funcţie de comanda c, calculează şi
afişează pe ecran numărul real r – rezultatul efectuării operaţiei respective asupra numerelor x şi y.
5) Procesul repetitiv continuă până la introducerea de către utilizator a comenzii de ieşire din
program. Meniul ce trebuie afişat pe ecran are forma: CALCULEAZA: 1. Suma 2. Diferenta 3. Produsul
4. Raportul 5. Iesire. [Link]
Problemă: Zilele săptămânii luni, marţi, miercuri, …, duminică sunt notate prin numerele 1, 2, 3,
…, 7. Scrieţi un program care citeşte de la tastatură numărul x şi afişează pe ecran: a) denumirea zilei
ce corespunde numărului x; b) mesajul “Zi de şcoală”, dacă numărului x îi corespunde o zi de şcoală şi
mesajul “Zi liberă”, dacă numărului x îi corespunde o zi de odihnă.
Problema: Să se calculeze valoarea funcţiei f definită pe mulţimea numerelor reale, pentru un x
citit de la tastatură.
X, dacă x<0
Y= 0, dacă 0≤x≤3
0, dacă x>3