Documente Academic
Documente Profesional
Documente Cultură
#include <iostream>
O funcţie procedurală (fără tip)
using namespace std; poate fi apelată de sine stătător
void suma (int n) (prin nume şi lista parametrilor
{ int i, s=0; efectivi)
for(i=1; i<=n; i++)
s=s+i;
cout<<s;
În absenţa instrucţiunii return,
} execuţia funcţiei se încheie
int main() după execuţia ultimei
{ int n; instrucţiuni. În acest caz nu se
cout<<”n=”; cin>>n; întoarce nicio valoare.
suma(n); //apel
return 0;
}
Modalitatea de execuție a unui
program care conține funcții
#include <iostream>
În momentul în care se întâlneşte
using namespace std;
un apel de funcţie, controlul execuţiei
programul este transferat primei instrucţiuni int cmmdc(int x, int y)
din funcția apelată, urmând a se executa { while(x!=y)
secvenţial instrucţiunile acesteia. if(x>y) x=x-y;
Revenirea dintr-o funcţie se face în unul din else y=y-x;
următoarele cazuri: return x;
după execuţia ultimei instrucţiuni din }
corpul funcţiei;
la întâlnirea unei instrucţiuni return; int main()
{ int a,b;
La revenirea din funcţia apelată, controlul este
cin>>a>>b;
redat funcţiei apelante, şi execuţia continuă cu cout<<cmmdc(a,b);
instrucţiunea următoare instrucţiunii de apel, }
din funcţia apelantă.
Problema 1 Se dau două numere naturale n și m. Să se determine suma dintre
oglinditul lui n și oglinditul lui m.
#include <iostream> funcția are antetul int oglindit (int x) din care deducem
using namespace std; numele funcției, parametrul și tipul rezultatului întors;
int oglindit(int x) funcția are un bloc de instrucțiuni, corpul funcției,
{ delimitat de acolade { }, care precizează operațiile prin
int r=0; care se obține rezultatul.
while(x!=0) corpul funcției are propriile variabile (aici r) care se
{ numesc variabile locale;
r=10 * r + x % 10; în corpul funcției, parametrul se comportă ca o variabilă
x=x/10; locală. NU putem avea o variabilă locală cu același
} identificator ca parametrul;
return r; în corpul funcției nu se cunosc valorile parametrilor
} formali. Funcția trebuie să determine rezultatul corect
indiferent de valoarea lor;
int main(){ rezultatul determinat în cadrul funcției este întors în
int n,m; programul apelant prin instrucțiunea return r;
cin>>n>>m; în funcția main găsim apelul funcției oglindit, apelul
cout<<oglindit(n)+oglindit(m); funcției se face într-o expresie:
return 0; cout << oglindit(n)+oglindit(m);.
} parametrii n, m, întâlniți în apel, se numesc parametri
efectivi. Valorile parametrilor actuali sunt cunoscute;
Problema 2 Se dă n număr natural. Să se determine dacă cifra maximă a
numărului n este pară sau nu.
#include <iostream>
using namespace std;
int cmax(int a)
{
int maxi=0; int main()
while(a!=0) {
{ int n;
if(a%10>maxi) cin>>n;
maxi=a%10; int b=cmax(n);
a=a/10; cout<<paritate(b);
} return 0;
return maxi; }
}
int paritate(int p)
{
if(p%2==0) p=1;
else p=0;
return p;
}