Sunteți pe pagina 1din 2

Subprograme definite de utilizator

O funcţie permine structurarea unui program în segmente de cod care îndeplinesc anumite funcţionalităţi(ex. Calculează suma cifrelor unui
număr, testeză daca un număr este prim, etc.). În C++, o funţie este un grup de instrucţiuni grupate sub acelaşi nume care pot fi apelate
(eng. call) la un moment dat în timpul execuţiei programului. Cea mai des utilizată sintaxă pentru o funcţie este următoarea:

tip_de_date nume_functie(tip1 parametru1, tip2 parametru2, ...) {instructiuni}

Unde:
 tip_de_date este tipul de date al valorii pe care o va întoarce funţia (ex. int, bool, char, etc.)
 nume_functie este numele prin care identificăm o funţie (ex. este_prim, suma_numere, etc.)
 lista parameterilor fiecare parametru este precedat de un tip de date si primeste un nume (ex. int numar)
 instrucţiuni este corpul funcţiei si este format dintr-un bloc de intrucţiuni delimitat de paranteze accolade.

Exemplu:
#include<iostream.h>

int suma_cifre(int m) {
int suma = 0;
while (m > 0) {
suma += m % 10;
m /= 10;
}
return suma;
}

int main() {
int n;
cin >> n;
cout << suma_cifrelor(n) << ”\n”;
return 0;
}

În prototipul pentru funcţie de mai sus am sugerat că mereu o funcţie va întoarce o valoare. Însă acest lucru NU este adevărat şi de multe ori nu
va fi nevoie ca funţia scrisă de noi să returneze o valoare. În cazul în care funcţia noastra nu va returna o valoare vom folosi ca tip de date void.
În prototipul pentru funcţe de mai sus am sugerat că mereu funcţia va avea parametri. Însă acest lucru NU este adevărat şi de multe ori nu va fi
nevoie ca funcţia scrisă de noi sa primească parametrii. În cazul în care funcţia noastra nu va avea paramentri vom marca acest luctu prin ( ).

Exemplu:

#include<iostream.h>

void PrintHello() {
cout<<”Hello\n”;
}

int main() {
PrintHello();
PrintHello();
return 0;
}

În primul exemplu, a fost dat ca parametru al funcţiei valoarea variabilei n. Adică în interiorul funcţiei este modificată o copie a variabilei n,
ceea ce implică faptul că după apelul funţiei n va avea valoare citita NU valoarea 0. Pentru orice funţie care are antetul un caz particular al celui
de la începutul materialului în interiorul acesteia se vor aplica operaţii asupra unor copii ale variabilelor transmise ca parametru.

În unele cazuri este folositor să avem acces la valorile variabilelor ce au fost transmise ca parametru şi au fost modificate în interiorul funcţiei.
Pentru a face acest lucru numele variabilei trebuie precedata de simbolul &. Atunci când valorile sunt precedate de & ceea ce se transmite ca
parametru nu mai este o copie a variabilei precizate la apelul funcţiei, ci chiar o formă a variabilei respective.

Sursa: http://www.cplusplus.com/doc/tutorial/functions/
Exemplu:

#include<iostream.h> #include<iostream.h>

int suma_cifre(int &m) { int suma_cifre(int m) {


int suma = 0; int suma = 0;
while (m > 0) { while (m > 0) {
suma += m % 10; suma += m % 10;
m /= 10; m /= 10;
} }
return suma; return suma;
} }

int main() { int main() {


int n; int n;
cin >> n; cin >> n;
cout << suma_cifrelor(n) << ”\n”; cout << suma_cifrelor(n) << ”\n”;
cout << n << ”\n”; // n = 0 cout << n << ”\n”;//n are valoare citita
return 0; return 0;
} }

Transmiterea unui vector ca parametru: Atunci cand este transmis un vector ca parametru în interiorul funţiei operaţiile se efectueză asupra
vectorului transmis ca parametru, NU asupra unei copii.

void citeste(int &n, int a[]);


void citeste(int &n, int a[100]);

Transmiterea unei matrici ca parametru: Atunci cand este transmisă o matrice ca parametru în interiorul funţiei operaţiile se efectueză asupra
matricei transmise ca parametru, NU asupra unei copii.
ATENŢIE: Atunci când transmitem ca parametru o matrice numărul de coloane trebuie specificat.

void citeste(int &n, int m, int a[][100]);


void citeste(int &n, int m, int a[100][100]);

Probleme:
1. Se citeşte de la tastatură un numar natural n. Să se găsească şi să se afişeze pe ecran două numere prime p şi q astfel încat p<n<q.
2. Campion: tablou
3. Campion: binremove
4. Campion: submat
5. Campion: 235
6. Infoarena: semne3
7. Infoarena: maxd

Sursa: http://www.cplusplus.com/doc/tutorial/functions/

S-ar putea să vă placă și