59
Prosedura və funksiyalar ayrıca tərtib edildikdən sonra proqramın əsas hissəsi tərəfindən onların
adlarına müraciət etməklə çağrılır. Funksiyaların proseduralardan fərqi ondan ibarətdir ki, funksiya yalnız
bir qiyməti qaytarır. Prosedura isə istifadəçi istəyi və tərtib edilmədən asılı olaraq bir neçə qiymət qaytara
bilər.
Turbo paskal dilində proseduralar aşağıdakı kimi elan edilir:
PROCEDURE ad (formal parametrlərin siyahısı);
Burada ad- proseduraya verilən ad olub düzgün identifikatordur;
formal parametrlərin siyahısı- prosedura daxilində istifadə edilən dəyişənlərin vergüllə bir-
birindən ayrılmış siyahısıdır. Burada dəyişənlərin tipləri də göstərilməlidir. Qeyd edək ki, formal
parametrlər verilməyə də bilər.
Funksiyanın elan edilməsi üçün isə aşağıdakı ümumi yazılışdan istifadə edilir.
FUNCTİON ad (formal parametrlərin siyahısı) :tip
Burada ad- funksiyaya istifadəçi tərəfindən verilən ad olub düzgün identifikatordur;
formal parametrlərin siyahısı- funksiya daxilində istifadə ediləcək parametrlər (dəyişənlər)
olub tipləri göstərilməklə bir-birindən vergüllə ayrılırlar.
tip- funksiyanın qaytarılacaq nəticəsinin tipidir.
Burada da formal parametrlər verilməyə bilər.
Misal:
n!=1
2
...
n –i hesablayan funksiyanı tərtib edək.
PROGRAM FAKTORIAL;
USES CRT;
VAR
P,X:INTEGER;
FUNCTION FK(N:INTEGER) :INTEGER; (* funksiya*)
VAR
I,R:INTEGER;
BEGIN
r:=1;
FOR I:=1 TO N DO
r:=i*r;
FK:=r;
END;
BEGIN (*əsas hissə*)
READLN(X);
WRITELN ('X=',X);
P:=FK(X);
WRITELN ('P=',P:8);
END.
Burada funksiyanın adı FK-dır.
İndi isə proseduraya aid programı verək:
Misal: (x+y)
n
ifadəsini hesablamaq üçün proseduradan istifadə etməklə proqram qurun.
PROGRAM PROSEDURA;
USES CRT;
VAR
X,Y,N:REAL;
PROCEDURE KV (A,B,K:REAL); (*prosedura hissəsi*)
VAR
Q:REAL;
BEGIN
Q:=EXP(K*LN(ABS(A+B)));
WRITELN ('NATICA- ',Q:8:2);
END;
60
BEGIN (*əsas proqram hissəsi*)
READLN (X,Y,N);
WRITELN('X=',X:6:2,' Y=',Y:6:2,' N=',N:4:2);
KV(X,Y,N);
END.
Bu proqramda proseduranın adı KV-dir.
Qeyd etmək lazımdır ki, Turbo Paskal dilində funksiya və ya prosedura özü-özünə də müraciət edə
bilər. Bu rekursiya adlanır.
Bir çox hallarda Turbo Paskal dilində proseduranın özü verilməmişdən də ona müraciət etmək
mümkündür. Bu halda sadəcə olaraq proseduranın adı verilir və onun sonuna FORWARD sözü də əlavə
olunur. Məsələn aşağıda verilən proqramda SK prosedurası özündən sonra verilən MP prosedurasına
müraciət edir və bu səhv hesab edilmir.
PROGRAM NN;
USES CRT;
...................................
PROCEDURE SK (R, L:REAL); FORWARD;
PROCEDURE MP (Z, T:REAL);
VAR
A, B, TS:REAL;
BEGIN
…………………….
A::=2*Z;
B::=2*T;
TS::= SK(A,B);
..……………………
END;
PROCEDURE SK(R, L);
VAR
F, V, NX:REAL;
BEGIN
F:=sqr(R);
V:=sqr(L);
NX:= MP(F,V);
………………………
END;
……………………………
END.
Alt proqramın adından dərhal sonra aşağıdakı standart direktivlərin birinin adını vermək
olar: ASSEMBLER,
EXTERNAL, FAR, FORWARD, INLINE, INTERRUPT, NEAR.
Bu direktivlər proqramın kompilyasiyasına təsir edir.
Direktivlərin təyinatları aşağıdakı kimidir:
ASSEMBLER – standart maşın instruksiyalarını ləğv edir və alt proqramin realizəsi daxili
assemblerlə həyata keçirilir;
EXTERNAL – alt proqram xarici alt proqram kimi élan olunur;
FAR – alt proqram uzaq çağırış üçün kodlaşdırılır ( yəni bu alt proqrama əsa proqramın
ixtiyari yerindən müraciət etmək olar);
NEAR - alt proqram yaxın çağırış üçün kodlaşdırılır ( yəni alt proqrama yalnız 64 Kbayt
hüdudunda müraciət etmək olar);
FORWARD – kompilyatora məlumat verir ki. alt proqramin elanı sonra veriləcək;
İNLİNE – alt proqramın daxili maşın instruksiyaları ilə realizə (yerinə yetirmə) olunmasını
göstərir;