Subprograme

Ce este un subprogram?

Un supgrogram este un ansamblu de tipuri de date, variabile locale si instrucţiuni, grupate sub un nume comun.
Subprogramul poate fi executat doar dacă este apelat. El poate fi apelat din programul principal, dintr-un alt subprogram sau chiar se poate autoapela (situatie intalnita la subprogramele recursive)

Orice program poate fi descompus in subprograme. Proiectarea unui program folosind subprograme se regaseste in literatura de specialitate sub numele de proiectare Top-Down.

In C++ subprogramele se numesc functii. Ele pot fi de doua feluri:
  • functii cu tip - care returneaza o singura valoare in programul apelant (tipul valorii returnate da tipul functiei)
  • functii fara tip - care furnizeaza prin unul sau mai multi parametri de iesire valori modificate sau care executa ceva (de exemplu afisare) fara sa furnizeze nimic in programul apelant.

Avantajele subprogramelor

  • evitarea scrierii repetate a unei secvente de instrucţiuni (functia se scrie o singura data si se poate apela in mod repetat);
  • reutilizarea codului (un subprogram poate fi utilizat de mai multe subprograme in cadrul aceluiasi program sau chiar in programe diferite);
  • rezolvarea unei probleme, prin descompunerea ei in probleme mai simple;
  • un program poate fi mai usor modificat la nivelul subprogramului;
  • reducerea numarului de erori care pot aparea la scrierea programelor si despistarea cu usurinta a acestora in cadrul subprogramelor;
  • urmarirea algoritmilor devine mai simpla si mai usor de inteles;
  • favorizeaza lucrul in echipa, prin faptul ca un program poate fi descompus in mai multe subprograme care pot fi concepute de mai multi programatori;

Alcatuire:
a) Antetul Subprogramului
b) Corpul Subprogramului
-> Partea Declarativa
-> Partea Executiva

Clasificarea subprogramelor:
În funcţie de:
1) modalitatea de apel
subprograme apelate ca:
a) instructiuni – subprograme de tip procedură
b) operanzi – subprograme de tip funcţie

2) autorul subprogramului
a) Subprograme de sistem (predefinite)
b) Subprograme utilizator