Sunteți pe pagina 1din 15

Subprograme

PROIECT REALIZAT DE ANTONESCU


VICTOR-GABRIEL
Cuprins

1. Definitie 9. Tutorial despre functiile template

2. Avantaje 10. Bibliografie


3. Clasificare

4. Structura unui program c++

5. Variabile locale si globale

6. Apelul functiilor

7. Subprograme recursive

8.Exemple de aplicatii cu subprograme


Definitie
Notiunea de subprogram

Un subprogram (functie) reprezinta un ansamblu de instructiuni (de declarare, executabile) scrise in vederea executarii
unei anumite prelucrari, ansamblu identificat printr-un nume si implementat separat (in exteriorul oricarei alte functii).

Subprogramele sunt unitati de program care:

Au un algoritm propriu

Pot fi proiectate independent

Pot fi scrise independent

Pot fi compilate independent

Nu se pot executa independent ci numai in cadrul unui apel


Definitie
Un program scris in limbajul C/C++ este un ansamblu de functii, fiecare dintre acestea efectuand o
activitate bine definite. Doar una dintre aceste functii este radacina sau functie principala – adica nu
poate lipsi si executarea programului incepe automat cu ea. Aceasta se numeste main.
Avantajele utilizarii subprogramelor
•Elaborarea algoritmilor prin descompunerea problemei ce trebuie a fi rezolvata in mai multe
probleme mai simple – in acest caz vom rezolva probleme mai simple

•Modularizarea problemei (descompunerea in subprobleme)

•Reutilizarea codului – subprogramul odata scris poate fi utilizat si in alte programe

•Reducerea numarului de erori care apar in scrierea programului

•Depistarea si corectarea cu usurinta a erorilor

•Realizarea unor programe usor de urmarit.


Clasificarea subprogramelor
Subprograme standard()subprogram de system) – Utilizarea lor presupune includerea fisierului ce
contine prototipul droit (ex: #include<cmath>)

Subprograme definite de utilizator – sunt scrise de programator pentru rezolvarea unor cerinte specifice.
Utilizarea lor presupune precizarea prototipului, definirea si apelul.

Subprograme apelate ca instructiuni procedurale – Returneaza (sau nu) o valoare prin intermediul
parametrilor, Apelul se face prin nume si parametrii (ex: clrscr(), gotoxy(),etc)

Subprograme apelate ca operanzi – Returneaza un rezultat chiar prin numele sau si eventual alte rezultate
prin parametrii. Apelul se face in interiorul unei expresii (ex: cout<<sqrt(16), x=pow(3,2),etc)
Structura unui subprogram C++
Declararea si definirea unei functii

Definirea dupa functia radacina “main” – caz in care functia Definirea inainte de functia radacina “main” - caz in care declararea prin
e declarata prin prototipul sau prototipul sau poate lipsi

#include <iostream> #include <iostream>


Using namespace std; Using namespace std;
Int main()
{ Void mesaj()
{
Mesaj(); Cout<<“Subprogram”;l
Return 0; }
} Int main()
Void mesaj() {
{ Mesaj();
Cout<<“Subprogram”; Return 0;
} }
Componente

Componente de preprocesare

Prototipul subprogramului

Apelul subprogramului
Variabile globale si locale
Dupa cum stim, in C++ variabilele despre care am invatat pana acum trebuie declarate si odata cu declararea lor se aloca in memorie
spatiu in conformitate cu tipul lor. Intrebarea este:

“Unde putem declara variabile si prin ce difera acestea?”.

Sistemul de operare aloca fiecarui program trei zone distincte in memoria interna in care se gasesc memorate variabilele programului.

Segment de date / zona statica


Segment stiva / zona stiva
Zona heap
Caracterizarea variabilelor
1. Clasa de memorare 2. Vizibilitate
Precizeaza locul unde este memorata variabila Precizeaza liniile textului sursa din care variabila
respective. O variabila poate fi memorata in respective poate fi accesata. Astfel avem:
segmental de date, in cel de stiva, in heap sau • La nivel de bloc
intr-un registru al microprocesorului. • La nivel de fisier
• La nivel de clasa

3. Durata de viata 4. Tipul variabilei


Reprezinta timpul in care variabila respective a • Variabile locale
realocat spatial in memoria interna. Astfel avem: • Variabile globale
• Durata statica
• Durata locala
• Durata dinamica
Variabile globale si variabilele
locale

“a” este variabila globala(este vizibila pe tot


parcursul programului

“b” este variabila locala (este vizibila doar in


blocul de program curent)

“c” este variabila locala(este vizibila doar in


functia “mesaj()”)
Recomandari variabile locale si
globale
Atentie, variabilele globale pot fi modificate in interiorul subprogramelor. Se va
acorda atentie mare prelucrarii acestora.

Utilizarea variabilelor globale sa fie limitata deoarece creeaza dependente intre


subprogram.

Utilizarea variabilelor locale asigura portabilitatea programlor.

Utilizarea constantelor globale permit modificarea la nevoie intr-un singur loc a unei
valori ce afecteaza intregul program (si toate subprogramele sale).
Functii recursive
In momentul apelarii unui subprogram (functie), sistemul pune la dispozitie subprogramului un segment de stiva pentru memorarea
parametrilor constanti, a adreselor parametrilor variabili (transmisi prin referinta) si a variabilelor locale.

Pana in acest moment am invatat sa apelam doar functii nerecursive, pentru care se faceau un singur nivel pe stiva. Ce se intampla insa, cand
functia se autoapeleaza? Raspunsul este simplu, se intampla acelasi lucru la fiecare reapel al functiei, cu alte cuvinte, la fiecare reapel se
memoreaza adresa instructiunii urmatoarea a apelului : se creaza un nou nivel pe stiva, memorandu-se parametrii si variabilele locale cu
valorile din acel moment.
Exemplu de aplicatie cu
subprograme

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