Sunteți pe pagina 1din 8

Referat la informatic

Tema: Proceduri i funcii


Proceduri PASCAL

O procedura Pascal poate avea uan din urmatoarele sintaxe.Forma a) fara


parametrii formli cu sintax
PROCEDURE nume;

[seciunea declaraii]

BEGIN

[instruciuni]

END

Forma b) cu parametrii formali, cu sintaxa

PROCEDURE nume([VAR] l1: t1; [VAR] l2:t1; [VAR] ln: tn);

[sectiunea declaratiei]

BEGIN

[instructiunii]

END;

unde

-nume este un indentificator Pascal, unde si este numele procedurii;

-(l1:t1;;ln: tn) reprezint listele parametrilor formali i a tipurilor


acestora, dac mulimea acestora nu e vid; li : ti, i=1,2,,n sunt separate
prin caracterul i( punct si virgula) i se numesc parametric formali.

Parametrii formali dintr-o procedur(si funcie) se declar numai n


antetul de procedura(functie) i nu n seciunea declaraiei ca celelalte
obiecte Pascal.

Observatii:

1)O procedura are o structura asemanatoare cu a unui pro%ram


diferit doar prin antet (instructiunea de inceput).
2) ntr-o declaraie de procedur sunt obligatorii doar antetul de
procedur si instruciunea compus BEGINEND.

3)Orice identificator folosit in zona de instruciuni a procedurii,


exceptnd parametrii formali, trebuie s fie declarat fie n seciunia de
decalraii a procedurii(cnd are valoare locala-numai in corpul
procedurii), fie in programul din care face parte procedura in care caz
variabila are valoare gloabl, numai dac aceiasi variabil nu este
declarat i n procedura.

4)Dac un identificator cu acela nume figureaz i este declarat


i n programul principal i n subprogram(procedura functie), atunci
semnificaiiele lui sunt diferite n programul principal i subprogram.

Funcii PASCAL

O funcie Turbo Pascal are o structur sintactic asemantoare cu a unui


proceduri Turbo Pascal. Sintaxa funciei este urmatoarea:

FUNCTION nume ([ VAR] l1:t1; [VAR] l2:t2;;[VAR]


ln:tn): tip nume;

[seciunea declaraii locale]

BEGIN

{..........}

{NUME:=.....;}

[seciunea instruciuni]

{.}

END;

-unde:

tip nume este valorii pe care o ia nume pe care o va returna


programului apelat. El poate fi : intreg, real, CHAR, BOOLEAN, pointer,
STRING. O funcie calculeaz o valoare ce se asociaz numelui funciei
nume, prin urmare este necesar precizarea tipului numelui. De
asemenea este necesar, n cadrul seciuni de instruciuni, prezent
numelui funciei: nume cel puin odat, n membrul sting a unei
instruciuni de atribuire. Specificarea tipului de funcie se face n antet. n
urma execuiei unei funcii rezultatul obinut este atribuit numelui funciei,
prin intermediul cruia se face returnarea acestui rezultat.

li:ti sunt declaratori de tip ai parametrilor formali i au aceeai


semnificaie ca la proceduri. La funcii lista parametrilor formali nu poate
fi vid.

Exemplu: S se elaboreze o functie Turbo Pascal care s calculeze


minimul a doua numere reale. Functia este urmatoarea :

FUNCTION min(z,y:REAL):REAL.

BEGIN

if x <y

THEN min:=x;

ELSE min:=y;

END.

n acest exemplu numele funciei sunt x i y de tip REAL acest lucru fiind
precizat astfel:

FUCTION min (...) :REAL;

Parametrii funciei sunt x i y de tip REAL i sunt parametri formali-


constante.

Apelul funciei se face prin numele su, urmat n paranteza din lista
parametrilor actuali, nume ce apare n cadrul unei expresii. n apelul
funciei parametrii actuali nume ce apare in cadrul unei expresii de
acelasi tip cu parametrul formal corespunzltor. Ca i la apelul
procedurilor parametri actuali trebuie s se corespund cu parametrii
formali n numr, ordine si tip.

Aplicaia 1. Se citesc n programul principal n parechi de numere reale


(a,b)i se cere s se calculeze i s se afieze pentru fiecare pereche citita
tripletul (a,bmin(a,b)) pentur calculul lui min (a,b) folosind o funcie.

Programul fiind urmtor:

PROGRAM minim;
VAR a, b, z: REAL;

i, n: INTEGER;
FUNCTION min(x, y: REAL): REAL;

BEGIN

if x<y

THEN min:=x;

ELSE min:=y;

END;
BEGIN

write(dati n:)

readln(n);

for i:=1 to n do

BEGIN

write(dati a si b:);

readln (a,b);

z:=min(a,b);

write (a:6:2, b:6:2, min= , z:6:2);

END;

END.

n program era posibil ca n loc de

z:=min(a,b);

write(a:6:2, b:6:2,min=,z:6:2).

s scriem doar

write(a:6:2, b:6:2,min=,min=(a,b):6:2).

Tipurile function si procedure

n afar de tipurile simple i structurate prezente n capitolele anterioare


se pot declara alte tipuri de date i anumite tipul FUNCTION si tipul
PROCEDURE i care au urmtoarele sintaxe :

TYPE

nume_functie=FUNCTION(l1:t1;................ln:tn):
tip_rezultat;

nume_procedura=PROCEDURE(l1t1;...............ln:tn);
-unde

tip_rezultat este un tip:integer, real, BOOLEAN, CHAR, STRING sau


pointer, li:ti cu i=1,2., n sunt declatori de tip ai parametrilor.
Avnd declarate tipurile FUNCTION sau PROCEDURE, variabile de tipp
FUNCTION sau PROCEDURE se declar n VAR, spre exemplu:

VAR f1, f2:nume_funcie; sub1, sub2: nume_procedur;

Unde s-au declarant f1, f2 ca funcii, iar sub1, sub2 ca proceduri.

Funcii i procedure ca parametrii formali

n lista parametrilor formali ai unei procedure sau funcii pot figura i


nume de funcii sau procedure. Dac un parametru formal este un nume
de functie sau procedur, atunci parametrul actual corepunztor, n apel,
trebuie s fie de asemenea un nume de funcie sau procedur.

n implementarea Turbo Pascal, trebuie procedat astfel:

Se declar tipul FUNCTION sau PROCEDURE, ca la paragraful


precedent prin TYPE
nume_funcie=FUNCTION(par,., par:tip.):tip_funcie;
nume_procedur=PROCEDURE(par,par,..:tip:.);

Proceduri i funcii

Procedura pl este deschis n procedura q,


este local p;
PROCEDURE

pentru q i nu poate fi apelat dect din p. La


fel procedura
PROCEDURE pl;

BEGIN ql fiind declarat n q are, la fel, character local


pentru q i
......

END; nu poate fi apelat dect din q.


BEGIN

....

pl;

END.
Pe parcursul descrierii diferitor obiecte i aciuni din Turbo Pascal s-au
prezentat o serie de functii i procedure care sunt predefinite, folosindu-
se frecvent n aplicaii. Citim cteva din aceste funcii i proceduri:

Funciile de conversie Ord, Chr.


Funcii aritmetice Abs, ArcTan, Cos, Exp, Pi, Sin, Sqr, Sqrt.
Funcii de ordonare Odd, Pred, Succ.
Proceduri i funcii de intrare/ieire pentru fiiere Assign, Close,
Rewrite, Eof, Read, Readln, Write, Writeln, .a.
Proceduri i funcii de gestionare dinamica a memoriei.

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