Sunteți pe pagina 1din 30

Subprograme

Sumar
1. Competene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Declararea, definirea i apelul subprogramelor . . . . . . . . . . . . . . . . . 4
3. Variabile locale i variabile globale . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. Parametri transmii prin valoare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5. Parametri transmii prin referin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6. Funcii care returneaz o valoare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7. Aplicaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8. Bibliografie i webografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1. Competene

Competene generale
implementarea algoritmilor ntr-un limbaj de programare
elaborarea algoritmilor de rezolvare a problemelor
aplicarea algoritmilor fundamentali n prelucrarea datelor
identificarea conexiunilor dintre informatic i societate

Competene specifice
utilizarea corect a subprogramelor predefinite i a celor definite de
utilizator
construirea unor subprograme pentru rezolvarea subproblemelor unei
probleme
prelucrarea datelor structurate
recunoaterea situaiilor n care este necesar utilizarea unor
subprograme
analiza problemei n scopul identificrii subproblemelor acesteia
elaborarea unui algoritm de rezolvare a unei probleme din aria
currcicular a specialitii
3

2. Declararea, definirea i apelul subprogramelor


Noiunea de subprogram este legat de ideea general a descompunerii
unei probleme n subprobleme.
n rezolvarea problemelor apar urmtoarele situaii care necesit o
rezolvare:
o secven dintr-un program se repet;
exist mai multe programe care au nevoie de un anumit calcul.
Apare ideea ca acea secven sau acel calcul s fie scris o dat i s fie
folosit ori de cte ori este nevoie. n astfel de situaii se folosesc
subprograme.
Astfel, un subprogram reprezint o parte dintr-un program, identificat prin
nume, care se poate lansa n execuie ori de cte ori este cazul.

Declararea, definirea i apelul subprogramelor


Definiie
Subprogramul este o secven de instruciuni care rezolv o
anumit sarcin i care poate fi descris separat de blocul
rdcin i lansat n execuie din cadrul unui bloc ori de cte ori
este nevoie.
n C++ subprogramele se numesc funcii.

Declararea, definirea i apelul subprogramelor


Un subprogram, la fel ca i programul, este format din:
antet i
corpul subprogramului.
subprogram()
{

antet (numele subprogramului/funciei)

corp (descrierea subprogramului/funciei)

Exemplu
int main()
{

Declararea, definirea i apelul subprogramelor


Pentru a executa o funcie, aceasta trebuie apelat.
Apelul unei funcii se face scriind numele funciei, urmat de paranteze
rotunde () i, eventual, de o list de parametri.
Parametri sunt date pe care funcia apelant le transmite funciei apelate.
funcia principal (apelant)

main()
{

f();

f();

subprogram (funcia apelat)


f()
{

Declararea, definirea i apelul subprogramelor


Exemplu
S se calculeze i s se afieze media aritmetic a dou numere reale x
i y. Se va folosi o funcie calcul care citete dou numere reale x i y,
calculeaz media lor aritmetic i afieaz rezultatul obinut.

Declararea, definirea i apelul subprogramelor

instruciunea de apel

Declararea, definirea i apelul subprogramelor

prototipul subprogramului

10

3. Variabile locale i variabile globale


O variabil este vizibil numai n interiorul subprogramului n care aceasta
a fost declarat, ncepnd din momentul declarrii ei.
Variabilele declarate n afara subprogramului sunt vizibile n toate
subprogramele care urmeaz declarrii.
Din acest punct de vedere, variabilele se mpart n dou categorii:
variabile locale (interne) sunt recunoscute din momentul declarrii lor
i sunt vizibile numai n interiorul subprogramului n care au fost declarate;
variabile globale (externe) sunt vizibile n toate subprogramele, din
momentul declarrii lor.

11

Variabile locale i variabile globale


Exemplu 1
S se calculeze i s se afieze media aritmetic a dou numere reale x i
y. Se va folosi o funcie calcul care citete dou numere reale x i y,
calculeaz media lor aritmetic i afieaz rezultatul obinut. Toate
variabilele folosite sunt variabile globale.

12

Variabile locale i variabile globale

variabile globale

13

Variabile locale i variabile globale


Exemplu 2
S se calculeze i s se afieze media aritmetic a dou numere reale x
i y. Se va folosi o funcie calcul care calculeaz media lor aritmetic i
afieaz rezultatul obinut. Valorile variabilelor x i y sunt citite n funcia
apelant.

14

Variabile locale i variabile globale

variabile globale

15

4. Parametri transmii prin valoare


Prin intermediul parametrilor, funcia schimb informaii cu blocul apelant.
Parametri sunt reprezentai att n antetul subprogramului ct i n
instruciunea de apel prezent n blocul apelant.
La fiecare apel al unei funcii, blocul (funcia) apelant poate transmite date
funciei apelate, pe care funcia apelant le va folosi atunci cnd aceasta
este executat. Aceste date se numesc parametri.

16

Parametri transmii prin valoare


Parametrii sunt de dou tipuri:
parametri formali apar n antetul funciei i nu au valoare atunci cnd
sunt definii;
parametri actuali (efectivi) apar n apelul funciei.
Observaie
Parametri actuali trebuie s corespund ca numr, ordine i tip cu
parametri formali.

17

Parametri transmii prin valoare


Exemplu
S se calculeze i s se afieze media aritmetic a dou numere reale x i
y. Se va folosi o funcie calcul care primete ca parametri dou numere
reale x i y, calculeaz media lor aritmetic i afieaz rezultatul obinut.

18

Parametri transmii prin valoare


parametri formali parametri transmii prin valoare

parametri actuali (efectivi)

19

Parametri transmii prin valoare

void calcul(float x, float y)

calcul(

3.0

4.25)

20

5. Parametri transmii prin referin


n cadrul parametrilor transmii prin referin, n lista de parametri formali,
declararea parametrului este precedat de simbolul ampersand (sau
epershand, "&"). n acest caz, blocul apelant transmite blocului apelat
adresa la care este stocat n memorie parametrul actual.
n cazul parametrilor transmii prin referin, parametri formali sunt
parametri de intrare-ieire, deoarece sunt folosii pentru a transmite date
dinspre blocul apelant ctre blocul apelat, dar i invers, la terminarea
execuiei, blocul apelat transmite date ctre blocul apelant.

21

Parametri transmii prin referin


Exemplu
S se calculeze i s se afieze media aritmetic a dou numere reale x i
y. Se va folosi o funcie calcul care primete ca parametri dou numere
reale x i y i care furnizeaz prin al treilea parametru media lor aritmetic.

22

Parametri transmii prin referin

parametri transmii prin valoare

parametru transmis prin referin

23

Parametri transmii prin referin

void calcul(float x, float y, float &z)

calcul(float a, float b, float

c)

24

6. Funcii care returneaz o valoare


Funciile care returneaz o valoare se numesc i funcii operand.
O funcie operand este un subprogram care returneaz un rezultat prin
chiar numele su, i eventual i alte rezultate, prin intermediul parametrilor.
Tipul unei funcii operand este dat de tipul valorii returnate de ctre funcie.

25

Funcii care returneaz o valoare


Exemplu
S se calculeze i s se afieze media aritmetic a dou numere reale x
i y. Se va folosi o funcie calcul care primete ca parametri dou
numere reale x i y i care returneaz media lor aritmetic.

26

Funcii care returneaz o valoare

27

Funcii care returneaz o valoare

float calcul(float x, float y)

ma = calcul(float x, float y)

28

7. Aplicaii
Fi de lucru:
Aplicaii subprograme

29

8. Bibliografie i webografie

1. Miloecsu M., Informatica. Manual pentru clasa a X, Editura Didactic


i Pedagogic, Bucureti, 2005
2. Mateescu G, Moraru P., Informatica. Manual pentru clasa a X, Editura
Donaris, Sibiu, 2006
3. Popescu C., Culegere de probleme de informatic, Editura DonarisInfo, Sibiu, 2002
4. Ministerul Educaiei, Cercetrii i Tineretului, Centrul Naional pentru
Curriculum i Evaluare n nvmntul Preuniversitar, Proba scris la
informatic. Examenul de bacalaureat Variante (1-100) , Bucureti
2008
5. http://www.cplusplus.com/doc/tutorial/functions/
6. http://www.cplusplus.com/doc/tutorial/functions2/
7. http://infoscience.3x.ro/c++/subprograme.htm

30