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:
[Link] autor
-functii system (sqrt, pow)
-functii utilizator (create de catre utilizator)
[Link] 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;
}