Informatiile acestui spatiu sunt gratuite. Observatii si sugestii pot fi trimise pe adresa de contact sau pe forum.

     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:

  1. 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;
  2. lista de parametri formali este optionala, putand exista functii in care acestia sa nu existe
  3. cand exista mai multe functii care se apeleaza reciproc, se foloseste prototipul functiilor (vezi conceptele functiilor prezentate in capitolul anterior;
  4. 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