SlideShare a Scribd company logo
Programarea calculatoarelor
#3
Adrian Runceanu
www.runceanu.ro/adrian
2016
C++
Instrucţiunile limbajului C++
copyright@www.adrian.runceanu.ro
Curs 3
Instrucţiunile limbajului C++
02.12.2016 Programarea calculatoarelor 2
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 3
copyright@www.adrian.runceanu.ro
3.1. Instrucţiunea vidă
Limbajul C++ are câteva instrucţiuni cu
ajutorul cărora se pot construi programe.
Acestea sunt:
Instrucţiunea vidă:
Instrucţiunea compusă:
este delimitată de { şi se termină cu }.
02.12.2016 Programarea calculatoarelor 4
;
{ . . . . }
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 5
copyright@www.adrian.runceanu.ro
3.2. Instrucţiunea compusă
Uneori programele trebuie să efectueze una sau
mai multe instrucţiuni atunci când o condiţie este
îndeplinită (de exemplu într-o instrucţiune if) şi alte
instrucţiuni când condiţia nu este îndeplinită.
Sau atunci când o condiție se evaluează într-o
structură (instrucțiune) repetitivă – de tip while, do
while sau for, iar prelucrările din acea structură pot
să fie compuse din una sau mai multe instrucțiuni.
02.12.2016 Programarea calculatoarelor 6
copyright@www.adrian.runceanu.ro
3.2. Instrucţiunea compusă
Limbajul C++ consideră instrucţiunile ca fiind
instrucţiuni simple şi instrucţiuni compuse:
O instrucţiune simplă este de fapt o singură
instrucţiune, cum ar fi aceea de atribuire sau de apel
al unei funcţii standard (de exemplu funcţia cout).
O instrucţiune compusă este alcătuită din două
sau mai multe instrucţiuni incluse între acolade.
02.12.2016 Programarea calculatoarelor 7
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.2. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 8
copyright@www.adrian.runceanu.ro
3.3. Instrucţiunea expresie
Instrucţiunea expresie:
Are 3 forme:
a) instrucţiunea de atribuire
b) instrucţiunea de apel de funcţie
c) instrucţiunea de incrementare / decrementare
02.12.2016 Programarea calculatoarelor 9
expresie;
copyright@www.adrian.runceanu.ro
3.3. Instrucţiunea expresie
a) instrucţiunea de atribuire
Exemplu:
int x, y, z;
z = x + 5 * y;
x + = 10; (semnificație: x = x + 10;)
02.12.2016 Programarea calculatoarelor 10
variabila = expresie;
sau
variabila operator = expresie;
copyright@www.adrian.runceanu.ro
3.3. Instrucţiunea expresie
b) instrucţiunea de apel de funcţie
unde pa1, pa2, . . ., pan sunt parametrii actuali ai
funcţiei (adică valorile cu care se va lucra în
funcţia respectivă la apelul funcţiei).
Exemplu:
maxim (int a, int b); // apelul functiei maxim care are doi
parametri actuali de tip întreg
02.12.2016 Programarea calculatoarelor 11
nume_functie(pa1, pa2, . . . ,pan);
copyright@www.adrian.runceanu.ro
3.3. Instrucţiunea expresie
c) instrucţiunea de incrementare/decrementare
Exemplu:
int i, j, k;
i++;
--j;
k++ + --i;
02.12.2016 Programarea calculatoarelor 12
variabila ++;
++ variabila;
variabila --;
-- variabila;
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 13
copyright@www.adrian.runceanu.ro
3.4. Instrucţiunea if
Instrucţiunea if
(instrucţiune de decizie sau condiţională)
Are două forme:
02.12.2016 Programarea calculatoarelor 14
if (expresie) instructiune;
if (expresie)
instructiune1;
else
instructiune2;
copyright@www.adrian.runceanu.ro
3.4. Instrucţiunea if
Instrucţiunea if
Observaţie:
În limbajul C++, spre deosebire de limbajul
PASCAL, nu există cuvântul cheie THEN.
02.12.2016 Programarea calculatoarelor 15
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Enunţ:
Să se calculeze perimetrul şi aria unui triunghi
oarecare dacă se cunosc laturile triunghiului.
Pas 1: Stabilim care sunt datele de intrare, adică cele
care vor fi prelucrate cu ajutorul algoritmului,
împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: a, b, şi c numere reale ce reprezintă
laturile triunghiului.
Date de ieşire: p şi S numere reale ce reprezintă
perimetrul si aria triunghiului dat.
02.12.2016 Programarea calculatoarelor 16
Exemple de programe C++
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formula lui Heron pentru calculul ariei
unui triunghi dacă se cunosc laturile sale:
unde p reprezintă semiperimetrul triunghiului.
))()(( cpbpappS 
02.12.2016 Programarea calculatoarelor 17
Exemple de programe C++
Pas 3: Scrierea algoritmului în pseudocod:
02.12.2016 Programarea calculatoarelor 18
real a, b, c, p, S
citeşte a, b, c
p <- a + b + c
scrie ‘Perimetrul triunghiului este ‘, p
p <- p / 2
scrie ‘Aria triunghiului este ’, S
stop
c)(pb)(pa)(ppS 
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 4:
Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 19
#include<iostream.h>
#include<math.h>
int main(void)
{
float a, b, c, p, S;
cin>>a; cin>>b; cin>>c;
p = a + b + c;
cout<<" Perimetrul este = "<<p;
p = p / 2;
S = sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"Aria este = "<<S;
}
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 5: Testarea algoritmului pe date de intrare diferite şi
verificarea rezultatelor.
Exemplul 1:
Pentru valorile a=2, b=3, c=4, obţinem următoarele
rezultate:
Perimetrul este = 9
Aria este = 1.369306
Exemplul 2:
Pentru valorile a=12, b=4, c=10, obţinem
următoarele rezultate:
Perimetrul este = 26
Aria este = 5.196152
02.12.2016 Programarea calculatoarelor 20
Exemple de programe C++
Enunţ:
Să se calculeze valoarea funcţiei f(x), ştiind că x
este un număr real introdus de la tastatură:
Pas 1:
Date de intrare: x număr real
Date de iesire: f număr real, reprezentând valoarea
funcţiei date.









0,2
]0,7(,30
]7,(,206
)(
xdacax
xdacax
xdacax
xf
02.12.2016 Programarea calculatoarelor 21
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului.
Căutăm cazurile particulare.
În cadrul problemei pe care o avem de rezolvat,
verificăm condiţiile date în expresia funcţiei:
1) Dacă x <= -7, atunci funcţia are valoarea: -6x+20
2) Daca x > -7 si x <= 0, atunci funcţia are valoarea:
x+30
3) Daca x > 0, atunci funcţia are valoarea: sqrt(x)+2
02.12.2016 Programarea calculatoarelor 22
Exemple de programe C++
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Programarea calculatoarelor 23
real x, f
citeşte x
dacă x <= -7 atunci
f <- -6 * x + 20
altfel
dacă x > -7 şi x <= 0 atunci
f <- x + 30
altfel
f <- sqrt(x) + 2
sfârşit dacă
sfarşit dacă
scrie f
stop
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 4:
Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 24
#include<iostream.h>
#include<math.h>
int main(void)
{
float x, f;
cin>>x;
if( x <= -7 ) f = -6 * x + 20;
else
if( x > -7 && x <= 0 )
f = x + 30;
else
f = sqrt(x) + 2;
cout<<"f = "<<f;
}
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea x=2 obţinem următorul rezultat:
f= 3.414214
Exemplul 2:
Pentru valoarea x=-24 obţinem următorul
rezultat:
f= 164
02.12.2016 Programarea calculatoarelor 25
Exemple de programe C++
Enunţ:
Se dau trei numere întregi a,b,c. Să se
afişeze în ordine crescătoare.
Exemplu: Dacă a = 12, b = 2, c = 9, atunci
obţinem a = 2, b = 9, c = 12
Pas 1:
Date de intrare: a, b, c numere întregi
Date de iesire: a, b, c în ordine crescătoare
02.12.2016 Programarea calculatoarelor 26
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 2: Analiza problemei
1) Comparăm primele două numere a şi b, dacă a este
mai mare decât b atunci vom interschimba cele
două valori.
2) Comparăm următoarele două numere b şi c, dacă b
este mai mare decât c atunci vom interschimba cele
două valori.
3) Comparăm din nou cele două numere a şi b, dacă a
este mai mare decât b atunci vom interschimba cele
două valori.
02.12.2016 Programarea calculatoarelor 27
Exemple de programe C++
Pas 3:
Scrierea
algoritmului în
pseudocod:
02.12.2016 Programarea calculatoarelor 28
întreg a, b, c, aux
citeşte a, b, c
dacă a > b atunci
aux <- a
a <- b
b <- aux
sfârşit dacă
dacă b > c atunci
aux <- b
b <- c
c <- aux
sfârşit dacă
dacă a > b atunci
aux <- a
a <- b
b <- aux
sfârşit dacă
scrie a, b, c
stop
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 4: Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 29
#include<iostream.h>
int main(void)
{
int a, b, c, aux;
cin>>a; cin>>b; cin>>c;
if( a > b ) {
aux=a;
a=b;
b=aux;
}
if( b > c ){
aux=b;
b=c;
c=aux;
}
if( a > b ){
aux=a;
a=b;
b=aux;
}
cout<<a<<" "<<b<<" "<<c;
}
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valorile a=11, b=7, c=10 obţinem
următorul rezultat:
7 10 11
Exemplul 2:
Pentru valorile a=2, b=17, c=5 obţinem
următorul rezultat:
2 5 17
02.12.2016 Programarea calculatoarelor 30
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 31
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
Instrucţiunea while
(instrucţiune repetitivă cu test iniţial)
Are următoarea formă:
unde instrucţiune poate fi:
instrucţiunea vidă
instrucţiunea simplă
sau instrucţiunea compusă
02.12.2016 Programarea calculatoarelor 32
while (expresie)
instructiune;
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
Instrucţiunea while
(instrucţiune repetitivă cu test
iniţial)
Funcţionarea unei astfel
de instrucţiuni se bazează pe
evaluarea expresiei date şi
executarea repetată a
instrucţiunii cât timp expresia
este îndeplinită.
02.12.2016 Programarea calculatoarelor 33
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
Exemplu:
Prezentăm în
continuare un
program în limbajul
C/C++, care
calculează suma
primelor n numere
întregi, cu n<=10:
02.12.2016 Programarea calculatoarelor 34
#include<iostream.h>
int main(void)
{
int i, n, s=0;
cout<<"Dati numarul n = ";
cin>>n;
i = 1;
while( i <= n )
{
s = s + i;
i++;
}
cout<<"Suma primelor "<<n<<"
numere intregi este "<<s;
}
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
La execuţia acestui program se poate obţine
următorul rezultat:
Dati numarul n = 5
Suma primelor 5 numere intregi este 15
02.12.2016 Programarea calculatoarelor 35
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
Folosind
facilităţile limbajului
C/C++, se poate
scrie aceeaşi
secvenţă de
program într-o
formă prescurtată şi
chiar mai eficientă:
02.12.2016 Programarea calculatoarelor 36
#include<iostream.h>
int main(void)
{
int i=1, n, s=0;
cout<<"Dati numarul n = ";
cin>>n;
while(i<=n) s+=i++;
cout<<"Suma primelor
"<<n<<" numere intregi este
"<<s;
}
copyright@www.adrian.runceanu.ro
3.5. Instrucţiunea while
Observaţie:
Pentru ca un ciclu repetitiv să se execute
încontinuu (la infinit), se poate utiliza o buclă
infinită prin introducerea ca expresie a unei
valori diferite de 0.
while (1) este o buclă infinită care se va
executa până când de la tastatură se va
întrerupe execuţia prin apăsarea tastelor
CTRL+C.
02.12.2016 Programarea calculatoarelor 37
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Enunţ:
Să se citească un număr natural n. Să se scrie un
algoritm care afişează toţi divizorii numărului dat.
Exemplu: Pentru n = 12, mulţimea divizorilor este formată
din valorile 1, 2, 3, 4, 6, 12.
Pas 1: Stabilim care sunt datele de intrare, împreună cu
datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: divizorii numărului n
02.12.2016 Programarea calculatoarelor 38
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 2: Analiza problemei
În cadrul problemei pe care o avem de rezolvat,
verificăm condiţia ca un număr să fie divizor al altui
număr şi anume:
i este divizor al numărului n dacă se împarte
exact la el, adică dacă este adevărată expresia n % i =
0.
Pentru a găsi toţi divizorii numărului n dat, vom
da valori lui i, pornind de la valoarea 1 până la
valoarea n.
Deci vom utiliza o structură repetitivă.
02.12.2016 Programarea calculatoarelor 39
Exemple de programe C++
02.12.2016 Programarea calculatoarelor 40
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i
citeşte n
i <- 1
cât timp i <= n execută
dacă n % i = 0 atunci
scrie i
sfârşit dacă
i <- i + 1
sfârşit cât timp
stop
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 4:
Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 41
#include<iostream.h>
int main(void)
{
int n, i;
cin>>n;
i = 1;
while( i <= n )
{
if( n % i == 0 )
cout<<i<<" ";
i = i + 1;
}
}
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 5: Testarea algoritmului pe date de intrare diferite
şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=12 obţinem următorul rezultat:
1 2 3 4 6 12
Exemplul 2:
Pentru valoarea n=18 obţinem următorul rezultat:
1 2 3 6 9 18
02.12.2016 Programarea calculatoarelor 42
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Enunţ:
Să se citească un număr natural n. Să se scrie un algoritm care
verifică dacă numărul dat este sau nu număr prim. Un număr n
este prim dacă are ca divizori doar valorile 1 şi n.
Exemplu:
Pentru n = 7, se va afişa mesajul ‘numărul este prim’,
iar pentru n = 22, se va afişa mesajul ‘numărul NU este prim’.
Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi
prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: număr prim sau nu
02.12.2016 Programarea calculatoarelor 43
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 2: Analiza problemei
Vom presupune, la începutul problemei, că numărul
n dat este prim, şi vom specifica acest lucru cu ajutorul
unei variabile de tip logic, căreia îi vom da valoarea
‘adevărat’.
Apoi vom evalua, pe rând, toate valorile începând cu
valoarea 2 şi până la n/2, ca să determinăm dacă sunt
divizori ai numărului n dat.
Dacă găsim un singur divizor printre aceste numere,
atunci vom acorda valoarea ‘fals’ variabilei de tip logic.
La sfârşit vom verifica care este valoarea variabilei
de tip logic şi vom afişa un mesaj corespunzător.
02.12.2016 Programarea calculatoarelor 44
Exemple de programe C++
02.12.2016 Programarea calculatoarelor 45
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i
logic p
citeşte n
p <- adevărat
i <- 2
cât timp i <= n/2 execută
dacă n % i = 0 atunci
p <- fals
sfârşit dacă
i <- i + 1
sfârşit cât timp
dacă p = adevărat atunci
scrie ‘Numarul este prim’
altfel
scrie ‘Numarul NU este prim’
sfârşit dacă
stop
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 4:
Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 46
#include<iostream.h>
int main(void)
{
int n, i, p;
cin>>n;
p = 1;
i = 2;
while( i <= n/2 )
{
if( n % i == 0 ) p = 0;
i = i + 1;
}
if( p == 1 ) cout<<"Numarul este PRIM";
else cout<<"Numarul NU este PRIM";
}
copyright@www.adrian.runceanu.ro
Exemple de programe C++
Pas 5: Testarea algoritmului pe date de intrare diferite
şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=12 obţinem următorul rezultat:
Numarul NU este PRIM
Exemplul 2:
Pentru valoarea n=7 obţinem următorul rezultat:
Numarul este PRIM
02.12.2016 Programarea calculatoarelor 47
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
1) Pentru n cunoscut, să se calculeze fn,
termenul de rangul n din şirul lui Fibonacci,
ştiind că:
f0 = 1; f1 = 1; fn = fn-1 + fn-2 pentru orice
valoare n >= 2.
Exemplu:
02.12.2016 Programarea calculatoarelor 48
Date de intrare: 8
Date de ieşire: 21 (1, 1, 2, 3, 5, 8, 13, 21)
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
2) Se dau trei numere. Determinaţi şi afişaţi
cmmdc al lor (cmmdc = cel mai mare divizor
comun).
Exemplu:
02.12.2016 Programarea calculatoarelor 49
Date de intrare: 12 32 38
Date de ieşire: 2
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
3) Se dă numărul n, să se afişeze toate numerele
mai mici ca el, prime cu el.
Doua numere sunt prime intre ele daca cel mai
mare divizor comun al lor este 1.
Exemplu:
02.12.2016 Programarea calculatoarelor 50
Date de intrare: 10
Date de ieşire: 1 3 7 9
copyright@www.adrian.runceanu.ro
3.Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 51
copyright@www.adrian.runceanu.ro
3.6. Instrucţiunea do while
02.12.2016 Programarea calculatoarelor 52
do
instructiune
while (expresie);
Forma instructiunii este:
unde instrucţiune poate fi:
 instrucţiunea vidă
 instrucţiunea simplă
 instrucţiunea compusă
copyright@www.adrian.runceanu.ro
3.6. Instrucţiunea do while
02.12.2016 Programarea calculatoarelor 53
Funcţionarea unei astfel de instrucţiuni se
bazează pe executarea repetată a instrucţiunii cât
timp condiţia este îndeplinită.
copyright@www.adrian.runceanu.ro
3.6. Instrucţiunea do while
Echivalenţa cu instrucţiunea while:
Exemplu de utilizare a instructiunii do while:
Să se scrie un program care tipăreşte
numerele naturale de la 0 la 9 şi suma lor pe
parcurs.
02.12.2016 Programarea calculatoarelor 54
instructiune;
while(expresie)
instructiune;
copyright@www.adrian.runceanu.ro
3.6. Instrucţiunea do while
#include<iostream.h>
int main(void)
{
int numar = 0, total = 0;
do{
total = total + numar;
cout<<"numar = "<<numar++<<"
total = "<<total<<endl;
}while(numar<10);
}
02.12.2016 Programarea calculatoarelor 55
La execuţia acestui
program se obţine următorul
rezultat:
numar=0 total=0
numar=1 total=1
numar=2 total=3
numar=3 total=6
numar=4 total=10
numar=5 total=15
numar=6 total=21
numar=7 total=28
numar=8 total=36
numar=9 total=45
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 56
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Este una dintre cele mai “puternice” instrucţiuni ale
limbajului C/C++, datorită formei sale.
Forma instrucțiunii este:
expresie1 – reprezintă secvenţa de iniţializarea a ciclului
expresie2 – reprezintă condiţia de terminare a ciclului
expresie3 – reprezintă secvenţa de reiniţializare a ciclului
instrucţiune - corpul ciclului
02.12.2016 Programarea calculatoarelor 57
for(expresie1; expresie2; expresie3)
instructiune;
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
02.12.2016 Programarea calculatoarelor 58
for(expresie1; expresie2; expresie3)
instructiune;
Funcţionarea unei astfel de
instrucţiuni se bazează:
 pe executarea repetată a
instrucţiunii,
 Verificarea expresiei2
 Executarea expresiei3
Cat timp expresia2 este
îndeplinită.
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Se stie că instrucţiunea for este de fapt o
variantă particulară a instrucţiunii while, drept
pentru care se poate scrie echivalent astfel:
02.12.2016 Programarea calculatoarelor 59
expresie1;
while(expresie2)
{
instructiune;
expresie3;
}
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Invers, dacă avem:
02.12.2016 Programarea calculatoarelor 60
while (expresie)
instructiune;
for( ;expresie; )
instructiune;

copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Funcţionarea instrucţiunii for are loc astfel:
Se porneşte ciclul repetitiv prin iniţializarea sa,
adică prin execuţia expresia1
iar apoi se evaluează expresia2 şi dacă este
adevărată se execută corpul ciclului, adică
instrucţiune
după aceea se execută expresia3, şi se reia
evaluarea expresiei2, ş.a.m.d.
02.12.2016 Programarea calculatoarelor 61
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Observaţie:
expresia1, expresia2, expresia3 pot să lipsească,
dar este obligatorie prezenţa semnelor: “;”.
02.12.2016 Programarea calculatoarelor 62
for(;;)  while(1) – buclă infinită
copyright@www.adrian.runceanu.ro
3.7. Instrucţiunea for
Exemplu: Acelaşi
program de
adunare a primelor
n numere întregi,
în varianta cu
instrucţiunea for,
va avea o
dimensiune mai
mică:
02.12.2016 Programarea calculatoarelor 63
#include<iostream.h>
int main(void)
{
int i, n, s = 0;
cout<<"Dati numarul n =";
cin>>n;
for(i=1; i<=n; i++)
s = s + i;
cout<<"Suma primelor"<<n<<"
numere intregi este "<<s;
}
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Enunţ:
Fie un număr natural n. Să se scrie un
algoritm care să calculeze factorialul numărului
dat.
(factorial = produsul numerelor naturale mai mici
sau egale decat n)
Exemplu:
Pentru n = 5, se va afişa valoarea
p = 1*2*3*4*5=120.
02.12.2016 Programarea calculatoarelor 64
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 1: Stabilim care sunt datele de intrare, adică
cele care vor fi prelucrate cu ajutorul
algoritmului, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n = număr natural
Date de ieşire: factorialul numărului dat = p
02.12.2016 Programarea calculatoarelor 65
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa
valoarea produsului numerelor cu 1.
Apoi, într-un ciclu repetitiv vom calcula
produsul numerelor naturale aflate intre 1 si n.
02.12.2016 Programarea calculatoarelor 66
Exemplu de program C++ - instructiunea for
02.12.2016 Programarea calculatoarelor 67
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, p, i
citeşte n
p <- 1
pentru i=1,n execută
p <- p * i
sfârşit pentru
scrie p
stop
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 4: Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 68
#include<iostream.h>
int main(void)
{
int n, p, i;
cin>>n;
p = 1;
for(i = 1; i<=n; i++)
p = p * i;
cout<<p;
}
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=5 obţinem următorul rezultat:
120
Exemplul 2:
Pentru valoarea n=7 obţinem următorul rezultat:
5040
02.12.2016 Programarea calculatoarelor 69
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Enunţ:
Fie un număr natural n de cinci cifre. Să se
scrie un algoritm care să calculeze suma cifrelor
numărului dat.
Exemplu:
Pentru n = 2178, se va afişa valoarea s = 2+1+7+8 =
18
02.12.2016 Programarea calculatoarelor 70
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 1: Stabilim care sunt datele de intrare, adică
cele care vor fi prelucrate cu ajutorul
algoritmului, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: suma cifrelor = s.
02.12.2016 Programarea calculatoarelor 71
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 2: Analiza problemei
La începutul problemei, vom iniţializa
valoarea sumei cifrelor numărului n dat cu 0.
Apoi, într-un ciclu repetitiv vom calcula suma
cifrelor numărului, ştiind că:
o cifră a unui număr scris în baza 10 este dată de
restul împărțirii la 10 - n%10,
iar numărul fără ultima cifră este dat de câtul
împărțirii la 10 - n/10.
02.12.2016 Programarea calculatoarelor 72
Exemplu de program C++ - instructiunea do while
02.12.2016 Programarea calculatoarelor 73
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, s
citeşte n
s <- 0
repetă
s <- s + n % 10
n <- n / 10
până când n = 0
scrie s
stop
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 4: Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 74
#include<iostream.h>
int main(void)
{
int n, s;
cin>>n;
s = 0;
do
{
s = s + n % 10;
n = n / 10;
}while( n != 0 );
cout<<s;
}
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=123 obţinem următorul rezultat:
6
Exemplul 2:
Pentru valoarea n=5378 obţinem următorul rezultat:
23
02.12.2016 Programarea calculatoarelor 75
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Enunţ:
Să se scrie un program care generează toate
numerele perfecte până la o valoare dată, n.
Un număr perfect este egal cu suma divizorilor
lui, inclusiv 1 (exemplu: 6=1+2+3).
Exemplu:
Pentru n = 1000, se vor afişa valorile 6, 28, 496
02.12.2016 Programarea calculatoarelor 76
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 1: Stabilim care sunt datele de intrare, adică cele
care vor fi prelucrate cu ajutorul algoritmului,
împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: numerele perfecte mai mici sau egale
decât n.
02.12.2016 Programarea calculatoarelor 77
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 2: Analiza problemei
La începutul problemei, vom lua toate
valorile de la 1 la n, şi pentru fiecare valoare i o
vom verifica dacă este sau nu număr perfect.
Numerele perfecte obţinute le vom afişa.
02.12.2016 Programarea calculatoarelor 78
Exemplu de program C++ - instructiunea do while
02.12.2016 Programarea calculatoarelor 79
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n, i, j, s
citeşte n
i <- 1
repetă
s <- 0
j <- 1
repetă
dacă i % j = 0 atunci
s <- s + j
sfârşit dacă
j <- j + 1
până când j > i/2
dacă s = i atunci
scrie i
sfârşit dacă
i <- i + 1
până când i > n
stop
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 4: Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 80
#include<iostream.h>
int main(void)
{
int n, i, j, s;
cin>>n;
i = 1;
do{
s = 0;
j = 1;
do{
if( i % j == 0 )
s = s + j;
j = j + 1;
}while(j <= i/2);
if( s == i )
cout<<i<<" ";
i = i + 1;
}while(i <= n);
}
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea do while
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=100 obţinem următoarele
rezultate:
6 28
Exemplul 2:
Pentru valoarea n=10000 obţinem următoarele
rezultate:
6 28 496 8128
02.12.2016 Programarea calculatoarelor 81
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Enunţ:
Să se scrie un program care generează toate
numerele prime până la o valoare dată, n.
Un număr x este prim dacă are ca divizori doar
valorile 1 şi x.
Exemplu:
Pentru n = 22, se vor afişa valorile:
2,3,5,7,11,13,17,19
02.12.2016 Programarea calculatoarelor 82
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 1: Stabilim care sunt datele de intrare, adică cele
care vor fi prelucrate cu ajutorul algoritmului,
împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: numerele prime mai mic decat n
02.12.2016 Programarea calculatoarelor 83
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 2: Analiza problemei
Intr-un ciclu repetitiv de la 1 la n vom verifica toate valorile daca
respecta proprietatea de numar prim.
Vom presupune, la începutul problemei, că numărul i dat
este prim, şi vom specifica acest lucru cu ajutorul unei variabile de
tip întreg, căreia îi vom da valoarea 1.
• Apoi vom evalua, pe rând, toate valorile începând cu valoarea 2 şi
până la i/2, ca să determinăm dacă sunt divizori ai numărului i
dat.
• Dacă găsim un singur divizor printre aceste numere, atunci vom
acorda valoarea 0 variabilei de tip întreg de la începutul verificarii
conditiei de numar prim.
• La sfârşit vom verifica care este valoarea variabilei de tip întreg şi
vom afişa numarul i.
02.12.2016 Programarea calculatoarelor 84
Exemplu de program C++ - instructiunea for
02.12.2016 Programarea calculatoarelor 85
Pas 3:
Scrierea
algoritmului în
pseudocod:
natural n,i,j
logic p
citeşte n
pentru i = 2, n execută
p <- adevărat
pentru j = 2, i/2 execută
dacă i % j = 0 atunci
p <- fals
sfârşit dacă
sfârşit pentru
dacă p = adevărat atunci
scrie i,‘ ’
sfârşit dacă
sfârşit pentru
stop
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 4: Implementarea
algoritmului în
limbajul de
programare C++:
02.12.2016 Programarea calculatoarelor 86
#include<iostream.h>
int main(void)
{
int n, prim, i, j;
cin>>n;
for(i = 2; i<=n; i++)
{
prim = 1;
for(j = 2; j<=i/2; j++)
if(i % j == 0 ) prim = 0;
if( prim == 1)
cout<<i<<“ ”;
}
}
copyright@www.adrian.runceanu.ro
Exemplu de program C++ - instructiunea for
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Exemplul 1:
Pentru valoarea n=53 obţinem rezultatele:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
Exemplul 2:
Pentru valoarea n=12 obţinem următorul
rezultat:
2 3 5 7 11
02.12.2016 Programarea calculatoarelor 87
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 88
copyright@www.adrian.runceanu.ro
3.8. Instrucţiunea switch
Instrucţiunea switch
funcţionează astfel:
Se evaluează expresia şi în
funcţie de rezultat se compară
cu c1, c2, . . ., cn şi când expresia
este egală cu c1 atunci se
execută şirul de instrucţiuni
corespunzător, şi cu
instrucţiunea break se sare la
sfârşitul instrucţiunii switch, la
fel se întâmplă şi dacă expresia
este egală cu c2 ,sau cu c3 , sau
cu cn.
02.12.2016 Programarea calculatoarelor 89
switch (expresie)
{
case c1 :
sir_instructiuni_1;
break;
case c2 :
sir_instructiuni_2;
break;
. . . . . . . .
case cn :
sir_instructiuni_ n;
break;
default: sir_instructiuni;
}
copyright@www.adrian.runceanu.ro
3.8. Instrucţiunea switch
Instrucţiunea switch este o instrucţiune de tip
decizie multiplă astfel încât se poate scrie echivalent
folosind instrucţiunea de decizie simplă if:
02.12.2016 Programarea calculatoarelor 90
if (expresie==c1)
sir_instructiuni_1;
else
if (expresie==c2)
sir_instructiuni_2;
. . . . . . . .
else
if (expresie==cn)
sir_instructiuni_ n;
else sir_instructiuni;
copyright@www.adrian.runceanu.ro
3.8. Instrucţiunea switch
Prezentăm în
continuare un program
care numără vocalele şi
consoanele din alfabet.
De observat că
unele din instrucţiunile
case se execută în
cascadă, pentru calculul
vocalelor, iar pentru
consoane se foloseşte
cazul default:
02.12.2016 Programarea calculatoarelor 91
#include<iostream.h>
int main(void)
{
char litera;
int nr_vocale = 0, nr_consoane = 0;
for (litera = ‘A’; litera <= ‘Z’; litera++)
switch (litera) {
case ‘A’:
case ‘E’:
case ‘I’:
case ‘O’:
case ‘U’: nr_vocale++;
break;
default: nr_consoane++;
}
cout<<"nNumarul de vocale este "<<nr_vocale;
cout<<"nNumarul de consoane este "<< nr_consoane;
}
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 92
copyright@www.adrian.runceanu.ro
3.9. Instrucţiunea break
Instrucţiunea întrerupe execuţia instrucţiunilor
while, do while, for şi switch, determinând astfel ieşirea
forţată dintr-un ciclu repetitv.
Exemplu:
for(;;)
{
. . . . .
break;
}
02.12.2016 Programarea calculatoarelor 93
break;
copyright@www.adrian.runceanu.ro
3.9. Instrucţiunea break
Exemplu:
Prezentăm în
continuare, un program
care folosind
instrucţiunea break,
afisează numerele întregi
aflate între 1 şi 100 şi
apoi de la 100 la 1.
De fiecare dată când
număr ajunge la valoarea
50, instrucţiunea break
face ca execuţia ciclului
să se oprească:
02.12.2016 Programarea calculatoarelor 94
#include<iostream.h>
int main(void)
{
int numar;
for(numar = 1; numar<=100; numar++)
{
if(numar == 50) break;
cout<<" "<<numar;
}
cout<<"nCel de-al doilea ciclu
repetitiv";
for(numar = 100; numar>=1; numar--)
{
if(numar == 50) break;
cout<<" "<<numar;
}
}
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 95
copyright@www.adrian.runceanu.ro
3.10. Instrucţiunea continue
Se referă la instrucţiunile de ciclare: for,
while şi do while.
La întâlnirea ei ciclurile while şi do while se
continuă cu reevaluarea condiţiei de ciclare iar în
ciclul for se continuă cu secvenţa de reiniţializare
a ciclului şi apoi cu reevaluarea ciclului.
02.12.2016 Programarea calculatoarelor 96
copyright@www.adrian.runceanu.ro
3.10. Instrucţiunea continue
Exemplu:
Prezentăm în
continuare, un
program care
folosind
instrucţiunea
continue într-un
ciclu for şi într-un
ciclu while, afişează
numerele pare şi
impare aflate între
1 şi 100:
02.12.2016 Programarea calculatoarelor 97
#include<iostream.h>
int main(void)
{
int numar;
cout<<"Numerele pare dintre 1 si 100 sunt: ";
for (numar = 1; numar <= 100; numar++)
{
if(numar % 2 != 0) continue;
cout<<" "<<numar;
}
cout<<"nNumerele impare dintre 1 si 100 sunt: ";
numar=0;
while(numar <= 100)
{
numar++;
if(numar % 2==0) continue;
cout<<" "<<numar;
}
}
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 98
copyright@www.adrian.runceanu.ro
3.11. Instrucţiunea goto
Este instrucţiunea pentru salt necondiţionat.
unde eticheta este un nume care prefixează o instrucţiune.
Exemplu: Prezentăm în continuare, un program care folosind
instrucţiunea goto, afişează numerele întregi aflate între 1 şi
100:
int main(void)
{
int numar=1;
eticheta: cout<<" ", numar++;
if (numar <= 100) goto eticheta;
}
02.12.2016 Programarea calculatoarelor 99
goto eticheta;
copyright@www.adrian.runceanu.ro
3. Instrucţiunile limbajului C++
3.1. Instrucţiunea vidă
3.2. Instrucţiunea compusă
3.3. Instrucţiunea expresie
3.4. Instrucţiunea if
3.5. Instrucţiunea while
3.6. Instrucţiunea do while
3.7. Instrucţiunea for
3.8. Instrucţiunea switch
3.9. Instrucţiunea break
3.10. Instrucţiunea continue
3.11. Instrucţiunea goto
3.12. Instrucţiunea return
02.12.2016 Programarea calculatoarelor 100
copyright@www.adrian.runceanu.ro
3.12. Instrucţiunea return
Instrucţiunea return
Se foloseşte în funcţii atunci când:
• se întoarce în funcţia apelantă o valoare (formele
2 şi 3)
• sau într-o funcţie care nu întoarce nici o valoare
(funcţioneaza ca o procedură) – forma 1.
02.12.2016 Programarea calculatoarelor 101
1. return;
2. return expresie;
3. return (expresie);
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
1) Să se afişeze toate numerele palindrom mai
mari decat 10 şi mai mici decat un număr dat, n.
Exemplu:
02.12.2016 Programarea calculatoarelor 102
Date de intrare: n=110
Date de ieşire:
11 22 33 44 55 66 77 88 99 101
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
2) Să se determine toate tripletele de numere a, b,
c cu proprietăţile: 1<a<b<c<100; a+b+c se divide
cu 10.
Exemplu:
02.12.2016 Programarea calculatoarelor 103
Date de intrare: -
Date de ieşire: 95 96 99 si 95 97 99 sunt
ultimele doua triplete
copyright@www.adrian.runceanu.ro
Probleme propuse spre rezolvare:
3) Să se afişeze toate numerele de două cifre care
adunate cu răsturnatul lor dau 55.
Exemplu:
02.12.2016 Programarea calculatoarelor 104
Date de intrare: -
Date de ieşire: 14 41; 23 32; 32 23; 41 14
copyright@www.adrian.runceanu.ro
Pentru alte informații teoretice și aplicative legate
de acest capitol se recomandă următoarele referințe
bibliografice:
1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de
programare în limbajul C++, Editura Academica
Brâncuși, Târgu-Jiu, 2012 (www.utgjiu.ro/editura)
2. Adrian Runceanu, Programarea şi utilizarea
calculatoarelor, Editura Academica Brâncuși, Târgu-Jiu,
2003 (www.utgjiu.ro/editura)
3. Octavian Dogaru, C++ - teorie şi practică, volumul I,
Editura Mirton, Timişoara, 2004
(www.utgjiu.ro/editura)
02.12.2016 Programarea calculatoarelor 105
copyright@www.adrian.runceanu.ro
Recapitulare pseudocod – limbaj C++
Pseudocod C++
Tipuri de date
simple:
natural
intreg
real
logic
unsigned
int, long
float, double
bool
CITIRE date citeste v1,v2 cin>>v1>>v2 ;
AFISARE date scrie expresie1, expresie2 cout<<expresie1<<expresie2
ATRIBUIRE vexpresie
v=expresie;
v1=v2=...=v3=expresie;
STRUCTURA
DECIZIONALA
daca conditie atunci instructiune 1
altfel instructiune 2
if (conditie) instructiune 1;
else instructiune 2;
STRUCTURA
executa... cat timp
executa
instructiune
cat timp conditie
do
instructiune;
while (conditie);
PENTRU
pentru vvali, valf, pas executa
instructiune
for(v=vali ; v<=valf ; v=v+pas)
instructiune ;
INSTRUCTIUNE
COMPUSA
| instructiune 1;
| instructiune 2;
| .......................
| instructiune n;

{
instructiune 1;
instructiune 2;
......................
instructiune n;
}
02.12.2016 Programarea calculatoarelor 106
copyright@www.adrian.runceanu.ro
Recapitulare elemente de limbaj C++
02.12.2016 Programarea calculatoarelor 107
Biblioteci #include <iostream.h>
int main()
{
................................
instructiuni
}
Antet functie main
{ declaratii de: tipuri, constante,
variabile
Citire date intrare
Prelucrare date
Afisare
}
Structura unui program C++
copyright@www.adrian.runceanu.ro
Pentru alte informații teoretice și aplicative legate
de acest capitol se recomandă următoarele referințe
bibliografice:
1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de
programare în limbajul C++, Editura Academica
Brâncuși, Târgu-Jiu, 2012 (www.utgjiu.ro/editura)
2. Adrian Runceanu, Programarea şi utilizarea
calculatoarelor, Editura Academica Brâncuși, Târgu-Jiu,
2003 (www.utgjiu.ro/editura)
3. Octavian Dogaru, C++ - teorie şi practică, volumul I,
Editura Mirton, Timişoara, 2004
(www.utgjiu.ro/editura)
02.12.2016 Programarea calculatoarelor 108
copyright@www.adrian.runceanu.ro
“First, solve the problem. Then, write
the code.”
- John Johnson
02.12.2016 Programarea Calculatoarelor - curs 109

More Related Content

Similar to Lecture3 - PC

Auxiliar clasa v
Auxiliar clasa vAuxiliar clasa v
Auxiliar clasa v
leliana loredana buzatu
 
E d informatica_2020_sp_sn_c_var_test_02
E d informatica_2020_sp_sn_c_var_test_02E d informatica_2020_sp_sn_c_var_test_02
E d informatica_2020_sp_sn_c_var_test_02
Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04
Ovidiu Dumitrescu
 
E d informatica_2020_sp_sn_c_var_test_05
E d informatica_2020_sp_sn_c_var_test_05E d informatica_2020_sp_sn_c_var_test_05
E d informatica_2020_sp_sn_c_var_test_05
Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_05
E d informatica_2020_sp_mi_c_var_test_05E d informatica_2020_sp_mi_c_var_test_05
E d informatica_2020_sp_mi_c_var_test_05
Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01
Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08
Ovidiu Dumitrescu
 
E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04
Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_06
E d informatica_2020_sp_mi_c_var_test_06E d informatica_2020_sp_mi_c_var_test_06
E d informatica_2020_sp_mi_c_var_test_06
Ovidiu Dumitrescu
 
C++
C++C++
Instructiuni in c si c++
Instructiuni in c si c++Instructiuni in c si c++
Instructiuni in c si c++Serghei Urban
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
Anca Ciubotaru
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
Natalia Grajdianu
 
E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07
Ovidiu Dumitrescu
 
Scanner class and Decimal Format in Java
Scanner class and Decimal Format in JavaScanner class and Decimal Format in Java
Scanner class and Decimal Format in Java
m_gutu
 
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdfculegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
TheodorAnastasiei
 

Similar to Lecture3 - PC (19)

Auxiliar clasa v
Auxiliar clasa vAuxiliar clasa v
Auxiliar clasa v
 
E d informatica_2020_sp_sn_c_var_test_02
E d informatica_2020_sp_sn_c_var_test_02E d informatica_2020_sp_sn_c_var_test_02
E d informatica_2020_sp_sn_c_var_test_02
 
E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04
 
E d informatica_2020_sp_sn_c_var_test_05
E d informatica_2020_sp_sn_c_var_test_05E d informatica_2020_sp_sn_c_var_test_05
E d informatica_2020_sp_sn_c_var_test_05
 
E d informatica_2020_sp_mi_c_var_test_05
E d informatica_2020_sp_mi_c_var_test_05E d informatica_2020_sp_mi_c_var_test_05
E d informatica_2020_sp_mi_c_var_test_05
 
Opt
OptOpt
Opt
 
E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01
 
E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08
 
E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04
 
E d informatica_2020_sp_mi_c_var_test_06
E d informatica_2020_sp_mi_c_var_test_06E d informatica_2020_sp_mi_c_var_test_06
E d informatica_2020_sp_mi_c_var_test_06
 
Cap02
Cap02Cap02
Cap02
 
C++
C++C++
C++
 
Instructiuni in c si c++
Instructiuni in c si c++Instructiuni in c si c++
Instructiuni in c si c++
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Lucr2
Lucr2Lucr2
Lucr2
 
E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07
 
Scanner class and Decimal Format in Java
Scanner class and Decimal Format in JavaScanner class and Decimal Format in Java
Scanner class and Decimal Format in Java
 
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdfculegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
culegere-de-probleme-rezolvate-c-c-informatica_compress.pdf
 

Lecture3 - PC

  • 2. copyright@www.adrian.runceanu.ro Curs 3 Instrucţiunile limbajului C++ 02.12.2016 Programarea calculatoarelor 2
  • 3. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 3
  • 4. copyright@www.adrian.runceanu.ro 3.1. Instrucţiunea vidă Limbajul C++ are câteva instrucţiuni cu ajutorul cărora se pot construi programe. Acestea sunt: Instrucţiunea vidă: Instrucţiunea compusă: este delimitată de { şi se termină cu }. 02.12.2016 Programarea calculatoarelor 4 ; { . . . . }
  • 5. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 5
  • 6. copyright@www.adrian.runceanu.ro 3.2. Instrucţiunea compusă Uneori programele trebuie să efectueze una sau mai multe instrucţiuni atunci când o condiţie este îndeplinită (de exemplu într-o instrucţiune if) şi alte instrucţiuni când condiţia nu este îndeplinită. Sau atunci când o condiție se evaluează într-o structură (instrucțiune) repetitivă – de tip while, do while sau for, iar prelucrările din acea structură pot să fie compuse din una sau mai multe instrucțiuni. 02.12.2016 Programarea calculatoarelor 6
  • 7. copyright@www.adrian.runceanu.ro 3.2. Instrucţiunea compusă Limbajul C++ consideră instrucţiunile ca fiind instrucţiuni simple şi instrucţiuni compuse: O instrucţiune simplă este de fapt o singură instrucţiune, cum ar fi aceea de atribuire sau de apel al unei funcţii standard (de exemplu funcţia cout). O instrucţiune compusă este alcătuită din două sau mai multe instrucţiuni incluse între acolade. 02.12.2016 Programarea calculatoarelor 7
  • 8. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.2. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 8
  • 9. copyright@www.adrian.runceanu.ro 3.3. Instrucţiunea expresie Instrucţiunea expresie: Are 3 forme: a) instrucţiunea de atribuire b) instrucţiunea de apel de funcţie c) instrucţiunea de incrementare / decrementare 02.12.2016 Programarea calculatoarelor 9 expresie;
  • 10. copyright@www.adrian.runceanu.ro 3.3. Instrucţiunea expresie a) instrucţiunea de atribuire Exemplu: int x, y, z; z = x + 5 * y; x + = 10; (semnificație: x = x + 10;) 02.12.2016 Programarea calculatoarelor 10 variabila = expresie; sau variabila operator = expresie;
  • 11. copyright@www.adrian.runceanu.ro 3.3. Instrucţiunea expresie b) instrucţiunea de apel de funcţie unde pa1, pa2, . . ., pan sunt parametrii actuali ai funcţiei (adică valorile cu care se va lucra în funcţia respectivă la apelul funcţiei). Exemplu: maxim (int a, int b); // apelul functiei maxim care are doi parametri actuali de tip întreg 02.12.2016 Programarea calculatoarelor 11 nume_functie(pa1, pa2, . . . ,pan);
  • 12. copyright@www.adrian.runceanu.ro 3.3. Instrucţiunea expresie c) instrucţiunea de incrementare/decrementare Exemplu: int i, j, k; i++; --j; k++ + --i; 02.12.2016 Programarea calculatoarelor 12 variabila ++; ++ variabila; variabila --; -- variabila;
  • 13. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 13
  • 14. copyright@www.adrian.runceanu.ro 3.4. Instrucţiunea if Instrucţiunea if (instrucţiune de decizie sau condiţională) Are două forme: 02.12.2016 Programarea calculatoarelor 14 if (expresie) instructiune; if (expresie) instructiune1; else instructiune2;
  • 15. copyright@www.adrian.runceanu.ro 3.4. Instrucţiunea if Instrucţiunea if Observaţie: În limbajul C++, spre deosebire de limbajul PASCAL, nu există cuvântul cheie THEN. 02.12.2016 Programarea calculatoarelor 15
  • 16. copyright@www.adrian.runceanu.ro Exemple de programe C++ Enunţ: Să se calculeze perimetrul şi aria unui triunghi oarecare dacă se cunosc laturile triunghiului. Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: a, b, şi c numere reale ce reprezintă laturile triunghiului. Date de ieşire: p şi S numere reale ce reprezintă perimetrul si aria triunghiului dat. 02.12.2016 Programarea calculatoarelor 16
  • 17. Exemple de programe C++ Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. În cadrul problemei pe care o avem de rezolvat, cunoaştem formula lui Heron pentru calculul ariei unui triunghi dacă se cunosc laturile sale: unde p reprezintă semiperimetrul triunghiului. ))()(( cpbpappS  02.12.2016 Programarea calculatoarelor 17
  • 18. Exemple de programe C++ Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Programarea calculatoarelor 18 real a, b, c, p, S citeşte a, b, c p <- a + b + c scrie ‘Perimetrul triunghiului este ‘, p p <- p / 2 scrie ‘Aria triunghiului este ’, S stop c)(pb)(pa)(ppS 
  • 19. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 19 #include<iostream.h> #include<math.h> int main(void) { float a, b, c, p, S; cin>>a; cin>>b; cin>>c; p = a + b + c; cout<<" Perimetrul este = "<<p; p = p / 2; S = sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"Aria este = "<<S; }
  • 20. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valorile a=2, b=3, c=4, obţinem următoarele rezultate: Perimetrul este = 9 Aria este = 1.369306 Exemplul 2: Pentru valorile a=12, b=4, c=10, obţinem următoarele rezultate: Perimetrul este = 26 Aria este = 5.196152 02.12.2016 Programarea calculatoarelor 20
  • 21. Exemple de programe C++ Enunţ: Să se calculeze valoarea funcţiei f(x), ştiind că x este un număr real introdus de la tastatură: Pas 1: Date de intrare: x număr real Date de iesire: f număr real, reprezentând valoarea funcţiei date.          0,2 ]0,7(,30 ]7,(,206 )( xdacax xdacax xdacax xf 02.12.2016 Programarea calculatoarelor 21
  • 22. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 2: Analiza problemei Stabilim condiţiile pe care trebuie să le îndeplinească datele de intrare pentru a fi prelucrate în cadrul algoritmului. Căutăm cazurile particulare. În cadrul problemei pe care o avem de rezolvat, verificăm condiţiile date în expresia funcţiei: 1) Dacă x <= -7, atunci funcţia are valoarea: -6x+20 2) Daca x > -7 si x <= 0, atunci funcţia are valoarea: x+30 3) Daca x > 0, atunci funcţia are valoarea: sqrt(x)+2 02.12.2016 Programarea calculatoarelor 22
  • 23. Exemple de programe C++ Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Programarea calculatoarelor 23 real x, f citeşte x dacă x <= -7 atunci f <- -6 * x + 20 altfel dacă x > -7 şi x <= 0 atunci f <- x + 30 altfel f <- sqrt(x) + 2 sfârşit dacă sfarşit dacă scrie f stop
  • 24. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 24 #include<iostream.h> #include<math.h> int main(void) { float x, f; cin>>x; if( x <= -7 ) f = -6 * x + 20; else if( x > -7 && x <= 0 ) f = x + 30; else f = sqrt(x) + 2; cout<<"f = "<<f; }
  • 25. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea x=2 obţinem următorul rezultat: f= 3.414214 Exemplul 2: Pentru valoarea x=-24 obţinem următorul rezultat: f= 164 02.12.2016 Programarea calculatoarelor 25
  • 26. Exemple de programe C++ Enunţ: Se dau trei numere întregi a,b,c. Să se afişeze în ordine crescătoare. Exemplu: Dacă a = 12, b = 2, c = 9, atunci obţinem a = 2, b = 9, c = 12 Pas 1: Date de intrare: a, b, c numere întregi Date de iesire: a, b, c în ordine crescătoare 02.12.2016 Programarea calculatoarelor 26
  • 27. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 2: Analiza problemei 1) Comparăm primele două numere a şi b, dacă a este mai mare decât b atunci vom interschimba cele două valori. 2) Comparăm următoarele două numere b şi c, dacă b este mai mare decât c atunci vom interschimba cele două valori. 3) Comparăm din nou cele două numere a şi b, dacă a este mai mare decât b atunci vom interschimba cele două valori. 02.12.2016 Programarea calculatoarelor 27
  • 28. Exemple de programe C++ Pas 3: Scrierea algoritmului în pseudocod: 02.12.2016 Programarea calculatoarelor 28 întreg a, b, c, aux citeşte a, b, c dacă a > b atunci aux <- a a <- b b <- aux sfârşit dacă dacă b > c atunci aux <- b b <- c c <- aux sfârşit dacă dacă a > b atunci aux <- a a <- b b <- aux sfârşit dacă scrie a, b, c stop
  • 29. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 29 #include<iostream.h> int main(void) { int a, b, c, aux; cin>>a; cin>>b; cin>>c; if( a > b ) { aux=a; a=b; b=aux; } if( b > c ){ aux=b; b=c; c=aux; } if( a > b ){ aux=a; a=b; b=aux; } cout<<a<<" "<<b<<" "<<c; }
  • 30. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valorile a=11, b=7, c=10 obţinem următorul rezultat: 7 10 11 Exemplul 2: Pentru valorile a=2, b=17, c=5 obţinem următorul rezultat: 2 5 17 02.12.2016 Programarea calculatoarelor 30
  • 31. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 31
  • 32. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while Instrucţiunea while (instrucţiune repetitivă cu test iniţial) Are următoarea formă: unde instrucţiune poate fi: instrucţiunea vidă instrucţiunea simplă sau instrucţiunea compusă 02.12.2016 Programarea calculatoarelor 32 while (expresie) instructiune;
  • 33. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while Instrucţiunea while (instrucţiune repetitivă cu test iniţial) Funcţionarea unei astfel de instrucţiuni se bazează pe evaluarea expresiei date şi executarea repetată a instrucţiunii cât timp expresia este îndeplinită. 02.12.2016 Programarea calculatoarelor 33
  • 34. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while Exemplu: Prezentăm în continuare un program în limbajul C/C++, care calculează suma primelor n numere întregi, cu n<=10: 02.12.2016 Programarea calculatoarelor 34 #include<iostream.h> int main(void) { int i, n, s=0; cout<<"Dati numarul n = "; cin>>n; i = 1; while( i <= n ) { s = s + i; i++; } cout<<"Suma primelor "<<n<<" numere intregi este "<<s; }
  • 35. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while La execuţia acestui program se poate obţine următorul rezultat: Dati numarul n = 5 Suma primelor 5 numere intregi este 15 02.12.2016 Programarea calculatoarelor 35
  • 36. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while Folosind facilităţile limbajului C/C++, se poate scrie aceeaşi secvenţă de program într-o formă prescurtată şi chiar mai eficientă: 02.12.2016 Programarea calculatoarelor 36 #include<iostream.h> int main(void) { int i=1, n, s=0; cout<<"Dati numarul n = "; cin>>n; while(i<=n) s+=i++; cout<<"Suma primelor "<<n<<" numere intregi este "<<s; }
  • 37. copyright@www.adrian.runceanu.ro 3.5. Instrucţiunea while Observaţie: Pentru ca un ciclu repetitiv să se execute încontinuu (la infinit), se poate utiliza o buclă infinită prin introducerea ca expresie a unei valori diferite de 0. while (1) este o buclă infinită care se va executa până când de la tastatură se va întrerupe execuţia prin apăsarea tastelor CTRL+C. 02.12.2016 Programarea calculatoarelor 37
  • 38. copyright@www.adrian.runceanu.ro Exemple de programe C++ Enunţ: Să se citească un număr natural n. Să se scrie un algoritm care afişează toţi divizorii numărului dat. Exemplu: Pentru n = 12, mulţimea divizorilor este formată din valorile 1, 2, 3, 4, 6, 12. Pas 1: Stabilim care sunt datele de intrare, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr natural Date de ieşire: divizorii numărului n 02.12.2016 Programarea calculatoarelor 38
  • 39. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 2: Analiza problemei În cadrul problemei pe care o avem de rezolvat, verificăm condiţia ca un număr să fie divizor al altui număr şi anume: i este divizor al numărului n dacă se împarte exact la el, adică dacă este adevărată expresia n % i = 0. Pentru a găsi toţi divizorii numărului n dat, vom da valori lui i, pornind de la valoarea 1 până la valoarea n. Deci vom utiliza o structură repetitivă. 02.12.2016 Programarea calculatoarelor 39
  • 40. Exemple de programe C++ 02.12.2016 Programarea calculatoarelor 40 Pas 3: Scrierea algoritmului în pseudocod: natural n, i citeşte n i <- 1 cât timp i <= n execută dacă n % i = 0 atunci scrie i sfârşit dacă i <- i + 1 sfârşit cât timp stop
  • 41. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 41 #include<iostream.h> int main(void) { int n, i; cin>>n; i = 1; while( i <= n ) { if( n % i == 0 ) cout<<i<<" "; i = i + 1; } }
  • 42. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=12 obţinem următorul rezultat: 1 2 3 4 6 12 Exemplul 2: Pentru valoarea n=18 obţinem următorul rezultat: 1 2 3 6 9 18 02.12.2016 Programarea calculatoarelor 42
  • 43. copyright@www.adrian.runceanu.ro Exemple de programe C++ Enunţ: Să se citească un număr natural n. Să se scrie un algoritm care verifică dacă numărul dat este sau nu număr prim. Un număr n este prim dacă are ca divizori doar valorile 1 şi n. Exemplu: Pentru n = 7, se va afişa mesajul ‘numărul este prim’, iar pentru n = 22, se va afişa mesajul ‘numărul NU este prim’. Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr natural Date de ieşire: număr prim sau nu 02.12.2016 Programarea calculatoarelor 43
  • 44. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 2: Analiza problemei Vom presupune, la începutul problemei, că numărul n dat este prim, şi vom specifica acest lucru cu ajutorul unei variabile de tip logic, căreia îi vom da valoarea ‘adevărat’. Apoi vom evalua, pe rând, toate valorile începând cu valoarea 2 şi până la n/2, ca să determinăm dacă sunt divizori ai numărului n dat. Dacă găsim un singur divizor printre aceste numere, atunci vom acorda valoarea ‘fals’ variabilei de tip logic. La sfârşit vom verifica care este valoarea variabilei de tip logic şi vom afişa un mesaj corespunzător. 02.12.2016 Programarea calculatoarelor 44
  • 45. Exemple de programe C++ 02.12.2016 Programarea calculatoarelor 45 Pas 3: Scrierea algoritmului în pseudocod: natural n, i logic p citeşte n p <- adevărat i <- 2 cât timp i <= n/2 execută dacă n % i = 0 atunci p <- fals sfârşit dacă i <- i + 1 sfârşit cât timp dacă p = adevărat atunci scrie ‘Numarul este prim’ altfel scrie ‘Numarul NU este prim’ sfârşit dacă stop
  • 46. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 46 #include<iostream.h> int main(void) { int n, i, p; cin>>n; p = 1; i = 2; while( i <= n/2 ) { if( n % i == 0 ) p = 0; i = i + 1; } if( p == 1 ) cout<<"Numarul este PRIM"; else cout<<"Numarul NU este PRIM"; }
  • 47. copyright@www.adrian.runceanu.ro Exemple de programe C++ Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=12 obţinem următorul rezultat: Numarul NU este PRIM Exemplul 2: Pentru valoarea n=7 obţinem următorul rezultat: Numarul este PRIM 02.12.2016 Programarea calculatoarelor 47
  • 48. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 1) Pentru n cunoscut, să se calculeze fn, termenul de rangul n din şirul lui Fibonacci, ştiind că: f0 = 1; f1 = 1; fn = fn-1 + fn-2 pentru orice valoare n >= 2. Exemplu: 02.12.2016 Programarea calculatoarelor 48 Date de intrare: 8 Date de ieşire: 21 (1, 1, 2, 3, 5, 8, 13, 21)
  • 49. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 2) Se dau trei numere. Determinaţi şi afişaţi cmmdc al lor (cmmdc = cel mai mare divizor comun). Exemplu: 02.12.2016 Programarea calculatoarelor 49 Date de intrare: 12 32 38 Date de ieşire: 2
  • 50. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 3) Se dă numărul n, să se afişeze toate numerele mai mici ca el, prime cu el. Doua numere sunt prime intre ele daca cel mai mare divizor comun al lor este 1. Exemplu: 02.12.2016 Programarea calculatoarelor 50 Date de intrare: 10 Date de ieşire: 1 3 7 9
  • 51. copyright@www.adrian.runceanu.ro 3.Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 51
  • 52. copyright@www.adrian.runceanu.ro 3.6. Instrucţiunea do while 02.12.2016 Programarea calculatoarelor 52 do instructiune while (expresie); Forma instructiunii este: unde instrucţiune poate fi:  instrucţiunea vidă  instrucţiunea simplă  instrucţiunea compusă
  • 53. copyright@www.adrian.runceanu.ro 3.6. Instrucţiunea do while 02.12.2016 Programarea calculatoarelor 53 Funcţionarea unei astfel de instrucţiuni se bazează pe executarea repetată a instrucţiunii cât timp condiţia este îndeplinită.
  • 54. copyright@www.adrian.runceanu.ro 3.6. Instrucţiunea do while Echivalenţa cu instrucţiunea while: Exemplu de utilizare a instructiunii do while: Să se scrie un program care tipăreşte numerele naturale de la 0 la 9 şi suma lor pe parcurs. 02.12.2016 Programarea calculatoarelor 54 instructiune; while(expresie) instructiune;
  • 55. copyright@www.adrian.runceanu.ro 3.6. Instrucţiunea do while #include<iostream.h> int main(void) { int numar = 0, total = 0; do{ total = total + numar; cout<<"numar = "<<numar++<<" total = "<<total<<endl; }while(numar<10); } 02.12.2016 Programarea calculatoarelor 55 La execuţia acestui program se obţine următorul rezultat: numar=0 total=0 numar=1 total=1 numar=2 total=3 numar=3 total=6 numar=4 total=10 numar=5 total=15 numar=6 total=21 numar=7 total=28 numar=8 total=36 numar=9 total=45
  • 56. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 56
  • 57. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Este una dintre cele mai “puternice” instrucţiuni ale limbajului C/C++, datorită formei sale. Forma instrucțiunii este: expresie1 – reprezintă secvenţa de iniţializarea a ciclului expresie2 – reprezintă condiţia de terminare a ciclului expresie3 – reprezintă secvenţa de reiniţializare a ciclului instrucţiune - corpul ciclului 02.12.2016 Programarea calculatoarelor 57 for(expresie1; expresie2; expresie3) instructiune;
  • 58. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for 02.12.2016 Programarea calculatoarelor 58 for(expresie1; expresie2; expresie3) instructiune; Funcţionarea unei astfel de instrucţiuni se bazează:  pe executarea repetată a instrucţiunii,  Verificarea expresiei2  Executarea expresiei3 Cat timp expresia2 este îndeplinită.
  • 59. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Se stie că instrucţiunea for este de fapt o variantă particulară a instrucţiunii while, drept pentru care se poate scrie echivalent astfel: 02.12.2016 Programarea calculatoarelor 59 expresie1; while(expresie2) { instructiune; expresie3; }
  • 60. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Invers, dacă avem: 02.12.2016 Programarea calculatoarelor 60 while (expresie) instructiune; for( ;expresie; ) instructiune; 
  • 61. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Funcţionarea instrucţiunii for are loc astfel: Se porneşte ciclul repetitiv prin iniţializarea sa, adică prin execuţia expresia1 iar apoi se evaluează expresia2 şi dacă este adevărată se execută corpul ciclului, adică instrucţiune după aceea se execută expresia3, şi se reia evaluarea expresiei2, ş.a.m.d. 02.12.2016 Programarea calculatoarelor 61
  • 62. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Observaţie: expresia1, expresia2, expresia3 pot să lipsească, dar este obligatorie prezenţa semnelor: “;”. 02.12.2016 Programarea calculatoarelor 62 for(;;)  while(1) – buclă infinită
  • 63. copyright@www.adrian.runceanu.ro 3.7. Instrucţiunea for Exemplu: Acelaşi program de adunare a primelor n numere întregi, în varianta cu instrucţiunea for, va avea o dimensiune mai mică: 02.12.2016 Programarea calculatoarelor 63 #include<iostream.h> int main(void) { int i, n, s = 0; cout<<"Dati numarul n ="; cin>>n; for(i=1; i<=n; i++) s = s + i; cout<<"Suma primelor"<<n<<" numere intregi este "<<s; }
  • 64. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Enunţ: Fie un număr natural n. Să se scrie un algoritm care să calculeze factorialul numărului dat. (factorial = produsul numerelor naturale mai mici sau egale decat n) Exemplu: Pentru n = 5, se va afişa valoarea p = 1*2*3*4*5=120. 02.12.2016 Programarea calculatoarelor 64
  • 65. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n = număr natural Date de ieşire: factorialul numărului dat = p 02.12.2016 Programarea calculatoarelor 65
  • 66. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 2: Analiza problemei La începutul problemei, vom iniţializa valoarea produsului numerelor cu 1. Apoi, într-un ciclu repetitiv vom calcula produsul numerelor naturale aflate intre 1 si n. 02.12.2016 Programarea calculatoarelor 66
  • 67. Exemplu de program C++ - instructiunea for 02.12.2016 Programarea calculatoarelor 67 Pas 3: Scrierea algoritmului în pseudocod: natural n, p, i citeşte n p <- 1 pentru i=1,n execută p <- p * i sfârşit pentru scrie p stop
  • 68. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 68 #include<iostream.h> int main(void) { int n, p, i; cin>>n; p = 1; for(i = 1; i<=n; i++) p = p * i; cout<<p; }
  • 69. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=5 obţinem următorul rezultat: 120 Exemplul 2: Pentru valoarea n=7 obţinem următorul rezultat: 5040 02.12.2016 Programarea calculatoarelor 69
  • 70. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Enunţ: Fie un număr natural n de cinci cifre. Să se scrie un algoritm care să calculeze suma cifrelor numărului dat. Exemplu: Pentru n = 2178, se va afişa valoarea s = 2+1+7+8 = 18 02.12.2016 Programarea calculatoarelor 70
  • 71. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr natural Date de ieşire: suma cifrelor = s. 02.12.2016 Programarea calculatoarelor 71
  • 72. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 2: Analiza problemei La începutul problemei, vom iniţializa valoarea sumei cifrelor numărului n dat cu 0. Apoi, într-un ciclu repetitiv vom calcula suma cifrelor numărului, ştiind că: o cifră a unui număr scris în baza 10 este dată de restul împărțirii la 10 - n%10, iar numărul fără ultima cifră este dat de câtul împărțirii la 10 - n/10. 02.12.2016 Programarea calculatoarelor 72
  • 73. Exemplu de program C++ - instructiunea do while 02.12.2016 Programarea calculatoarelor 73 Pas 3: Scrierea algoritmului în pseudocod: natural n, s citeşte n s <- 0 repetă s <- s + n % 10 n <- n / 10 până când n = 0 scrie s stop
  • 74. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 74 #include<iostream.h> int main(void) { int n, s; cin>>n; s = 0; do { s = s + n % 10; n = n / 10; }while( n != 0 ); cout<<s; }
  • 75. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=123 obţinem următorul rezultat: 6 Exemplul 2: Pentru valoarea n=5378 obţinem următorul rezultat: 23 02.12.2016 Programarea calculatoarelor 75
  • 76. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Enunţ: Să se scrie un program care generează toate numerele perfecte până la o valoare dată, n. Un număr perfect este egal cu suma divizorilor lui, inclusiv 1 (exemplu: 6=1+2+3). Exemplu: Pentru n = 1000, se vor afişa valorile 6, 28, 496 02.12.2016 Programarea calculatoarelor 76
  • 77. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr natural Date de ieşire: numerele perfecte mai mici sau egale decât n. 02.12.2016 Programarea calculatoarelor 77
  • 78. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 2: Analiza problemei La începutul problemei, vom lua toate valorile de la 1 la n, şi pentru fiecare valoare i o vom verifica dacă este sau nu număr perfect. Numerele perfecte obţinute le vom afişa. 02.12.2016 Programarea calculatoarelor 78
  • 79. Exemplu de program C++ - instructiunea do while 02.12.2016 Programarea calculatoarelor 79 Pas 3: Scrierea algoritmului în pseudocod: natural n, i, j, s citeşte n i <- 1 repetă s <- 0 j <- 1 repetă dacă i % j = 0 atunci s <- s + j sfârşit dacă j <- j + 1 până când j > i/2 dacă s = i atunci scrie i sfârşit dacă i <- i + 1 până când i > n stop
  • 80. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 80 #include<iostream.h> int main(void) { int n, i, j, s; cin>>n; i = 1; do{ s = 0; j = 1; do{ if( i % j == 0 ) s = s + j; j = j + 1; }while(j <= i/2); if( s == i ) cout<<i<<" "; i = i + 1; }while(i <= n); }
  • 81. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea do while Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=100 obţinem următoarele rezultate: 6 28 Exemplul 2: Pentru valoarea n=10000 obţinem următoarele rezultate: 6 28 496 8128 02.12.2016 Programarea calculatoarelor 81
  • 82. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Enunţ: Să se scrie un program care generează toate numerele prime până la o valoare dată, n. Un număr x este prim dacă are ca divizori doar valorile 1 şi x. Exemplu: Pentru n = 22, se vor afişa valorile: 2,3,5,7,11,13,17,19 02.12.2016 Programarea calculatoarelor 82
  • 83. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire. În cazul problemei date, avem: Date de intrare: n număr natural Date de ieşire: numerele prime mai mic decat n 02.12.2016 Programarea calculatoarelor 83
  • 84. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 2: Analiza problemei Intr-un ciclu repetitiv de la 1 la n vom verifica toate valorile daca respecta proprietatea de numar prim. Vom presupune, la începutul problemei, că numărul i dat este prim, şi vom specifica acest lucru cu ajutorul unei variabile de tip întreg, căreia îi vom da valoarea 1. • Apoi vom evalua, pe rând, toate valorile începând cu valoarea 2 şi până la i/2, ca să determinăm dacă sunt divizori ai numărului i dat. • Dacă găsim un singur divizor printre aceste numere, atunci vom acorda valoarea 0 variabilei de tip întreg de la începutul verificarii conditiei de numar prim. • La sfârşit vom verifica care este valoarea variabilei de tip întreg şi vom afişa numarul i. 02.12.2016 Programarea calculatoarelor 84
  • 85. Exemplu de program C++ - instructiunea for 02.12.2016 Programarea calculatoarelor 85 Pas 3: Scrierea algoritmului în pseudocod: natural n,i,j logic p citeşte n pentru i = 2, n execută p <- adevărat pentru j = 2, i/2 execută dacă i % j = 0 atunci p <- fals sfârşit dacă sfârşit pentru dacă p = adevărat atunci scrie i,‘ ’ sfârşit dacă sfârşit pentru stop
  • 86. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 4: Implementarea algoritmului în limbajul de programare C++: 02.12.2016 Programarea calculatoarelor 86 #include<iostream.h> int main(void) { int n, prim, i, j; cin>>n; for(i = 2; i<=n; i++) { prim = 1; for(j = 2; j<=i/2; j++) if(i % j == 0 ) prim = 0; if( prim == 1) cout<<i<<“ ”; } }
  • 87. copyright@www.adrian.runceanu.ro Exemplu de program C++ - instructiunea for Pas 5: Testarea algoritmului pe date de intrare diferite şi verificarea rezultatelor. Exemplul 1: Pentru valoarea n=53 obţinem rezultatele: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 Exemplul 2: Pentru valoarea n=12 obţinem următorul rezultat: 2 3 5 7 11 02.12.2016 Programarea calculatoarelor 87
  • 88. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 88
  • 89. copyright@www.adrian.runceanu.ro 3.8. Instrucţiunea switch Instrucţiunea switch funcţionează astfel: Se evaluează expresia şi în funcţie de rezultat se compară cu c1, c2, . . ., cn şi când expresia este egală cu c1 atunci se execută şirul de instrucţiuni corespunzător, şi cu instrucţiunea break se sare la sfârşitul instrucţiunii switch, la fel se întâmplă şi dacă expresia este egală cu c2 ,sau cu c3 , sau cu cn. 02.12.2016 Programarea calculatoarelor 89 switch (expresie) { case c1 : sir_instructiuni_1; break; case c2 : sir_instructiuni_2; break; . . . . . . . . case cn : sir_instructiuni_ n; break; default: sir_instructiuni; }
  • 90. copyright@www.adrian.runceanu.ro 3.8. Instrucţiunea switch Instrucţiunea switch este o instrucţiune de tip decizie multiplă astfel încât se poate scrie echivalent folosind instrucţiunea de decizie simplă if: 02.12.2016 Programarea calculatoarelor 90 if (expresie==c1) sir_instructiuni_1; else if (expresie==c2) sir_instructiuni_2; . . . . . . . . else if (expresie==cn) sir_instructiuni_ n; else sir_instructiuni;
  • 91. copyright@www.adrian.runceanu.ro 3.8. Instrucţiunea switch Prezentăm în continuare un program care numără vocalele şi consoanele din alfabet. De observat că unele din instrucţiunile case se execută în cascadă, pentru calculul vocalelor, iar pentru consoane se foloseşte cazul default: 02.12.2016 Programarea calculatoarelor 91 #include<iostream.h> int main(void) { char litera; int nr_vocale = 0, nr_consoane = 0; for (litera = ‘A’; litera <= ‘Z’; litera++) switch (litera) { case ‘A’: case ‘E’: case ‘I’: case ‘O’: case ‘U’: nr_vocale++; break; default: nr_consoane++; } cout<<"nNumarul de vocale este "<<nr_vocale; cout<<"nNumarul de consoane este "<< nr_consoane; }
  • 92. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 92
  • 93. copyright@www.adrian.runceanu.ro 3.9. Instrucţiunea break Instrucţiunea întrerupe execuţia instrucţiunilor while, do while, for şi switch, determinând astfel ieşirea forţată dintr-un ciclu repetitv. Exemplu: for(;;) { . . . . . break; } 02.12.2016 Programarea calculatoarelor 93 break;
  • 94. copyright@www.adrian.runceanu.ro 3.9. Instrucţiunea break Exemplu: Prezentăm în continuare, un program care folosind instrucţiunea break, afisează numerele întregi aflate între 1 şi 100 şi apoi de la 100 la 1. De fiecare dată când număr ajunge la valoarea 50, instrucţiunea break face ca execuţia ciclului să se oprească: 02.12.2016 Programarea calculatoarelor 94 #include<iostream.h> int main(void) { int numar; for(numar = 1; numar<=100; numar++) { if(numar == 50) break; cout<<" "<<numar; } cout<<"nCel de-al doilea ciclu repetitiv"; for(numar = 100; numar>=1; numar--) { if(numar == 50) break; cout<<" "<<numar; } }
  • 95. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 95
  • 96. copyright@www.adrian.runceanu.ro 3.10. Instrucţiunea continue Se referă la instrucţiunile de ciclare: for, while şi do while. La întâlnirea ei ciclurile while şi do while se continuă cu reevaluarea condiţiei de ciclare iar în ciclul for se continuă cu secvenţa de reiniţializare a ciclului şi apoi cu reevaluarea ciclului. 02.12.2016 Programarea calculatoarelor 96
  • 97. copyright@www.adrian.runceanu.ro 3.10. Instrucţiunea continue Exemplu: Prezentăm în continuare, un program care folosind instrucţiunea continue într-un ciclu for şi într-un ciclu while, afişează numerele pare şi impare aflate între 1 şi 100: 02.12.2016 Programarea calculatoarelor 97 #include<iostream.h> int main(void) { int numar; cout<<"Numerele pare dintre 1 si 100 sunt: "; for (numar = 1; numar <= 100; numar++) { if(numar % 2 != 0) continue; cout<<" "<<numar; } cout<<"nNumerele impare dintre 1 si 100 sunt: "; numar=0; while(numar <= 100) { numar++; if(numar % 2==0) continue; cout<<" "<<numar; } }
  • 98. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 98
  • 99. copyright@www.adrian.runceanu.ro 3.11. Instrucţiunea goto Este instrucţiunea pentru salt necondiţionat. unde eticheta este un nume care prefixează o instrucţiune. Exemplu: Prezentăm în continuare, un program care folosind instrucţiunea goto, afişează numerele întregi aflate între 1 şi 100: int main(void) { int numar=1; eticheta: cout<<" ", numar++; if (numar <= 100) goto eticheta; } 02.12.2016 Programarea calculatoarelor 99 goto eticheta;
  • 100. copyright@www.adrian.runceanu.ro 3. Instrucţiunile limbajului C++ 3.1. Instrucţiunea vidă 3.2. Instrucţiunea compusă 3.3. Instrucţiunea expresie 3.4. Instrucţiunea if 3.5. Instrucţiunea while 3.6. Instrucţiunea do while 3.7. Instrucţiunea for 3.8. Instrucţiunea switch 3.9. Instrucţiunea break 3.10. Instrucţiunea continue 3.11. Instrucţiunea goto 3.12. Instrucţiunea return 02.12.2016 Programarea calculatoarelor 100
  • 101. copyright@www.adrian.runceanu.ro 3.12. Instrucţiunea return Instrucţiunea return Se foloseşte în funcţii atunci când: • se întoarce în funcţia apelantă o valoare (formele 2 şi 3) • sau într-o funcţie care nu întoarce nici o valoare (funcţioneaza ca o procedură) – forma 1. 02.12.2016 Programarea calculatoarelor 101 1. return; 2. return expresie; 3. return (expresie);
  • 102. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 1) Să se afişeze toate numerele palindrom mai mari decat 10 şi mai mici decat un număr dat, n. Exemplu: 02.12.2016 Programarea calculatoarelor 102 Date de intrare: n=110 Date de ieşire: 11 22 33 44 55 66 77 88 99 101
  • 103. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 2) Să se determine toate tripletele de numere a, b, c cu proprietăţile: 1<a<b<c<100; a+b+c se divide cu 10. Exemplu: 02.12.2016 Programarea calculatoarelor 103 Date de intrare: - Date de ieşire: 95 96 99 si 95 97 99 sunt ultimele doua triplete
  • 104. copyright@www.adrian.runceanu.ro Probleme propuse spre rezolvare: 3) Să se afişeze toate numerele de două cifre care adunate cu răsturnatul lor dau 55. Exemplu: 02.12.2016 Programarea calculatoarelor 104 Date de intrare: - Date de ieşire: 14 41; 23 32; 32 23; 41 14
  • 105. copyright@www.adrian.runceanu.ro Pentru alte informații teoretice și aplicative legate de acest capitol se recomandă următoarele referințe bibliografice: 1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în limbajul C++, Editura Academica Brâncuși, Târgu-Jiu, 2012 (www.utgjiu.ro/editura) 2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor, Editura Academica Brâncuși, Târgu-Jiu, 2003 (www.utgjiu.ro/editura) 3. Octavian Dogaru, C++ - teorie şi practică, volumul I, Editura Mirton, Timişoara, 2004 (www.utgjiu.ro/editura) 02.12.2016 Programarea calculatoarelor 105
  • 106. copyright@www.adrian.runceanu.ro Recapitulare pseudocod – limbaj C++ Pseudocod C++ Tipuri de date simple: natural intreg real logic unsigned int, long float, double bool CITIRE date citeste v1,v2 cin>>v1>>v2 ; AFISARE date scrie expresie1, expresie2 cout<<expresie1<<expresie2 ATRIBUIRE vexpresie v=expresie; v1=v2=...=v3=expresie; STRUCTURA DECIZIONALA daca conditie atunci instructiune 1 altfel instructiune 2 if (conditie) instructiune 1; else instructiune 2; STRUCTURA executa... cat timp executa instructiune cat timp conditie do instructiune; while (conditie); PENTRU pentru vvali, valf, pas executa instructiune for(v=vali ; v<=valf ; v=v+pas) instructiune ; INSTRUCTIUNE COMPUSA | instructiune 1; | instructiune 2; | ....................... | instructiune n;  { instructiune 1; instructiune 2; ...................... instructiune n; } 02.12.2016 Programarea calculatoarelor 106
  • 107. copyright@www.adrian.runceanu.ro Recapitulare elemente de limbaj C++ 02.12.2016 Programarea calculatoarelor 107 Biblioteci #include <iostream.h> int main() { ................................ instructiuni } Antet functie main { declaratii de: tipuri, constante, variabile Citire date intrare Prelucrare date Afisare } Structura unui program C++
  • 108. copyright@www.adrian.runceanu.ro Pentru alte informații teoretice și aplicative legate de acest capitol se recomandă următoarele referințe bibliografice: 1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în limbajul C++, Editura Academica Brâncuși, Târgu-Jiu, 2012 (www.utgjiu.ro/editura) 2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor, Editura Academica Brâncuși, Târgu-Jiu, 2003 (www.utgjiu.ro/editura) 3. Octavian Dogaru, C++ - teorie şi practică, volumul I, Editura Mirton, Timişoara, 2004 (www.utgjiu.ro/editura) 02.12.2016 Programarea calculatoarelor 108
  • 109. copyright@www.adrian.runceanu.ro “First, solve the problem. Then, write the code.” - John Johnson 02.12.2016 Programarea Calculatoarelor - curs 109