InformaticăliceuClasa 9usor
Subprograme în C++ - Funcții și Proceduri
Declarare funcții, parametri, transmitere prin valoare/referință, recursivitate și funcții inline.
3 luni în urmă
0 vizualizări
25 minute
Subprograme în C++
Structura unei Funcții
1tip_returnat nume_functie(parametri) { 2 // Corpul funcției 3 return valoare; // Dacă tip_returnat != void 4}
Exemple
1#include <iostream> 2using namespace std; 3 4// Funcție care returnează o valoare 5int suma(int a, int b) { 6 return a + b; 7} 8 9// Funcție void (procedură) 10void afiseaza(int x) { 11 cout << "Valoarea este: " << x << endl; 12} 13 14// Funcție cu valoare implicită 15int putere(int baza, int exp = 2) { 16 int rez = 1; 17 for (int i = 0; i < exp; i++) 18 rez *= baza; 19 return rez; 20} 21 22int main() { 23 cout << suma(3, 4) << endl; // 7 24 afiseaza(10); // Valoarea este: 10 25 cout << putere(3) << endl; // 9 (3^2) 26 cout << putere(3, 3) << endl; // 27 (3^3) 27 return 0; 28}
Transmitere Parametri
Prin Valoare (Copie)
1void incrementeaza(int x) { 2 x++; // Modifică doar copia locală 3} 4 5int main() { 6 int a = 5; 7 incrementeaza(a); 8 cout << a << endl; // 5 (neschimbat) 9}
Prin Referință
1void incrementeaza(int& x) { 2 x++; // Modifică variabila originală 3} 4 5int main() { 6 int a = 5; 7 incrementeaza(a); 8 cout << a << endl; // 6 (modificat) 9}
Prin Pointer
1void incrementeaza(int* x) { 2 (*x)++; // Modifică valoarea de la adresă 3} 4 5int main() { 6 int a = 5; 7 incrementeaza(&a); 8 cout << a << endl; // 6 9}
Vectori ca Parametri
1// Vectori statici - transmise prin referință automat 2void afisare(int arr[], int n) { 3 for (int i = 0; i < n; i++) 4 cout << arr[i] << " "; 5} 6 7// Cu std::vector - prin referință pentru eficiență 8void sorteaza(vector<int>& v) { 9 sort(v.begin(), v.end()); 10} 11 12// Doar citire - const referință 13int suma(const vector<int>& v) { 14 int s = 0; 15 for (int x : v) s += x; 16 return s; 17}
Funcții Inline
1inline int max(int a, int b) { 2 return (a > b) ? a : b; 3} 4// Compilatorul înlocuiește apelul cu codul funcției
Supraîncărcare (Overloading)
1int suma(int a, int b) { 2 return a + b; 3} 4 5double suma(double a, double b) { 6 return a + b; 7} 8 9int suma(int a, int b, int c) { 10 return a + b + c; 11} 12 13int main() { 14 cout << suma(2, 3) << endl; // 5 (int) 15 cout << suma(2.5, 3.5) << endl; // 6.0 (double) 16 cout << suma(1, 2, 3) << endl; // 6 (3 parametri) 17}
Funcții Recursive
1int factorial(int n) { 2 if (n <= 1) return 1; 3 return n * factorial(n - 1); 4}
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
