Sunteți pe pagina 1din 3

Subprograme

In limbajul C/C++, subprogramele se numesc functii si sunt utilizate atunci cand este necesara
descompunearea problemei initiale in probleme mai mici ce pot fi rezolvate independent. Toate
prelucrarile sunt organizateca o ierarhie de apeluri de functii, la baza acestei ierarhii stand functia
main.
Problema: Sa se afiseze toate numerele dintr-un vector care sunt numere prime si care citite
invers sunt tot numere prime.

Vom scrie o functie care sa determine daca un numar este prim si o functie care sa calculeze
inversul unui numar. Functia de numar prim o vom apela de doua ori, iar pe cea de invers o singura
data.

Definirea functiilor
O functie este constituita dintr-un antet ce contine tipul rezultatului returnat de funtie,
numele functiei si lista parametrilor formali si, pe langa antet, un bloc deinstructiuni scris intre
acolade ce contine prelucrarile/operatiile efectuate de functie.
Forma generala a unei functii
tip nume(lista parametri formali)
{
Instructiuni;
}
Observatie:
Tipul functiei trebuie sa fie un tip standard, simplu sau void. Numele functiei trebuie sa fie
indentificator si lista parametrilor formali poate sa contina declaratii de variabile, specificandu-se
pentru fiecare variabila tipul si separandu-se prin virgula sau poate lipsi.
Tipuri de variabile (in functie de locul in care au fost declarate):
- Variabile globale: se declara in exteriorul oricarei functii si sunt vizibile in tot programul
- Variabile locale: se declara in interiorul unei functii si sunt vizibile doar in functioa in care
au fost declarate


Functiile de tip void sunt functii care nu returneaza nicio valoare prin numele functiei,
rezultatele pot fi afisate in interiorul functiei sau pot fi transmise prin parametri.
Exemplu: Sa se scrie o functie care sa calculeze si sa afiseze suma a 2 numere intregi a si b.
#include<iostream>
using namespace std;
void suma(int a,int b)
{
cout<<a+b;
}
int main()
{
int a,b;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
suma(a,b);
return 0;
}
O functie de tip void se apeleaza ca o instructiune de sine statatoare prin numele functiei
urmat de lista parametrilor efectivi.
Parametrii formali apar in antetul functiei si sunt variabile vizibile doar in interiorul functiei,
iar parametrii efectivi sau actuali apar la apelul functiei si pot fi variabile sau constante din functia
apelanta.
Observatie: Trebuie sa existe corespondenta intre parametrii formali si parametrii efectivi
respectand numarul, tipul si ordinea lor.
Se da un vector cu n elemente numere intregi si se cere sa se afiseze numerele prime. Se va
folosi o functie care verifica daca un numar primit ca parametru este prim si in ca afirmativ il afiseaza.

#include<iostream>
using namespace std;
int x[100],n;
void prim(int x)
{
int d=2;
while(x%d!=0&&d<x/2)
d++;
if(d>=x/2)
cout<<x<<" ";
}
int main()
{
int i,d;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<"x["<<i<<"]=";cin>>x[i];}
for(i=1;i<=n;i++)
prim(x[i]);
return 0;
}