Sunteți pe pagina 1din 3

SUBPROGRAME

Un subprogram este o colecție de tipuri de date, variabile, instrucțiuni care îndeplinesc o


anumită sarcină (calcule, citiri, afișări), atunci când este apelat de un program sau de un alt
subprogram.

Pentru a înțelege conceptul de subprogram, să considerăm două probleme:

Problema 1: Se dau două numere naturale n și m. Să se determine suma dintre oglinditul lui n și
oglinditul lui m.

Până acum, pentru a rezolva această problemă, trebuia să determinăm, folosind două secvențe de
program aproape identice, oglinditele celor două numere, iar apoi să facem suma. O soluție mai
simplă este să construim un subprogram care determină oglinditul unui număr natural oarecare,
să-l apelăm de două ori pentru a determina oglinditul lui n și al lui m, apoi să facem suma
rezultatelor.

#include <iostream>
using namespace std;

int oglindit(int x)
{
int inv=0;
while(x)
{
inv=inv*10+x%10;
x=x/10;
}
return inv;
}
int main()
{
int n,m;
cin>>n>>m;
cout<<oglindit(n)+oglindit(m);
return 0;
}

Avantaje:
 reutilizarea codului – după ce am scris un subprogram îl pute apela de oricâte ori este nevoie;

 modularizarea programelor – subprogramele ne permit să împărțim problema dată în mai multe


subprobleme, mai simple;

 reducerea numărului de erori care pot să apară în scrierea unui program

 depistarea cu ușurință a erorilor


Clasificare:
1.Dupa autor
-functii system (sqrt, pow)
-functii utilizator (create de catre utilizator)
2.Dupa modul de apel
-functii procedurale ( nu returneaza niciun rez sau returneaza un rez sau mai multe dar prin parametri)
-functii operand (returneaza un rezultat prin numele functiei) se folosesc ca operanzi in expresii.

Structura unei functii:

Antet

Apel

Prototip

#include <iostream>
using namespace std;

void citire(int & n, int x[])


{
cin >> n;
for(int i = 0 ; i < n ; ++ i)
cin >> x[i];
}

void sortare(int n, int x[])


{
bool sortat = false;
while(! sortat)
{
sortat = true;
for(int i = 0 ; i < n - 1 ; i++)
if(x[i] > x[i+1])
{
int aux = x[i];
x[i] = x[i+1];
x[i+1] = aux;
sortat = false;
}
}
}

void afisare(int n, int x[])


{
for(int i = 0 ; i < n ; ++ i)
cout << x[i] << " ";
}

int main(){
int k, v[1005];
citire(k , v);
sortare(k , v);
afisare(k , v);
return 0;
}

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