Sunteți pe pagina 1din 13

SUBPROGRAME

Blocul este unitatea de baza a oricarui program/subprogram Pascal si este format din: Partea declarativa (declararea obiectelor) Partea executabila (instructiuni ) Orice subprogram Pascal contine, in mod obligatoriu, un antet.

Elementele unui subprogram


Antetul subprogramului Definitia subprogramului Apelul subprogramului

var a, b:word; function suma(y,x:word): longint;{antetul subprogramului} begin suma:=x+y; {corpul subprogramului} end; begin write(a=); readln(a); write(b=); readln(b); writeln( suma=, suma(a,b)); { apelul subprogramului} end.
4

Definitia subprogramului
<antetul subprogramului> <declaratii proprii subprogramului> <partea executabila a subprogramului>

Elementele unui subprogram


Antetul subprogramului - declara subprogramul Apelul subprogramului executa subprogramul Definitia subprogramului
orice subprogram trebuie declarat si definit ; declararea poate fi facuta fie prin antet (urmat de clauza FORWARD), fie prin definitia lui (antetul si corpul subprogramului)

Clasificarea subprogramelor
a) Dupa autor - subprograme standard/de sistem - subprograme nestandard/ definite de utilizator

b) Dupa numarul de valorilor returnate: - functii; - proceduri;

Functii
= subprograme care returneaza un singur rezultat. Antetul unei functii: FUNCTION identif_functie (lista_parametri): tip_functie;

Functii
Apelul unei functii se realizeaza in interiorul unei expresii unde este folosit ca operand. Expresia poate sa apara fie in operatia de atribuire (ca membrul drept sau ca membrul stang al unei instructiuni de atribuire), fie in cadrul unei operatii de decizie, fie in operatia de scriere ( in lista de parametri ai procedurii write/writeln).
10

Proceduri
= subprograme care returneaza mai multe sau nici o valoare. Valorile se returneaza prin intermediul parametrilor. Antetul unei proceduri: PROCEDURE identif_procedura parametri)];

[(lista_

11

Proceduri
Apelul se realizeaza printr-o instructiune procedurala: IDENTIF_PROCEDURA[(LISTA_PARAMETRI)]; Obs: parametrii pot fi variabile, expresii sau valori constante.

12

Exemple de apeluri de functii predefinite


X:=16; e:=5+sqrt(x); For i:=1 to length(s) do .. X:= sqrt(sqr(x) + sqr(e)); Write(sqr(x));

13