Teorie subprograme C++

Subprogramele reprezinta functii definite de catre utilizator. Ele sunt identificate prin nume si pot fi apelate in interoriul unui program.

Un subprogram (o functie) are forma urmatoare:

Subprogramele se scriu inainte de functia “int main()”.

Spre exemplu, in problema de mai jos, (pe care o puteti gasi si aici), avem un subprogram cu numele “cifreImpare” (intre liniile 4 si 19). Acesta are doar un parametru formal – n, de tipul int.

Antetul acestui subprogram este “int cifreImpare(int n)”.

Putem observa de asemenea cum acesta este apelat in interiorul functiei int main() (linia 24). Astfel, variabila n citita la linia 23, este prelucrata de catre subprogramul cifreImpare.

In cazul subprogramelor trebuie sa facem distinctie intre variabilele locale si variabilele globale din programul pe care il cream.

Variabilele globale sunt variabile ce pot fi utilizate in interiorul oricarei functii din program. Variabilele globale se declara la inceputul programului inainte de declararea oricarei functii. Concret, in cazul nostru, variabila globala n declarata la linia 3, poate fi utilizata si in functia cifreImpare precum si in functia main.

Variabilele locale sunt variabile ce pot fi utilizate doar in interiorul unei anumite functii. Variabilele locale se declare in interiorul unei functii. Concret, in cazul nostru, regasim variabilele locale la linia 6, ele putand fi utilizate doar in functia cifreImpare. 

Ar fi ineficient din punct de vedere al memoriei folosite de catre program daca variabilele locale folosite doar in functia cifreImpare ar fi declarate ca variabile globale.

Exista 2 tipuri de apel al subprogramelor:

1. Apel prin valoare = se transmite o copie a parametrului. Astfel, in urma parcurgerii intructiunilor din subprogram valoarea parametrului nu a fost schimbata intrucat se prelucreaza o copie a sa.

2. Apel prin referinta = se transmite adresa parametrului. Astfel, in urma parcurgerii instructiunilor din subprogram, valoarea parametrului se schimba intrucat se efectueaza prelucrari direct asupra sa.

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

6 Comments

    1. Buna, Alina! Daca un parametru e transmis prin referinta, orice modificare adusa lui, va putea fi vazuta si in exteriorul functiei. Daca e transmis prin valoare, acesta va ramane la fel, la iesirea din functie. Exemplu : Daca avem functia void f(int &a) { a = a + 2; } si o apelam cu int a = 2; f(a); valoarea lui a la sfarsit va fi 4. Daca avem functia void f(int a) {
      a = a + 2; } valoarea lui a va ramane 2. Ai avea nevoie de referinta cand vrei sa faci modificari asupra parametrilor, care sa fie vazute in programul principal.




      12

      Reply

Leave a Reply to Alina Cancel reply

Your email address will not be published. Required fields are marked *