Funcțiile returnează o valoare de un anumit tip (int, float, char etc.). Procedurile sunt implementate ca funcții void și nu returnează nicio valoare, ci doar execută operații.
Parametrii formali sunt declarați în definiția subprogramului. Parametrii actuali sunt transmiși la apelul subprogramului.
Transmiterea prin valoare copiază valoarea parametrului, iar modificările nu afectează variabila originală. Transmiterea prin referință transmite adresa variabilei, permițând modificarea directă a acesteia. La nivel de liceu, în C++ se preferă varianta cu referințe (&).
Recursivitatea este tehnica prin care un subprogram se autoapelează, direct sau indirect. O funcție recursivă trebuie să aibă o condiție de oprire (caz de bază) pentru a evita apelurile infinite.
Exemplul 1: Funcție pentru calculul factorialului
int factorial(int n) { int p=1; for(int i=2;i<=n;i++) p*=i; return p; }int factorial(int n) { if(n==0) return 1; else return n*factorial(n-1); }cout<<factorial(5); // 120Exemplul 2: Procedură pentru afișarea elementelor pare dintr-un vector
void afisarePare(int v[], int n) { for(int i=0;i<n;i++) if(v[i]%2==0) cout<<v[i]<<' '; }int a[]={1,2,3,4}; afisarePare(a,4); // afișează 2 4Exemplul 3: Funcție recursivă pentru suma cifrelor
int sumaCifre(int n) { if(n==0) return 0; else return n%10 + sumaCifre(n/10); }cout<<sumaCifre(123); // 1+2+3=6Subprogramele sunt esențiale pentru rezolvarea problemelor de algoritmică, cum ar fi: calculul factorialului, generarea numerelor prime, căutarea în vectori, sortarea, suma elementelor unui vector, determinarea maximului dintr-un șir, calculul combinărilor sau algoritmi de tip divide et impera (de exemplu, căutarea binară).
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.