Sunteți pe pagina 1din 3

TRANSFERUL PARAMETRILOR LA APEL

(PRIN VALOARE SI PRIN REFERINTA)


Transferul
parametrilor

Este o tehnica folosita pentru schimbul de date intre module.

Transfer
prin valoare

Parametrii se pot modifica in corpul functiilor, dar dupa terminarea apelului functiei
au aceeasi valoare pe care au avut-o inainte de apel. Acest transfer se foloseste in
general numai pentru parametrii de intrare.
#include <iostream.h>
using namespace std;
void schimb(int x,int y)
{int aux;
aux=x;
x=y;
y=aux;
cout<<x<<" "<<y;
cout<<endl;
}
int main()
{int a,b;
a=1;b=2;
schimb(a,b);
cout<<a<<" "<<b;
}
21
12

Obs.:

#include<iostream.h>
using namespace std;
void schimb(int *x,int *y)
{int aux;
aux=*x;
*x=*y;
*y=aux;
cout<<*x<<" "<<*y;
cout<<endl;
}
int main()
{int a,b;
a=1;b=2;
schimb(&a,&b);
cout<<a<<" "<<b;
}
21
12

In cazul in care parametrii transmisi prin valoare sunt param. de iesire sau de
intrare-iesire, pentru a putea transmite rezultatul obtinut in subprogram catre
modulul apelant se vor folosi variabile de tip pointer.

Transfer prin
referinta

Parametrii sunt precedati de & si transmit rezultate inafara functiei. Acesti param. se
modifica in corpul functriei si la terminarea apelului functiei au valoarea pe care au
primit-o in timpul apelului functiei.
#include<iostream.h>
void schimb(int &x,int &y)
{int aux;
aux=x;
x=y;
y=aux;
cout<<x<<" "<<y;
cout<<endl;
}
void main()
{int a,b;
a=1;b=2;
schimb(a,b);
cout<<a<<" "<<b;
}

&

21
21

= operatorul de adresa de memorie.


Acest transfer se recomanda pentru param. de intrare-iesire sau param. de iesire.

Obs.:

Pentru transmiterea unor rezultate din subprograme catre modulul apelant ()parametru de
iesire) se foloseste fie transferul prin referinta, fie transferul prin valoare, folosind variabile
de tip pointer.
PARAMETRII FORMALI SI PARAMETRII ACTUALI

Parametrii formali
Parametrii actuali

Sunt param. din antet.


Sunt param. folositi in momentul activarii subprogramului. Atribuirea valorilor se face
respectand regula de corespondenta.
(Se respecta ordinea, tipurile de date si numarul parametrilor).

Obs.:

Numele param. actuali pot fi diferite de numele param. formali.


SUBPROGRAME CARE NU INTORC O VALOARE PRIN NUMELE LOR (de tip void)

Intorc

Se mai numesc si functii procedurale.


una, mai multe sau nicio valoare. Rezultatele se intorc prin intermediul parametrilor.

Ex.de fc. predefinite

clrscr(); getch();randomize();
void <nume_functie>[<lista_parametrilor_formali>]
instructiune compusa
SUBPROGRAME CARE INTORC UN REZULTAT PRIN NUMELE LOR

Returneaza

Se mai numesc si functii operand.


un rezultat prin chiar numele sau, si eventual alte rezultate prin intermediul parametrilor.
<tip rezultat> <nume_functie>[<lista_parametrilor_formali>]
instructiune compusa

Obs.:

Ex.de fc. predefinite:


Obs.:

Corpul subprogramului trebuie sa contrina instructiunea return.


return <expresie>;
Valoarea obtinuta prin evaluarea expresiei va fi atribuita functiei.
La intalnirea instructiunii return se reda controlul modulului apelant =>orice alte
instructiuni scrise dupa instructiunea return nu vor fi executate.
sqrt(x);floor(x);abs(x);
Pentru functiile predefinite se introduc bibliotecile limbajului.
VARIABILE LOCALE SI GLOBALE

VARIABILE
LOCALE

Sunt variabile definite in corpul unui subprogram. Compilatorul le creeaza si le distruge


automat, atunci cand incepe executia programului, respectiv cand se termina executia lui.

VARIABILE
GLOBALE

In timpul executiei programului sunt pastrate temporar pe stiva.


La fiecare noua apelare a subprogramului , vor avea o valoare nedefinita.De aceea trebuie
intotdeauna initializate.
Variabilele definite in interiorul functiei radacina main sunt tot variabile locale(definite in
interiorul unui bloc).
Durata lor de viata este locala (pe perioada executiei blocului).
Parametrii formali ai unui subprogram sunt variabile locale.
Sunt variabile definite inafara oricarui subprogram
Sunt vizibile in toate subprogramele care sunt declarate dupa definirea lor.oricare dintre
subprograme poate folosi si modifica valoarea lor.
Folosirea lor este utila atunci cand unele date se folosesc in comun de catre modulele unui
program care nu se apeleaza unele pe altele
Durata lor de viata este statica (pe toata perioada executiei programului din momentul
declararii pana la terminarea executiei programului).
La declarare, variabilele globale sunt initializate cu valoarea 0.

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