Sunteți pe pagina 1din 23

Suport de curs – uz intern

FUNDAMENTELE
PROGRAMĂRII
Conf. univ. dr. Crina Anina Bejan
CAPITOLUL 6.
INSTRUCȚIUNI ALE
LIMBAJLUI C/C++
Execuția SECVENȚIALĂ a programelor în c++

■ Cel mai simplu program: secvența liniară a instrucțiunilor


■ Calculatoarele execută instrucțiuni liniar
– ; folosit pentru a separa o instrucțiune executabilă de următoarea
■ Toate variabilele trebuie declarate înainte de a fi folosite
■ Instrucțiunile secvențiale se executa de “sus “ în “ jos“
■ Dacă o instrucțiune modifică valoarea unei variabile și o instrucțiune ulterioara "mai târziu"
/ "mai jos" face referire la variabila în cauză, ea vede valoarea modificată a acesteia
■ În mod normal calculatoarele execută instrucțiuni:
– În aceeași ordine în care apar în program
– De sus în jos, de la stânga la dreapta, separate prin “;”
■ Fiind introduse doua valori A si B de la tastatura. Stabiliți daca B divide pe A
Execuția SECVENȚIALĂ a programelor în
■c++
Fiind introduse doua valori A si B de la tastatura. Stabiliți daca B divide pe A

#include <iostream>
using namespace std;// Program care stabileste daca B divide pe A
int main()
{
int A, B, R; // declarare variabile
bool dividesFlag;// declarare variabile
cout << “Introducerti A si B: “ << endl;
cin >> A >> B;
R = A % B; // Restul împarțirii lui A la B
dividesFlag = (R == 0); // Este restul zero?
cout << “ B este divizor a lui A? “ << dividesFlag << endl;
return 0;
}
Instrucțiunea decizională / condițională
■ Se întâlnește sub două forme:
– if (expresie)
{
instrucțiuni;
}
FALS ADEVARAT
Expresie
– if (expresie)
{
instructiune1; Instrucțiuni Instrucțiuni
}
else
{
instructiune2;
}
Instrucțiunea decizională / condițională
■ Relatii posibile pentru evaluarea expresiei in instructiunea conditionata :
if (a>b) – Daca a mai mare decat b
if (a>=b) - Daca a mai mare sau egal cu b
if (a<b) - Daca a mai mic decat b
if (a<=b) - Daca a mai mic sau egal cu b
if (a = = b) – Daca a egal b
FALS ADEVARAT
if (a!=b)- Daca a diferit b
Expresie
Pentru a=10 si b=15 avem:
(a>b)= FALS = 0
(a>=b) = FALS = 0 Instrucțiuni Instrucțiuni
(a<b) = ADEVARAT = 1
(a<=b) = ADEVARAT = 1
(a = = b)=FALS = 0
(a!=b)= ADEVARAT =1
Instrucțiunea decizională / condițională
■ Consideram doua variabile a si b. Sa se afiseze a daca a este mai mare decat b. Altfel sa se
afiseze b (maximul a doua valori intregi).

Daca (a>b) atunci afiseaza a a=10


b=15
Altfel afiseaza b

if (a>b) cout<<a;
FALS ADEVARAT
else cout b; Daca
(a=10>b=15)

Consideram valorile: a=10, b=15.


Expresia (10>15) are valoare de adevar FALS Afiseaza Afiseaza
b a

Consideram valorile: a=25, b=15.


Expresia (25>15) are valoare de adevar ADEVARAT
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi (presupunem ca utilizatorul introduce valori
corecte. Afisati maximul celor doua valori.
■ Rezolvare:
– Pas1 – stabilim datele de intrare și ieșire
■ Date de intrare: valorile introduce de la tastatura
■ Date de ieșire: afisarea maximului
– Pas2 – Analiza problemei
■ Stabilim condițiile ce trebuie îndeplinite de datele de intrare:
– Valori intregi. Presupunem ca utilizatorul introduce valori corecte.
■ Stabilim modul de calcul pentru datele de ieșire:
– Daca a>b atunci afiseaza a altfel afiseaza b
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori
Rezolvare: Pas3 – Realizarea schemei logice a algoritmului:

Start

Citeste a,b

Adevarat
Fals
(a>=b)

Afiseaza b Afiseaza a

Stop
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati
maximul celor doua valori
■ Rezolvare: Pas4 – Scrierea algoritmului în pseudocod:

START
intreg a, b
citeşte a, b
daca (a>=b)
atunci afiseaza a
sfarsit daca
altfel
afiseaza b
sfarsit altfel
STOP
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori
Rezolvare: Pas5 – Implementarea algoritmului în limbajul C++:

#include <iostream>
using namespace std;
int main( void )
{
int a, b, c; //declarare variabile
cout<<"a="; // se afiseaza pe ecran textul dintre ghilimele
cin>>a; //se preia in variabila a valoarea introdusa de utilizator

cout<<"b="; cin>>b;
if (a>=b)
{
cout<<"Maximul dintre "<<a<<“ si "<<b<<“ este “<< a<<endl;
}
else
{
cout<<"Maximul dintre "<<a<<“ si "<<b<<“ este “<< b<<endl;
}

}
Instrucțiunea decizională / condițională IMBRICATA
■ Se întâlnește sub două forme:
if (expresie 1) if (expresie 1)
{ {
if (expresie 2) if (expresie 2) FALS ADEVARAT
{ { Expresie
instrucțiuni; instrucțiuni;
} }
} Instrucțiuni
FALS ADEVARAT
} else
Expresie
{
instructiune2;
}
Instrucțiuni Instrucțiuni
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori.
■ Rezolvare:
– Pas1 – stabilim datele de intrare și ieșire
■ Date de intrare: valorile introduce de la tastatura
■ Date de ieșire: afisarea maximului
– Pas2 – Analiza problemei
■ Stabilim condițiile ce trebuie îndeplinite de datele de intrare:
– cele trei laturi trebuie să fie numere reale mai mari ca zero.
■ Stabilim modul de calcul pentru datele de ieșire:
– Daca a>b atunci afiseaza a altfel afiseaza b
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori
Rezolvare: Pas3 – Realizarea schemei logice a algoritmului:

Start

Citeste a,b

Fals Adevarat
(a>=0)
Fals Adevarat
(b>=0)
Adevarat
Fals
(a>=b)

Afiseaza Afiseaza b Afiseaza a


“valori incorecte”

Stop
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori
■ Rezolvare: Pas4 – Scrierea algoritmului în pseudocod:

START
intreg a, b
citeşte a, b
daca (a>=0)
daca (b>=0)
daca (a>=b)
atunci afiseaza a
sfarsit daca
altfel
afiseaza b
sfarsit altfel
sfarsit daca
altfel
afiseaza «valori incorecte»
sfarsit altfel
sfarsit daca
altfel
afiseaza «valori incorecte»
sfarsit altfel
STOP
■ Exemplu:
2. Se citesc de la tastatura doua valori intregi pozitive. Afisati maximul celor doua valori
Rezolvare: Pas5 – Implementarea algoritmului în limbajul C++:

#include <iostream>
using namespace std;
int main( void )
{
int a, b, c; //declarare variabile
cout<<"a="; // se afiseaza pe ecran textul dintre ghilimele
cin>>a; //se preia in variabila a valoarea introdusa de utilizator

cout<<"b="; cin>>b;
if (a>=0){
if(b>=0){
if (a>=b){
cout<<"Maximul dintre "<<a<<“ si "<<b<<“ este “<< a<<endl;
}
else {
cout<<"Maximul dintre "<<a<<“ si "<<b<<“ este “<< b<<endl;
}
}
else cout<<“Valori incorecte “<<endl;
}
else
cout<<" Valori incorecte " <<endl;

}
■ Exemplu:
2. Se citesc de la tastatura laturile unui triunghi. Realizați un program care determina triunghiul
este isoscel, echilateral sau dreptunghic. Afișați un mesaj corespunzător
■ Rezolvare:
– Pas1 – stabilim datele de intrare și ieșire
■ Date de intrare: valorile laturilor triunghiului pentru care alegem trei variabile (a, b și c)
care vor desemna spațiul din memoria calculatorului unde se vor păstra valorile introduse
de utilizator.
■ Date de ieșire: mesaj cu tipul de triunghi.
– Pas2 – Analiza problemei
■ Stabilim condițiile ce trebuie îndeplinite de datele de intrare:
– cele trei laturi trebuie să fie numere reale mai mari ca zero. Presupunem că
utilizatorul introduce valori corecte
■ Stabilim modul de calcul pentru datele de ieșire:
– Triunghi isoscel: doua laturi egale a=b sau a=c sau b=c
– Triunghi echilateral: toate laturile egale a=b=c
– Triunghi dreptunghic: laturile trebuie sa satisfaca relatia
𝒂𝟐 + 𝒃𝟐 = 𝒄𝟐 𝒔𝒂𝒖 𝒃𝟐 + 𝒄𝟐 = 𝒂𝟐 𝒔𝒂𝒖 𝐚𝟐 + 𝒄𝟐 = 𝒃𝟐
■ Exemplu:
2. Se citesc de la tastatura laturile unui triunghi. Realizați un program care determina triunghiul este
isoscel, echilateral sau dreptunghic. Afișați un mesaj corespunzător
■ Rezolvare: Pas3 – Realizarea schemei logice a algoritmului:
Start

Citeste a,b,c

Stop
NU a=b=c DA

Afiseaza
“Triunghiul este
NU a=b ||b=c DA
||c=a echilateral”

Afiseaza
𝒂^𝟐+𝒃^𝟐=𝒄^𝟐 || DA “Triunghiul este
NU 𝒃^𝟐+𝒄^𝟐=𝒂^𝟐 ||
𝐚^𝟐+𝒄^𝟐=𝒃^𝟐 isoscel”

Afiseaza
“Triunghiul este
dreptunghic”
■ Exemplu:
2. Se citesc de la tastatura laturile unui triunghi. Realizați un program care determina triunghiul este isoscel, echilateral sau dreptunghic. Afișați
un mesaj corespunzător.
■ Rezolvare:
– Pas4 – Scrierea algoritmului în pseudocod:
START
real a, b, c
citeşte a, b, c
daca (a=b=c)
scrie ‘Triunghiul este echilateral‘
sfarsit daca
altfel
daca (a=b&& ||b=c|| c=a)
scrie ‘Triunghiul este isoscel‘
sfarsit daca
altfel
daca (𝑎2 + 𝑏2 = 𝑐 2 𝑠𝑎𝑢 𝑏2 + 𝑐 2 = 𝑎2 𝑠𝑎𝑢 𝑎2 + 𝑐 2 = 𝑏2 )
scrie ‘Triunghiul este dreptunghic‘
sfarsit daca
sfarsit altfel
sfarsit altfel
STOP
■ Exemplu:
2. Se citesc de la tastatura laturile unui triunghi. Realizați un program care determina triunghiul este isoscel,
echilateral sau dreptunghic. Afișați un mesaj corespunzător.
■ Rezolvare:
– Pas5 – Implementarea algoritmului în limbajul C++:

#include <iostream>
using namespace std;
int main( void )
{
float a, b, c; //declarare variabile
cout<<"latura a="; // se afiseaza pe ecran textul dintre ghilimele
cin>>a; //se preia in variabila a valoarea introdusa de utilizator

cout<<"latura b="; cin>>b;


cout<<"latura c="; cin>>c;
if (a==b && b==c && c==a)
cout<<" Triunghiul este echilateral "<<endl;
else if (a==b || b==c || c==a )
cout<<" Triunghiul este isoscel "<<endl;
else if (𝑎 ∗ 𝑎 +𝑏∗𝑏 = 𝑐 ∗ 𝑐 𝑠𝑎𝑢 𝑏 ∗ 𝑏 + c ∗ 𝑐 = 𝑎 ∗ 𝑎 𝑠𝑎𝑢 𝑎 ∗ 𝑎 + 𝑐 ∗ 𝑐 =b∗𝑏 )
cout<<" Triunghiul este dreptunghic "<<endl;
}
■ Exemplu:
2. Să se scrie un program care să rezolve ecuaţia de gradul II: ax2+bx+c=0, valorile lui a, b, c se
citesc de la tastatură şi sunt valori reale. Se vor lua în discuţie toate cazurile
Rezolvare:
– Pas1 – stabilim datele de intrare și ieșire
■ Date de intrare: valorile coeficientilor a, b, c.
■ Date de ieșire: valorile radacinilor ecuatieie sau mesaj corespunzator.
– Pas2 – Analiza problemei
■ Stabilim condițiile ce trebuie îndeplinite de datele de intrare:
– Valorile coeficientilor numere reale
■ Stabilim modul de calcul pentru datele de ieșire:
– delta=𝑏 2 − 4𝑎𝑐
– Delta <0 – exuatia nu are solutii reale
– Delta=0 – ecuatia are solutii egale x1=x2=-b/(2*a)
Delta>0 –ecuatia are doua solutii
x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
Rezolvare: Pas5 – Implementarea algoritmului în limbajul C++:
#include <iostream>
using namespace std;
int main( void ){
float a,b,c,x, delta,x1,x2;
cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"c="; cin>>c;
if(a==0)
if(b==0)
if(c==0)
cout<<"Exista o infinitate de solutii!";
else
cout<<"Ecuatie imposibila!";
else{cout<<"Ecuatie de gr I cu solutia ";
x=-c/b;
cout<<x;}
else{ delta=pow(b,2)-4*a*c;
if(delta<0)
cout<<"Ecuatia nu are solutii reale!";
else
if(delta==0){ cout<<"Ecuatia are solutii egale!”;
cout<<”x1=x2="<< -b/(2*a);}
else { x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
cout<<"Ecuatia are solutii reale!"<<endl;
cout<<"x1="<<x1<<endl;cout<<"x2="<<x2 <<endl;
}
}
}
ÎNTREBĂRI?

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