f
Bazele programării
Subprograme si functii
Functii, proceduri, parametri, transmitere prin valoare si referinta in C++.
Ce este un subprogram
Un subprogram este o secvență de instrucțiuni cu nume propriu, apelabilă din orice punct al programului. Reduce duplicarea codului și crește lizibilitatea.
Tipuri:
- Funcție — returnează o valoare (
return) - Procedură — nu returnează valoare (tip
void)
Funcții în C++
tip_returnat numeFunctie(parametri) {
// corp
return valoare;
}
Exemplu — cmmdc:
int cmmdc(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int main() {
cout << cmmdc(12, 8); // 4
}
Proceduri (void)
void afiseaza(int n) {
cout << "Valoarea este: " << n << "\n";
}
Parametri: valoare vs. referinta
Prin valoare — funcția primește o copie; originalul nu se modifică:
void dublare(int x) {
x = x * 2; // nu afectează variabila din main
}
Prin referinta (&) — funcția lucrează direct cu variabila originală:
void dublare(int &x) {
x = x * 2; // modifică variabila din main
}
Folosește referinta când vrei să modifici variabila sau să transmiți tablouri mari eficient.
Variabile locale vs. globale
int global = 10; // vizibil în tot programul
void functie() {
int local = 5; // vizibil doar în această funcție
}
Prototip de funcție
Dacă funcția e definită după main, trebuie declarată înainte:
int cmmdc(int a, int b); // prototip
int main() {
cout << cmmdc(12, 8);
}
int cmmdc(int a, int b) {
// definitia
}
Exemplu complet: verificare număr prim
bool estePrim(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) return false;
return true;
}
int main() {
int n;
cin >> n;
if (estePrim(n)) cout << "prim";
else cout << "nu e prim";
}
La examen
- Tablourile se transmit implicit prin referinta (fără
&) - Funcțiile pot apela alte funcții (inclusiv pe ele însele — recursivitate)
- Dacă subiectul cere să „scrieți o funcție care…”, respectă exact signatura cerută (tip, nume, parametri)