Azad İsa oğlu Qurbanov, Elçin Musa oğlu Məmmədov, Aygün Seyfəddin qızı Hüseynova



Yüklə 2,82 Kb.
Pdf görüntüsü
səhifə37/41
tarix11.10.2017
ölçüsü2,82 Kb.
#4433
1   ...   33   34   35   36   37   38   39   40   41

 
378
prosedur və funksiyalarda formal parametr kimi istifadə olunur. Prosedur tipi 
aşağıdakı kimi elan olunur: 
Type  
=procedure(

); 
         
 
və ya 
Type 
 <
identifikator
>=function(

): 

 
Qeyd edək ki, prosedur tipindən istifadə etmək üçün aşağıdakı qaydalara əməl 
etmək zəruridir: 

 
Proqramın səhvsiz yerinə yetirilməsi üçün {$F+} kompilyator açarı 
verilməlidir; 

 
Prosedur tipinin təyin etdiyi prosedur və funksiyalar standart tipli 
olmamalıdır; 

 
Prosedur tipinin təyin etdiyi prosedur və funksiyalar digər prosedur və ya 
funksiyanın təsvir etmə bölməsində elan olunmamalıdır. 
Məsələn, vurma cədvəlinin yaradılması proqramına baxaq.  
Program P_22; 
    Uses Crt; 
    Type f = Function(x,y: Integer): Integer; 
    Var a,b: Integer; 
 
    {$f+} Function Mult(x,y: Integer): Integer;           Begin              
Mult:= x * y; 
    end; 
    {$f-}                                              
 
    Procedure Print(a,b: Integer; Oper: f); 
    Var i, j: Integer;                                Begin 
    For i:=1 To a Do  
        Begin 
        For j:= 1 To b Do Write(Oper(i, j):5); 
        WriteLn 
        End; 
    WriteLn 
    End; 
 
    Begin 
    Write(’Setir ve sutunların sayıni daxil edin’); 
    ReadLn(a, b); 
    Print(a, b, Mult); 
    End. 
2.16. Rekursiyalar 
 
Əgər prosedur və ya funksiyanın gövdəsində cari prosedura və ya dövrü 
olaraq funksiyaya müraciət olunarsa, onda həmin prosedura və ya funksiyaya 


 
379
rekursiv prosedur və ya funksiya deyilir
1
. Qeyd edək ki, bir çox riyazi funksiyaları 
rekursiv olaraq təyin etmək mümkündür. Məsələn 
x
y
=
 funksiyasının 
hesablanması rekursiv funksiya vasitəsilə yerinə yetirilə bilər. 
Var 
   m: integer; 
   x,y:real; 
Function XN (X:real;N:integer):real; 
begin 
if N=0 then XN:=1 
else 
XN:=X*XN(X,N-1); 
end; 
begin 
      readln (m); 
      readln(x); 
y:=XN(x,m); 
      Write('y=',y); 
end. 
Proqramdan göründüyü kimi, 
m
x
y
=
 funksiyasının hesablanması üçün 
XN
 
funksiyasında m qədər özünə müraciət olunur. 
2.16.1. Forward__direktivi_ilə_əvvəlcədən_elan_etmək_lazımdır._Bu_məqsədlə_prosedur_və_ya_funksiyanın_başlığından_sonra_Forward__sözü_yazılır._Məsələn,_var'>Forward direktivi 
 
Praktikada ola bilər ki, birinci altproqramdan, müraciət anına qədər hələ 
təyin olunmayan ikinci altproqrama müraciət olunsun. Belə  vəziyyət  əsasən 
vasitəçi rekursiyalarda – prosedurlar və funksiyalar qarşılıqlı olaraq bir-birinə 
müraciət etdikdə baş verir. Bu problemi həll etmək üçün uyğun prosedur və 
funksiyaları 
Forward
  direktivi ilə əvvəlcədən elan etmək lazımdır. Bu məqsədlə 
prosedur və ya funksiyanın başlığından sonra 
Forward
 sözü yazılır. Məsələn,  
var 
n,l:integer; 
procedure Turqut(i: integer; var l:integer);  forward; 
procedure Azad(i: integer; var l:integer); 
begin 
    Turqut(i-1,l); 
end; 
procedure Turqut(i: integer; var l:integer); 
begin 
    l:=i*5; 
end; 
begin 
 read(n); 
   Azad(n,l); 
    write(l) 
end. 
                                                 
1
 Başqa sözlə funksiya və ya prosedurun özündən özünə müraciət olunduqda onda həmin prosedura 
və ya funksiyaya rekursiv prosedur və ya funksiya deyilir. 


 
380
P
roqram yerinə yetirildikdə  əsas proqramdan 
Azad
 proseduruna müraciət 
olunur. 
Azad
 prosedurundan isə öz növbəsindən 
Turqut
 proseduruna müraciət 
olunur. 
Turqut
 proseduru 
Azad
 prosedurundan sonra gəldiyinə gorə o, əvvəlcədən 
Forward
 
direktivilə elan olunmuşdur. 
 
2.17. Fayl tipli dəyişənlər. Fayllarla əməliyyatlar 
 
Böyük həcmli verilənlərlə  işlədikdə fayl tipli verilənlərdən istifadə etmək 
məqsədəuyğundur.  Əks halda hər dəfə ilkin verilənləri klaviaturadan daxil etmək 
lazım gəlir. Bu isə çox yorucu iş olub, xeyli vaxt itkisi tələb edir. Fayl tipli 
verilənlər konkret informasiya daşıyıcısında (məsələn, bərk disklərdə, disketlərdə, 
CD, DVD disklərdə, fleş yaddaşında və s.) proqram və ya istifadəçi tərəfindən  fayl 
şəklində saxlanılır. 
Fayl-mətn və ikilik formatda verilənləri  saxlamaq üçün ada 
malik xarici yaddaş sahəsidir.  Hər bir fayl unikal ünvana malik olur. Fayla 
verilənlər klaviatura vasitəsilə istifadəçi tərəfindən və ya proqram yerinə 
yetirildikdə əməliyyatların nəticəsi olaraq avtomatik daxil oluna bilər. Bu səbəbdən 
faylları giriş  və  çıxış faylı kimi fərqləndirirlər. Proqram giriş faylından ilkin 
verilənləri alır, çıxış faylına isə yerinə yetirdiyi əməliyyatın son nəticəsini yazır. 
Turbo Pascalda fayllarla işləmək üçün fayl tipli dəyişəndən istifadə olunur. 
Fayl tipli dəyişən ifadələrdə istifadə oluna bilməz və onun vasitəsilə fayla müraciət 
olunur. Faylda saxlanılan verilənlərin tipinə uyğun olaraq proqramda fayl dəyişəni 
fərqli elan olunur. Belə ki, mətn fayllarına uyğun fayl dəyişəni aşağıdakı kimi elan 
olunur: 
   Var  
: Text

Ikilik formatlı fayllar öz növbəsində tipli və tipsiz növ fayllara bölünür
1
 və 
hər bir növ fərqli formada elan edilir. Tipsiz fayllara  uyğun fayl dəyişəni aşağıdakı 
kimi elan olunur: 
 
Var  
: file

Tipli  fayllara uyğun fayl dəyişəni isə aşağıdakı kimi elan olunur: 
  
Var 
      : file of

 
Proqramda fayl tipli dəyişən elan olunduqdan sonra onunla informasiya 
daşıyıcısında yerləşən faylın ünvanı arasında birqiymətli  əlaqə yaradılmalıdır. 
Bunun üçün  standart
 Assign (,
prosedurundan istifadə olunur. Bu prosedur yerinə yetirilən andan başlayaraq fayl 
tipli dəyişən üzərində aparılan bütün əməliyyatlar, prosedurda ünvanı göstərilmış 
fayl üzərində aparılan əməliyyatlarla ekvivalentdir. Məsələn,  
                                                 
1
 Tipli fayllar eynitipli verilənləri, tipsiz fayllar sadəcə olaraq baytlar toplusu olub ixtiyari tipli 
verilənləri  saxlayır. 


Yüklə 2,82 Kb.

Dostları ilə paylaş:
1   ...   33   34   35   36   37   38   39   40   41




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə