Sunteți pe pagina 1din 5

Subprograme Pascal

Deseori în practica programării se întîlnesc situaţii de îndeplinire repetată a unor secvenţe de program
aplicate pe seturi diferite de date. Pentru a evita aceste repetări şi în scopul organizării mai compacte a programului,
în Pascal există posibilitatea de a separa aceste secvenţe de program intr-un bloc autonom în cadrul aceluiaşi
program sub un anumit nume. Aşa set de instrucţiuni, ce realizează un anumit algoritm, se numeşte subprogram.
Subprogramele pot fi:
-functie- returneaza intotdeauna o singura valoare;
-proceduri-pot returna zero, una sau mai multe valori;
Functiile si procedurile pot fi standard(existente deja in limbajul pascal) si definite de utilizator.
Functii standard: int, trunc, sqr, sqrt, abs, chr, ord, pred, succ;
Proceduri standard: read, readln, write, writeln, val, str, inc, dec;
• Dacă grupăm instrucţiunile într-un subprogram, trebuie să comandăm execuţia secvenţei respective. Vom spune că
apelăm subprogramul.
• Blocul de program din interiorul căruia se apelează un subprogram, poartă numele de modul apelant. Acesta poate
fi programul principal sau chiar un alt subprogram. Aşadar subprogramele se pot apela unul pe altul.
• La fiecare apel al unui subprogram, modulul apelant poate transmite acestuia nişte date, pe care
subprogramul le va folosi atunci când se execută.
Aceste date se numesc parametri.
La fiecare execuţie a sa, în urma unui apel, subprogramul poate să lucreze cu alte date, pe care le-a recepţionat sub forma
unor parametri. Există şi subprograme fără parametri, care operează direct asupra variabilelor programului.
• Dacă grupăm instrucţiunile într-un subprogram, trebuie să comandăm execuţia secvenţei respective. Vom spune că
apelăm subprogramul.
• Blocul de program din interiorul căruia se apelează un subprogram, poartă numele de modul apelant. Acesta poate
fi programul principal sau chiar un alt subprogram. Aşadar subprogramele se pot apela unul pe altul.
• La fiecare apel al unui subprogram, modulul apelant poate transmite acestuia nişte date, pe care
subprogramul le va folosi atunci când se execută.
Aceste date se numesc parametri.
Procedura poate să întoarcă mai multe rezultate, dar nu prin numele ei, ci prin variabile desemnate special(
cu prefixul var) în lista de parametri formali:

 Parametri-valoare v1, v2, ..., vk:tp ( servesc pentru transmiterea de valori din programul principal în
procedură);
 Parametri-variabilă var v1, v2, ..., vk:tp (serves pentru întoarcerea rezultatelor din procedură în
programul principal);

La fiecare execuţie a sa, în urma unui apel, subprogramul poate să lucreze cu alte date, pe care le-a recepţionat sub forma
unor parametri. Există şi subprograme fără parametri, care operează direct asupra variabilelor programului.

Avantajele folosirii subprogramelor sunt:


• O mai mare claritate şi coeziune a programelor;
• Posibilitatea de a executa instrucţiunile dintr-un subprogram de mai multe ori, la fiecare execuţie cu alte
date.

1
Proceduri. Declarare şi apel. Variabile globale şi locale
O procedură este un modul de program alcătuit dintr-o secvenţă de instrucţiuni care se execută ca urmare a apelării
procedurii dintr-un alt modul.
Exemplu: Fie două numere reale a şi b, realizează un program care afişează media aritmetică a celor două numere.
Vom prezenta, pentru comparaţie:
• varianta cu un singur modul principal(Varianta V1)
• varianta în care folosim o procedură pentru calcularea mediei aritmetice (Varianta V2)

• Deci, o procedură poate să primească date din partea modulului apelant, date numite parametri. În cazul procedurii
calcul_media, din exemplul nostru nu are parametri. Ea foloseşte valorile a şi b citite anterior în programul
principal.
• Sunt aceste variabile cunoscute de procedură, deşi ele au fost stabilite în afara acesteia? Da, deoarece
variabilele a şi b au fost declarate la începutul programului, deci valorile lor sunt “văzute” în tot programul.
Ele se numesc variabile globale.
2
3
Conclzii:
Comparând {Varianta V2} şi {Varianta V3} putem formula câteva concluzii:
• Domeniu de vizibilitate al unei variabile(constante) este zona din program în care este “văzută” declaraţia acesteia,
adică zona de program în care e cunoscută valoarea sa.
• Dacă o variabilă e declarată în interiorul unui subprogram = variabilă locală.
• Dacă o variabilă e declarată la începutul programului principal = variabilă globală.
• Putem avea într-un program o variabilă locală şi una globală cu acelaşi nume. În acest caz, în subprogramul în care
a fost declarată, variabila locală “ascunde” variabila globală cu acelaşi nume, adică în timpul execuţiei
subprogramului este văzută valoarea variabilei locale, iar în afara subprogramului este cunoscută variabila globală.
• Exemplu: Ilustrăm deosebire între variabilele globale şi cele locale:
• Considerăm un program care conţine:
• - un modul principal P
• - trei subprograme, notate P1, P2, P3.
• presupunem că avem următoarele variabile:
• x, variabilă globală
• b, variabilă locală în P1
• m, variabilă locală în P2
• programul principal apelează procedurile P1 şi P2, iar P1 apelează
P3
• Care va fi domeniul de vizibilitate în acest caz?
Astfel:
• variabila x, fiind globală, este vizibilă în tot programul, adică în
modulul principal P şi în procedurile P1, P2, P3.
• Variabila b, ea nu e vizibilă în modulul principal P şi nici în
procedura P2.
• variabila m, fiind variabilă locală în procedura P2, este vizibilă în
procedura P2

4
Probleme rezolvate

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