Sunteți pe pagina 1din 53

Universitatea Constantin Brncui din Trgu-Jiu

Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu

Programarea
calculatoarelor
Lect.dr. Adrian Runceanu

copyright@www.adrian.runceanu.ro

Curs 5
Instruciunile limbajului C++

23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5. Instruciunile limbajului C++


5.1. Instruciunea vid
5.2. Instruciunea compus
5.3. Instruciunea expresie
5.4. Instruciunea if
5.5. Instruciunea while
5.6. Instruciunea do while
5.7. Instruciunea for
5.8. Instruciunea switch
5.9. Instruciunea break
5.10. Instruciunea continue
5.11. Instruciunea goto
5.12. Instruciunea return
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5.1. Instruciunea vid


Limbajul C++ are cteva instruciuni cu
ajutorul crora se pot construi programe.
Acestea sunt:
;
Instruciunea vid:

Instruciunea compus:

{.... }

este delimitat de { i se termin cu }.


23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5. Instruciunile limbajului C++


5.1. Instruciunea vid
5.2. Instruciunea compus
5.3. Instruciunea expresie
5.4. Instruciunea if
5.5. Instruciunea while
5.6. Instruciunea do while
5.7. Instruciunea for
5.8. Instruciunea switch
5.9. Instruciunea break
5.10. Instruciunea continue
5.11. Instruciunea goto
5.12. Instruciunea return
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5.2. Instruciunea compus


Uneori programele trebuie s efectueze una sau
mai multe instruciuni atunci cnd o condiie este
ndeplinit (de exemplu ntr-o instruciune if) i alte
instruciuni cnd condiia nu este ndeplinit.
Sau atunci cnd o condiie se evalueaz ntr-o
structur (instruciune) repetitiv de tip while, do
while sau for, iar prelucrrile din acea structur pot
s fie compuse din una sau mai multe instruciuni.
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5.2. Instruciunea compus


Limbajul C++ consider instruciunile ca fiind
instruciuni simple i instruciuni compuse:
O instruciune simpl este de fapt o singur
instruciune, cum ar fi aceea de atribuire sau de apel
al unei funcii standard (de exemplu funcia cout).
O instruciune compus este alctuit din dou
sau mai multe instruciuni incluse ntre acolade.
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5. Instruciunile limbajului C++


5.2. Instruciunea vid
5.2. Instruciunea compus
5.3. Instruciunea expresie
5.4. Instruciunea if
5.5. Instruciunea while
5.6. Instruciunea do while
5.7. Instruciunea for
5.8. Instruciunea switch
5.9. Instruciunea break
5.10. Instruciunea continue
5.11. Instruciunea goto
5.12. Instruciunea return
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5.3. Instruciunea expresie


Instruciunea expresie:
Are 3 forme:

expresie;

a) instruciunea de atribuire
b) instruciunea de apel de funcie
c) instruciunea de incrementare / decrementare
23.03.2014

Programarea calculatoarelor

copyright@www.adrian.runceanu.ro

5.3. Instruciunea expresie


a) instruciunea de atribuire
variabila = expresie;
sau
variabila operator = expresie;
Exemplu:
int x, y, z;
z = x + 5 * y;
x + = 10; (semnificaie: x = x + 10;)
23.03.2014

Programarea calculatoarelor

10

copyright@www.adrian.runceanu.ro

5.3. Instruciunea expresie


b) instruciunea de apel de funcie
nume_functie(pa1, pa2, . . . ,pan);
unde pa1, pa2, . . ., pan sunt parametrii actuali ai
funciei (adic valorile cu care se va lucra n
funcia respectiv la apelul funciei).
Exemplu:
maxim (int a, int b); // apelul functiei maxim care are doi
parametri actuali de tip ntreg
23.03.2014

Programarea calculatoarelor

11

copyright@www.adrian.runceanu.ro

5.3. Instruciunea expresie


c) instruciunea de incrementare/decrementare
Exemplu:
int i, j, k;
i++;
--j;
k++ + --i;

23.03.2014

variabila ++;
++ variabila;
variabila --;
-- variabila;

Programarea calculatoarelor

12

copyright@www.adrian.runceanu.ro

5. Instruciunile limbajului C++


5.1. Instruciunea vid
5.2. Instruciunea compus
5.3. Instruciunea expresie
5.4. Instruciunea if
5.5. Instruciunea while
5.6. Instruciunea do while
5.7. Instruciunea for
5.8. Instruciunea switch
5.9. Instruciunea break
5.10. Instruciunea continue
5.11. Instruciunea goto
5.12. Instruciunea return
23.03.2014

Programarea calculatoarelor

13

copyright@www.adrian.runceanu.ro

5.4. Instruciunea if
Instruciunea if
(instruciune de decizie sau condiional)
if (expresie) instructiune;
Are dou forme:
if (expresie)
instructiune1;
else
instructiune2;
23.03.2014

Programarea calculatoarelor

14

copyright@www.adrian.runceanu.ro

5.4. Instruciunea if
Instruciunea if

Observaie:
n limbajul C++, spre deosebire de limbajul
PASCAL, nu exist cuvntul cheie THEN.
23.03.2014

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 ieire.
n cazul problemei date, avem:
Date de intrare: a, b, i c numere reale ce reprezint
laturile triunghiului.
Date de ieire: p i S numere reale ce reprezint
perimetrul si aria triunghiului dat.
23.03.2014

Programarea calculatoarelor

16

Exemple de programe C++


Pas 2: Analiza problemei
Stabilim condiiile 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,
cunoatem formula lui Heron pentru calculul ariei
unui triunghi dac se cunosc laturile sale:
S

p( p a)( p b)( p c)

unde p reprezint semiperimetrul triunghiului.


23.03.2014

Programarea calculatoarelor

17

Exemple de programe C++


Pas 3: Scrierea algoritmului n pseudocod:

real a, b, c, p, S
citete a, b, c
p <- a + b + c
scrie Perimetrul triunghiului este , p
p <- p / 2
S p (p a) (p b) (p c)

scrie Aria triunghiului este , S


stop

23.03.2014

Programarea calculatoarelor

18

copyright@www.adrian.runceanu.ro

Exemple de programe C++


#include<iostream.h>
#include<math.h>
Pas 4:
int main(void)
Implementarea {
float a, b, c, p, S;
algoritmului n
cin>>a; cin>>b; cin>>c;
limbajul de
programare 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;
}
23.03.2014

Programarea calculatoarelor

19

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, obinem urmtoarele
rezultate:
Perimetrul este = 9
Aria este = 1.369306
Exemplul 2:
Pentru valorile a=12, b=4, c=10, obinem
urmtoarele rezultate:
Perimetrul este = 26
Aria este = 5.196152
23.03.2014

Programarea calculatoarelor

20

Exemple de programe C++


Enun:
S se calculeze valoarea funciei f(x), tiind c x
este un numr real introdus de la tastatur:
6 x 20, daca x (,7]

f ( x) x 30, daca x (7,0]

x 2,
daca x 0

Pas 1:
Date de intrare: x numr real
Date de iesire: f numr real, reprezentnd valoarea
funciei date.
23.03.2014

Programarea calculatoarelor

21

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Pas 2: Analiza problemei
Stabilim condiiile pe care trebuie s le
ndeplineasc datele de intrare pentru a fi
prelucrate n cadrul algoritmului.
Cutm cazurile particulare.
n cadrul problemei pe care o avem de rezolvat,
verificm condiiile date n expresia funciei:
1) Dac x <= -7, atunci funcia are valoarea: -6x+20
2) Daca x > -7 si x <= 0, atunci funcia are valoarea:
x+30
3) Daca x > 0, atunci funcia are valoarea: sqrt(x)+2
23.03.2014

Programarea calculatoarelor

22

Exemple de programe C++

Pas 3:
Scrierea
algoritmului n
pseudocod:

23.03.2014

real x, f
citete 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
sfrit dac
sfarit dac
scrie f
stop
Programarea calculatoarelor

23

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Pas 4:
Implementarea
algoritmului n
limbajul de
programare C++:

23.03.2014

#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;
}
Programarea calculatoarelor

24

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 obinem urmtorul rezultat:
f= 3.414214
Exemplul 2:
Pentru valoarea x=-24 obinem urmtorul
rezultat:
f= 164
23.03.2014

Programarea calculatoarelor

25

Exemple de programe C++


Enun:
Se dau trei numere ntregi a,b,c. S se
afieze n ordine cresctoare.
Exemplu: Dac a = 12, b = 2, c = 9, atunci
obinem
a = 2, b = 9, c = 12
Pas 1:
Date de intrare: a, b, c numere ntregi
Date de iesire: a, b, c n ordine cresctoare
23.03.2014

Programarea calculatoarelor

26

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Pas 2: Analiza problemei
1) Comparm primele dou numere a i b, dac a este
mai mare dect b atunci vom interschimba cele
dou valori.
2) Comparm urmtoarele dou numere b i c, dac b
este mai mare dect c atunci vom interschimba cele
dou valori.
3) Comparm din nou cele dou numere a i b, dac a
este mai mare dect b atunci vom interschimba cele
dou valori.
23.03.2014

Programarea calculatoarelor

27

Exemple de programe C++


Pas 3:
Scrierea
algoritmului n
pseudocod:

23.03.2014

ntreg a, b, c, aux
citete a, b, c
dac a > b atunci
aux <- a
a <- b
b <- aux
sfrit dac
dac b > c atunci
aux <- b
b <- c
c <- aux
sfrit dac
dac a > b atunci
aux <- a
a <- b
b <- aux
sfrit dac
scrie a, b, c
stop
Programarea calculatoarelor

28

copyright@www.adrian.runceanu.ro

Exemple de programe C++

Pas 4: Implementarea
algoritmului n
limbajul de
programare C++:

23.03.2014

#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;
}

Programarea calculatoarelor

29

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 obinem
urmtorul rezultat:
7 10 11
Exemplul 2:
Pentru valorile a=2, b=17, c=5 obinem
urmtorul rezultat:
2 5 17
23.03.2014

Programarea calculatoarelor

30

copyright@www.adrian.runceanu.ro

5. Instruciunile limbajului C++


5.1. Instruciunea vid
5.2. Instruciunea compus
5.3. Instruciunea expresie
5.4. Instruciunea if
5.5. Instruciunea while
5.6. Instruciunea do while
5.7. Instruciunea for
5.8. Instruciunea switch
5.9. Instruciunea break
5.10. Instruciunea continue
5.11. Instruciunea goto
5.12. Instruciunea return
23.03.2014

Programarea calculatoarelor

31

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while


Instruciunea while
(instruciune repetitiv cu test iniial)
Are urmtoarea form:

while (expresie)
instructiune;

unde instruciune poate fi:


instruciunea vid
instruciunea simpl
sau instruciunea compus
23.03.2014

Programarea calculatoarelor

32

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while


Instruciunea while
(instruciune repetitiv cu test
iniial)
Funcionarea unei astfel
de instruciuni se bazeaz pe
evaluarea expresiei date i
executarea
repetat
a
instruciunii ct timp expresia
este ndeplinit.
23.03.2014

Programarea calculatoarelor

33

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while


Exemplu:
Prezentm n
continuare un
program n limbajul
C/C++, care
calculeaz suma
primelor n numere
ntregi, cu n<=10:

23.03.2014

#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<<endl;
Programarea calculatoarelor
34
}

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while

La execuia acestui program se poate obine


urmtorul rezultat:
Dati numarul n = 5
Suma primelor 5 numere intregi este 15

23.03.2014

Programarea calculatoarelor

35

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while


Folosind
facilitile limbajului
C/C++, se poate
scrie
aceeai
secven
de
program
ntr-o
form prescurtat i
chiar mai eficient:

23.03.2014

#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<<endl;
}
Programarea calculatoarelor

36

copyright@www.adrian.runceanu.ro

5.5. Instruciunea while


Observaie:
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 pn cnd de la tastatur se va
ntrerupe execuia prin apsarea tastelor
CTRL+C.
23.03.2014

Programarea calculatoarelor

37

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Enun:
S se citeasc un numr natural n. S se scrie un
algoritm care afieaz toi divizorii numrului dat.
Exemplu: Pentru n = 12, mulimea divizorilor este format
din valorile 1, 2, 3, 4, 6, 12.
Pas 1: Stabilim care sunt datele de intrare, mpreun cu
datele de ieire.
n cazul problemei date, avem:
Date de intrare: n numr natural
Date de ieire: divizorii numrului n
23.03.2014

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,
verificm condiia ca un numr s fie divizor al altui
numr i anume:
i este divizor al numrului n dac se mparte
exact la el, adic dac este adevrat expresia n % i =
0.
Pentru a gsi toi divizorii numrului n dat, vom
da valori lui i, pornind de la valoarea 1 pn la
valoarea n.
Deci vom utiliza o structur repetitiv.
23.03.2014

Programarea calculatoarelor

39

Exemple de programe C++

Pas 3:
Scrierea
algoritmului n
pseudocod:

23.03.2014

natural n, i
citete n
i <- 1
ct timp i <= n execut
dac n % i = 0 atunci
scrie i
sfrit dac
i <- i + 1
sfrit ct timp
stop

Programarea calculatoarelor

40

copyright@www.adrian.runceanu.ro

Exemple de programe C++


#include<iostream.h>
int main(void)
{
int n, i;
Pas 4:
cin>>n;
Implementarea
i = 1;
algoritmului n
while( i <= n )
limbajul de
programare C++: {
if( n % i == 0 )
cout<<i<<" ";
i = i + 1;
}
23.03.2014
} Programarea calculatoarelor

41

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 obinem urmtorul rezultat:
1 2 3 4 6 12
Exemplul 2:
Pentru valoarea n=18 obinem urmtorul rezultat:
1 2 3 6 9 18
23.03.2014

Programarea calculatoarelor

42

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Enun:
S se citeasc un numr natural n. S se scrie un algoritm care
verific dac numrul dat este sau nu numr prim. Un numr n
este prim dac are ca divizori doar valorile 1 i n.
Exemplu:
Pentru n = 7, se va afia mesajul numrul este prim,
iar pentru n = 22, se va afia mesajul numrul NU este prim.
Pas 1: Stabilim care sunt datele de intrare, adic cele care vor fi
prelucrate cu ajutorul algoritmului, mpreun cu datele de ieire.
n cazul problemei date, avem:
Date de intrare: n numr natural
Date de ieire: numr prim sau nu
23.03.2014

Programarea calculatoarelor

43

copyright@www.adrian.runceanu.ro

Exemple de programe C++


Pas 2: Analiza problemei
Vom presupune, la nceputul problemei, c numrul
n dat este prim, i vom specifica acest lucru cu ajutorul
unei variabile de tip logic, creia i vom da valoarea
adevrat.
Apoi vom evalua, pe rnd, toate valorile ncepnd cu
valoarea 2 i pn la n-1, ca s determinm dac sunt
divizori ai numrului n dat.
Dac gsim un singur divizor printre aceste numere,
atunci vom acorda valoarea fals variabilei de tip logic.
La sfrit vom verifica care este valoarea variabilei
de tip logic i vom afia un mesaj corespunztor.
23.03.2014

Programarea calculatoarelor

44

Exemple de programe C++

Pas 3:
Scrierea
algoritmului n
pseudocod:

23.03.2014

natural n, i
logic p
citete n
p <- adevrat
i <- 2
ct timp i <= n-1 execut
dac n % i = 0 atunci
p <- fals
sfrit dac
i <- i + 1
sfrit ct timp
dac p = adevrat atunci
scrie Numarul este prim
altfel
scrie Numarul NU este prim
sfrit dac
stop

Programarea calculatoarelor

45

copyright@www.adrian.runceanu.ro

Exemple de programe C++

Pas 4:
Implementarea
algoritmului n
limbajul de
programare C++:

23.03.2014

#include<iostream.h>
int main(void)
{
int n, i, p;
cin>>n;
p = 1;
i = 2;
while( i <= n-1 )
{
if( n % i == 0 ) p = 0;
i = i + 1;
}
if( p == 1 ) cout<<"Numarul este PRIM";
else cout<<"Numarul NU este PRIM";
} Programarea calculatoarelor
46

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 obinem urmtorul rezultat:
Numarul NU este PRIM
Exemplul 2:
Pentru valoarea n=7 obinem urmtorul rezultat:
Numarul este PRIM
23.03.2014

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; fp = fp-1 + fp-2 pentru orice
valoare p >= 2.
Exemplu:

Date de intrare: 8
Date de ieire: 21 (1,1,2,3,5,8,13,21)
23.03.2014

Programarea calculatoarelor

48

copyright@www.adrian.runceanu.ro

Probleme propuse spre rezolvare:


2) Se dau trei numere. Determinai i afiai
cmmdc al lor (cmmdc = cel mai mare divizor
comun).

Exemplu:
Date de intrare: 12 32 38
Date de ieire: 2

23.03.2014

Programarea calculatoarelor

49

copyright@www.adrian.runceanu.ro

Probleme propuse spre rezolvare:


3) Se d numrul n, s se afieze 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:

23.03.2014

Date de intrare: 10
Date de ieire: 1 3 7 9
Programarea calculatoarelor

50

copyright@www.adrian.runceanu.ro

Pentru alte informaii teoretice i practice legate


de acest capitol se recomand urmtoarele referine
bibliografice:
1. Adrian Runceanu, Mihaela Runceanu, Noiuni de
programare n limbajul C++, Editura Academica
Brncui, Trgu-Jiu, 2012 (www.utgjiu.ro/editura)
2. Adrian Runceanu, Programarea i utilizarea
calculatoarelor, Editura Academica Brncui, Trgu-Jiu,
2003 (www.utgjiu.ro/editura)
3. Octavian Dogaru, C++ - teorie i practic, volumul I,
Editura Mirton, Timioara, 2004
(www.utgjiu.ro/editura)
23.03.2014

Programarea calculatoarelor

51

copyright@www.adrian.runceanu.ro

23.03.2014

Programarea calculatoarelor

52

copyright@www.adrian.runceanu.ro

ntrebri?

23.03.2014

Programarea calculatoarelor

53

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