Apelul prin valoare al functiilor
Forma generala:
tip_functie nume_functie(tip_var_1 var_1, ... , tip_var_n var_n)
{
instructiune 1;
...
instructiune n;
return nume_var_ret;
}
unde:
- tip_functie - reprezinta tipul functiei
- nume_functie - reprezinta identificatorul cu ajutorul caruia functia va fi apelata pe parcursul programului
-
lista de parametri formali:
- tip_var_1...tip_var_n - reprezinta tipul variabilelor/parametrilor formali
- var_1...var_n - reprezinta parametrii formali ai functiei
- intre acolade se trece corpul functiei - setul de instructiuni ce va prelucra parametrii formali in scopul returnarii unui rezultat.
- nume_var_ret - reprezinta valoarea retunata de catre functie programului/functiei apelante (functia main sau alta functie care o poate apela.
Exemplu:
int suma (int x, int y)
{
int rez=x+y;
return rez;
}
Explicatii:
- int - tipul functiei: valoarea pe care functia o va returna programului/functiei apelante va fi de tip int;
- suma - numele functiei;
- int x, int y - lista de parametri formali ai functiei suma: doua variabile (x, y) de tip int;
- int rez - declararea unei variabile locale functiei suma, in care se va stoca direct suma dintre valorile variabilelor x si y;
- return rez - comanda prin care functia suma intoarce programului/functiei apelante valoarea calculata anterior in variabila rez.
Observatii:
- tipul functiei poate sa fie void - in acest caz, functia nu va returna nici o valoare programului/functiei apelante (nu va mai fi nevoie de intructiunea return;
- lista de parametri formali este optionala, putand exista functii in care acestia sa nu existe
- cand exista mai multe functii care se apeleaza reciproc, se foloseste prototipul functiilor (vezi conceptele functiilor
prezentate in capitolul anterior;
- asa cum am mai explicat si aici, parametrii formali ai functiei: int suma(int x, int y) reprezinta niste copii/aliasuri
ale parametrilor efectivi din apelul functiei: suma(a,b)
- int suma(int x, int y) ==> declaratia functiei ==> parametri formali: x si y;
- suma(a,b) ==> apelul functiei ==> parametri efectivi: a si b;
Exemplul 1: Sa se calculeze suma a doua numere citite de la tastatura.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#include <iostream>
using namespace std;
int a, b, s;
int suma (int x, int y)
{
int rez=x+y;
return rez;
}
int main()
{
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"Suma numerelor "<<a<<" si "<<b<<" este: "<<suma(a,b);
}
|
|
|
a=2
b=3
Suma numerelor 2 si 3 este: 5
|
Exemplul 2: Sa se calculeze suma a doua numere citite de la tastatura (folosindu-se o functie void).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include <iostream>
using namespace std;
int a, b, s;
void suma (int x, int y)
{
int rez=x+y;
cout<<rez;
}
int main()
{
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"Suma numerelor "<<a<<" si "<<b<<" este: ";
suma(a,b);
}
|
|
|
a=2
b=3
Suma numerelor 2 si 3 este: 5
|
Exemplul 3: Sa se calculeze suma a doua numere citite de la tastatura (folosindu-se o functie void fara parametri).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include <iostream>
using namespace std;
void suma ()
{
int a, b, s;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
s=a+b;
cout<<"Suma numerelor "<<a<<" si "<<b<<" este: "<<s;
}
int main()
{
suma();
}
|
|
|
a=2
b=3
Suma numerelor 2 si 3 este: 5
|