Documente Academic
Documente Profesional
Documente Cultură
Cuprins Pagina
Recapitulare 17
1
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
Orice program C/C++, indiferent de complexitatea sa, poate fi scris utilizând una, două
sau toate cele trei structuri de bază: secvența, selecția și repetiția. Aceste structuri sunt numite
structuri de control sau structuri logice, deoarece ele controlează fluxul logic al problemei și
astfel controlează ordinea în care computerul execută instrucțiunile programului.
Structura secvențială corespunde execuției într-o anumită ordine, a unui set de
instrucțiuni. Secvența poate conține oricâte instrucțiuni, dar acestea se execută pas cu pas, până
la terminarea secvenței, fără să existe o opțiune de ramificare sau salt peste anumite instrucțiuni.
Structura secvențială este utilizată în toate programele.
Ex:
#include < iostream.h >
void main ()
{
float nota_proba1, nota_proba2;
cin>> nota_proba1;
cin>> nota_proba2;
medie= (nota_proba1+ nota_proba2)/2;
cout <<”medie examen =“<<medie;
}
Legat de structurile de control există un alt concept: instrucțiunea compusă sau bloc.
Instrucțiunea compusă este un grup de instrucțiuni care sunt separate prin punct și virgulă,
grupate împreună într-un bloc cuprins intre paranteze: {}
Forma: {
declaraţii şi definiţii locale blocului
instrucţiuni
}
Structura decizională (de selecție) indică faptul că într-un anumit punct al programului
trebuie luată o decizie (în funcție de anumite condiții), urmată de o acțiune corespunzătoare
derivată din această decizie.
În C/C++ există trei tipuri de structuri decizionale:
if (decizia simplă)
if/else
3
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
switch
Nu Da
Funcţionare: se evaluează expresia din paranteze. Apoi, dacă expresia are valoarea
diferită de 0 (adevărat) se execută instrucţiune. Altfel, se trece la instrucţiunea următoare
instrucţiunii if.
Obs: În unele cazuri, este necesar să se efectueze mai multe instrucțiuni atunci când
condiția este adevărată, în aceste situații, acele instrucțiuni simple pot fi scrise ca o singură
instrucțiune compusă (bloc).
Forma generală în acest caz este:
if (expresie)
{
instrucțiune 1;
...
instrucțiune N;
}
Ex 1:
int a = 10;
4
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
if(a > 5)
{
a ++;
cout << a;
}
Răspuns: 4 5
Structura if/else
Nu Da
Funcţionare: se evaluează expresia din paranteze. Apoi, dacă expresia are valoarea
diferită de 0 (adevărat) se execută instrucţiune1 şi apoi se trece la instrucţiunea următoare
instrucţiunii if; altfel, se execută instrucţiune2 şi apoi se trece la instrucţiunea următoare
instrucţiunii if.
Obs:
1) Înainte de cuvântul cheie else nu se pune ’;’ dacă instrucţiune1 este o instrucţiune compusă,
altfel se pune obligatoriu.
2) Ramurile instrucţiunii if pot conţine la rândul lor alte instrucţiuni if (se numesc if-uri
imbricate).
3) Ramurile instrucţiunii if pot conţine instrucțiuni compuse; forma generală este:
if (expresie)
{
instrucțiune 1;
...
instrucțiune N;
}
else
{
instrucțiune 1;
...
instrucțiune N;
}
6
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
x+y, z>0
e= x*y, z=0
x-y, z<0
#include <iostream.h>
void main()
{
double x,y,z,e;
cout<<”x=”;cin>>x; cout<<”y=”;cin>>y; cout<<”z=”;cin>>z;
if (z>0) e=x+y;
else if (z= =0) e= x*y; // se poate scrie şi if (!z)
else e = x-y;
cout<<e;
}
10.3. Structura repetitivă: ciclul cu test iniţial (cu număr necunoscut de paşi,
condiţionată anterior)
7
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
{
a--;
b++;
}
8
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
2) secvenţele următoare calculează nr. obţinut prin inversarea cifrelor unui nr. n citit de la
tastatură.
#include <iostream.h> #include <iostream.h>
main() main()
{ {
int n, ninv=0; cout<<”n=”; cin>>n; int n, ninv=0; cout<<”n=”; cin>>n;
while(n) while(ninv=ninv*10 + n%10, n/=10);
{ cout<<”numarul inversat”<<ninv;
ninv=ninv*10 + n%10; n= n/10; }
Obs: datorită multiplelor posibilităţi
}
de lucru cu expresii, s-au folosit mai
cout<<”numarul inversat”<<ninv; multe expresii separate prin virgulă.
Valoarea produsă de expresie este
} dată de ultima din şirul lor.
Răspuns: 30
9
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
i)
if (a >= 0)
if (a < 50)
cout << "valoarea lui a este mica"<<endl;
else
cout << "valoarea lui a este negativa"<<endl;
Răspuns: mesajul afişat va fi: "valoarea lui a este negativa" deoarece compilatorul asociază
cuvântul cheie “else” cu cel mai apropiat “if” care îl precede. Practic, aranjarea corectă a liniilor
de cod în acest caz este:
if (a >= 0)
if (a < 50)
cout << "valoarea lui a este mica"<<endl;
else
cout << "valoarea lui a este negativa"<<endl;
ii)
if (a >= 0)
{
if (a < 50)
cout << "valoarea lui a este mica"<<endl;
}
else
cout << "valoarea lui a este negativa"<<endl;
i = 0;
while(i <=50)
i += 5;
Răspuns: 55
int a = 10;
if (a = 5)
a ++;
cout << a;
Răspuns: 6
num = 0;
while (num < 10)
{
cout<<num<<” “;
num = num + 1;
}
Răspuns: 0 1 2 3 4 5 6 7 8 9
11
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
if (a<b)
c--;
}
cout << a*b*c << endl;
Răspuns: 750
Test de autoevaluare 1
a) 85 75 b) 85 75 65 55 c) 80 70 60 d) 80 70 60 50
12
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
a) 10 55 b) 55 c) 5 d) 10
a) 10 b) 4 4 4…………. c) 20 d) 1
13
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
xy ( x y ) 2
14
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
majusculă.
a) 15 b) 5 c) 20 d) 10
9. Care dintre următoarele instrucţiuni C++ este corect scrisă din punct
de vedere sintactic?
a) if a==1 cout << ”corect” b) if(a==1) cout << ”corect”;
c) if(a==1) cin << ”corect” d) if(a==1) cout >> ”corect”;
Nr puncte Nivel
0 p - 20 p insuficient
21 p - 40 p suficient
41 p - 60 p bine
61 p - 80 p foarte bine
81 p - 100 p excelent
15
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
if (nr_puncte > 0)
cout<< “nivel = insuficient”;
else if (nr_puncte > 20)
cout<< “nivel = suficient”;
else if (nr_puncte > 40)
cout<< “nivel = bine”;
else if (nr_puncte > 60)
cout<< “nivel = foarte bine”;
else if (nr_puncte > 80)
cout<< “nivel = excelent”;
1. d)
2. a)
3. b)
4. b)
5. b)
6.
#include<iostream.h>
#include<conio.h>
void main()
{
unsigned long n;
unsigned int suma = 0; // declarare si initializare variabila suma
clrscr(); // sterge ecranul
cout << "Introduceti numarul n: "; cin >> n;
while(n>0)
16
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
{
suma += n % 10; // se mai poate scrie si suma = suma + n % 10;
n /= 10; // se mai poate scrie si n = n / 10;
};
cout << "Suma cifrelor numarului este " << suma << endl;
cout << endl << "Apasati o tasta...";
getch();
};
Recapitulare
17
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri algoritmice fundamentale
Bibliografie:
18
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii