I bölmə t t t



Yüklə 0,77 Mb.
Pdf görüntüsü
səhifə32/40
tarix29.12.2021
ölçüsü0,77 Mb.
#48444
1   ...   28   29   30   31   32   33   34   35   ...   40
Turbo Pascal Kitabi

with Pirili_Banu do 

   

begin 

   


ad:=`Banu`; 

   


soy_ad:=`Pirili`; 

   


with anadan_olub do 

   

 

begin 

   

 

il:=1980; 

   

 

ay:=12; 



   

 

gun:=28; 



   

 

end; 



   

orta_bal:4.9 

   

end; 

 

Məsələ  23.  Yazı  massìvì  tìpìndən  ìstìfadə  etməklə,  satışda  olan 



avtomobìllər  haqda  məlumat  almaq  üçün  proqram  tərtìb  etməlì.  Qìymətì 

3000$  -dan  az  olan  modellər  və  onların  buraxılış  ìlì  barədə  ekrana  ayrıca 

arayış çıxarmalı. 

Yazı  alanları:  model  -marka,  buraxılış  ìlì  -ìl,  və  qìymətì  -haqq  kìmì 

adlandırsaq aşaõıdakı proqramı yaza bìıərìk. 

 

program Avtomobil; 



uses Crt; 

const   

n = 10; 


type 

 

avto = record 



   

 

 



marka:string[15]; 


   

 

il, haqq:integer; 



   

 

end

var 

a1:array[1..n] of avto; 



   

i:integer; 



begin 

   


clrscr; 

   


for i:=1 to n do 

   


 

with a1[i] do 

   


 

 

begin 

   

 

 



writeln(`Marka?`); 

   


 

 

readln(marka); 



   

 

 



writeln(Istehsal ili?); 

   


 

 

readln(il); 



   

 

 



writeln(`Haqq?`); 

   


 

 

readln(haqq); 



   

 

 



end

   


writeln; 

   


writeln(`Firma munasib bilir`); 

   


for i:=1 to n do 

   


with a1[i] do 

   


 

 

writeln(marka:15,il:10,`$`,haqq); 



writeln; 

write(`HaqqI 3000$ -dan az olan`); 

writeln(`munasib avtomobil:`); 

for i:=1 to n do 

 

with a1[i] do 

 

 

if haqq < 3000 then 



 

 

 



writeln(marka:15,il:10); 

readln 


end

Çalışma 23. Ötən proqramda alan tìplərìnə rəng alanı də əlavə edərək 

ekrana son yeddì ìlìn buraxılışı olan qırmızı rənglì avtomobìllər barədə 

məlumat verə bìlən proqram yazın. 

 

§10. Fayllar



  

 

1.  Tìplərì  tanıtmaqla  faylların  təşkìlì.  Çox  zaman  kənar  yaddaşda 



(dìskdə) saxlanan ìrì həcmlı məlumatlarla  ìşləmək zərurətì meydana çıxır  kì, 

bu da fayllar vasìtəsìlə həyata keçìrìlìr.  




Fayl –bìr ad altında cəmləşdìrìlmìş yazı, qrafìk, şəkìl və s. kìmì müxtəlìf 

məzmunlu  ünsürlər  toplusu  olub,  əsasən  kənar  yaddaşda  yerləşdìrìlìr.  Fayl 

tìpì: 

 

  type  = file of 



formada və ya bìlavasìtə dəyìşən bölməsìndə 

 

    var  = file of 



kìmì təqdìm edìlìr. 

Məs. 


type Saylar = file of integer; 

1.1  Adlar = file of string[24]; 



var  Xronika, kitab, musiqi: file of record

ilkfayl, sonfayl: file of boolean;  

2. Fayllarla ìş. Fayllarla ìş aparmaq üçün onu əvvəlcə açmaq, lazımı 

əməlìyyat keçìrìldìkdən sonra ìsə baõlamaq lazımdır. Faylın hər-hansı 

elementì, başdan başlayaraq ardıcıl arama yoluyla tapılır və faylın sonu ìsə 

 

          eof (); 



standart məntìqì funksìyası ìlə müəyyən edìlìr. Faylın sonu tapılarkən bu 

funksìya true qìymətìnì alır. 



System  modulunun  aşaõıdakı  proseduralarıyla  fayllarla  müvafìq 

əməlìyyatlar aparmaq mümkündür: 

 

assiqn(

adı>, 

()) 

Faylın  kənar  adı  və  fayl  dəyìşənì  arasında  əlaqə 

yaratmaq üçün. 

reset(

Fayldan lazımı hìssənì oxumaq üçün. 

read(

Fayldan lazımı hìssənì fəal yaddaşa verìr 

close(

faylı baõlayır 

rewrite(

fayla yazı daxìl etmək üçün onu açır 

write(

Fayla məlumat daxìl edìr. 

Burada:  

-   -faylın var bölməsìndə dəyìşən kìmì verìlmìş adı, 

-   -faylın dırnaq arasında:  

 ‘d:\Kitab\lab1.pas’formada verìlmìş –kənar yaddaşdakı adıdır. 

Məsələ  24.  Kompüterlərìn  –marka(marka),  vìnçester  tutumu(hdd),  fəal 

yaddaş  tutumu(ram)  və  əməlìyyat  tezlìyì(speed)  göstərìcìlərìnì  əks  etdìrən 

fayl tərtìb edìb ekrana çıxarmalı. 



program computer1; 

uses Crt; 

type comp = record 

   

 

marka:string[15]; 

   

 

hdd,ram:real; 



   

 

speed:integer; 



   

 

end; 



   

 

myfile=file of comp; 



var  f1:myfile; 

   

I,n:integer; 

   

c1:comp; 



begin 

   

clrscr; 


   

writeln(`Say?:`); 

   

readln(n); 



   

assign(f1,`d:\computer`); 

   

{f1 adda bir fayl ayarlamaq} 

   

rewrite(f1); 



   

for I:=1 to n do 



   

 

begin 

   

 

writeln(`Marka?`); 

   

 

readln(c1.marka); 



   

 

writeln(`HDD,RAM?`); 



   

 

readln(c1.hdd,c1.ram); 



   

 

writeln(`Tezlik?`); 



   

 

readln(c1.speed); 



   

 

{Fayla qeyd aparmaq} 



   

 

write(f1,c1); 



   

 

end; 



   

close(f1); 

 

{fayl f1-i qapatmaq} 



   

writeln(’Marka HDD RAM’); 

   

{Oxuma faylI ayarlamaq} 



   

reset(f1); 

   

for i:=1 to n do 

 

{fayl ekrana verilir} 



   

 

begin {Oxuma davam etdirilir} 

   

 

read(f1,c1); 

     

 

write(c1.marka:15,c1.hdd:10,c1. 



ram:7,c1.speed:8); 

   


 

writeln; 

   

 

end; 




   

readln 


end. 

 

 



 

 

Çalışma  24.  Məlumatları  əməlìyyat  yaddaşına  hər-hansı  fayldan  while, 



read, eof əmrlərìlə daxìl etməklə 24 –cü məsələnì həll edìn. 

Məsələ  25.  Ötən  proqramda  tərtìb  olunmuş  fayldan,  əməlìyyat  tezlìyì 

166Mr  –dən  artıq  olan  kompüterlər  barədə  məlumat  götürüb  ekrana 

çıxarmalı.  



program Computer166Mr; 

uses Crt; 

type comp =record 

   

 

marka:string[15]; 

   

 

hdd,ram:real; 



   

 

speed:integer; 



   

 

end; 



   

myfile = file of comp; 



var  f1:myfile; 

   

i,n:integer; 

   

c1:comp; 



begin 

clrscr; 


assign(f1,`d:\computer`); 

{Oxuma faylI ayarlamaq} 



reset(f1); 

while not eof(f1)do 

{fayl sona kimi yoxlanIr}

 

begin   

 

 

 

{fayldan oxuma} 

read(f1,c1); 

if c1.c1speed > 166 then 

    writeln(c1.marka:15,c1.hdd:8:2,c1.ram:8:2); 

end; 

readln 


end. 

 

Çalışma  25.  System  modulunun  proseduralapından  ìstìfadə  etməklə 



sərbəst seçdìyìnìz bìr faylla əməlìyyat aparan sadə proqram tərtìb edìn.  

 

Ardıcıl  arama  rejìmìndwn  başqa,  fayllarla  bìrbaşa  seçmə  yoluyla  da 



ìşləmək mümkündür. Bu cür faylların bìrbaşa k –cı elementìnə  read və write 

əmrlərìnì tətbìq etməzdən əvvəl seek əmrìlə: 

                        seek(, k); 



  kìmì hazırlıq görmək lazımdır. 

3.  Mətn  faylları.  Yuxarıda  tanış  olduõumuz  -tìp  formasında  müəyyən 

edìlən  fayl  elementlərì  kompüter  tərəfìndən  kodlaşdırılır  və  həmìn  fayllarda 

düzəlìşlər aparmaq və ya onlara adì mətn redaktorlarını tətbìq etmək mümkün 

olmur. Odur kì, bìr çox hallarda bu cəhətdən daha münasìb ìmkanlara  malìk 

mətn fayllarından ìstìfadə olunur.  

Mətn  faylının  elementlərì  –hərf,  rəqəm,  ìşarə  və  ara(probel)  kìmì 

sìmvollar ardıcıllıõından ìbarət olan sətìrlərdìr. Sətìrdə ünsürlər ara ìlə ayrılır, 

hər  sətìr  sonunda  keçìd  sədəfì  qırpılır.  Belə  faylları  mətn  redaktoru  ìlə 

tənzìmləmək mümkün olur. Sətìrdə sìmvolun varlıõı eoln əfunksìyası ìlə  

                     eoln(); 

formada müəyyən edìlìr. Sətrìn sonunda bu funksìya true qìymətìnì alır. 

Mətn faylı var bölməsìndə 

 

  var text; 



 kìmì verìlìr. 

Mətn faylı elementlərìnì read və ya readln əmrlərìlə 

 

   read(və ya readln)(,


); 

kìmì  oxumaq  mümkündür.  readdan  fərqlì  olaraq  readln  əmrì  sətrìn 

parametrlər sìyahısında verìlməyən hìssəsìnì oxumur.  

Mətn faylına yazı vrite və ya writeln əmrlərì ìlə: 

 

  write(və ya writeln)(,<ìfadələrìn sìyahısı>); 



kìmì verìlìr. 

Mətn faylına əlavələr ìsə append əmrìlə 

 

                    append(); 



formada daxìl edìlə bìlər. 

Məsələ 26. Hər-hansı mətn redaktoru ìlə tərtìb olunmuş  

Ç a y l a r 

Nil           6671  2870000 

Missisipi 

 

6420  3238000 



Amazon 

 

6280  6951000 



Ob 

 

 



5410  2990000 

Amur   


 

4416  1855000 

Lena   

 

4400  2490000 



Konqo   

 

4320  3690000 



Niger   

 

4160  2092000 



Volqa   

 

3531  1360000 




faylını ekrana çıxarıb burada ən uzun çayı və hövzəsì ən böyük olan çayı 

müəyyən etməlì.  



program Çaylarfile; 

uses Crt; 

type Çaylar = record 

ad:string[10]; 

uz:integer;{uzunluq} 

al:longint {alan} 

end; 

var  bufayl:text

buad:Çaylar; 

{maksimal uzunluqlu çayIn adI} 

{maksimal alanlI çayIn adI} 

aduzmax,adalmax:string[11]; 

uzmax:integer; {maksimal uzunluq} 

almax:longint; {maksimal uzunluq} 

begin 

   

clrscr; 


   

uzmax:=0; 

   

almax:=0; 



   

writeln(


`Ad, Uzunluq(km),Alan(kv.km)`

); 


   

assign(bufayl,`d:\Sular`); 

   

reset(bufayl); 

   

while not eof(bufayl)do 

   

 

with buad do 

   

 

 

begin 

   

 

 

readln(bufayl,ad,uz,al); 

   

 

 



writeln(ad:10,uz:10,al:15); 

   


 

 

if uz > uzmax then 

begin 

uzmax := uz; 



aduzmax := ad 

end; 


if almax < al then 

begin 


almax:=al; 

adalmax:=ad 

end; 

end; 

   

 

writeln(`Uzun çayIn adI-`,aduzmax); 




   

 

writeln(`Böyük çayIn adI-`,adalmax); 



   

 

readln 



   

end. 

 

Çalışma 26. Azərbaycan çayları üçün BizimÇaylar adlı fayl tərtìb etməklə 



ötən məsələnì həmìn fayl üçünda həll edìn. 

4.  Ünsürlərìn  çeşìdlənməsì.  Massìv  və  fayl  tərkìbìndə  çeşìdləmə 

alqorìtmlərìndən  -yerdəyìşmə  ìlə  artım  üsulunu  nəzərdən  keçìrək.  n  element 

üçün bu üsul: 

1- cì mərhələdə 

-  bìrìncìdən  başlayaraq  ìlk  element  cütü  müqayìsə  olunur  və  bìrncì 

böyük olan halda yerdəyìşmə aparılır. 

-  ìkìncìdən başlayaraq proses təkrarlanır  və cəmì n-1 addımdan sonra 

ən böyük element sona qoyulmuş olur 

2 – cì mərhələdə 

-  1 –cì mərhələnì, n-2 –addımda təkrarlamaqla ìkìncì böyük ədəd n-1 –

cì mövqeyə qoyulmuş olur. 

……………………….. 

n–1 –cì mərhələdə, nəhayət sonuncu bìr cüt element də müqayìsə olunur 

və lazım gələrsə yerdəyìşmə aparmaqla çeşìdləmə sona yetìr.  

 

Məsələ  27.  26  –cı  məsələdə  verìlmìş  faylı  ekrana  çıxararaq  onu  massìv 



strukturlu ünsür kìmì fəal yaddaşa ötürməlì. Daha sonra, fayldakı çay adlarını 

əlìfba sırasına görə düzməklə yenìdən ekrana verməlì.  



program ABCD_; 

uses Crt; 

type çaylar = record 

ad:string[10]; 

uz:integer; 

al:longint 

end

const k =9; 

var  bufayl:text

buad:çaylar; 

i,j:integer; 

mas:array[1..k] of çaylar; 



begin 

clrscr; 


assign(bufayl,`d:\çaylar`); 

reset(bufayl); 




writeln(‘ 

 

Bu fayl’); 



writeln(

`Ad, Uzunluq(km),Alan(kv.km)`

); 

while not eof(bufayl) do 

begin 


readln(bufayl,buad.ad,buad.uz,buad.al); 

writeln(buad.ad:10,buad.uz:10,buad.al:15); 

mas[k]:=buad; 

end

close(bufayl); 



for i:=1 to k-1 do 

for j:=1 to k-1 do 

begin 

if mas[i].ad > mas[j+1].ad then 

begin 

buad:=mas[i]; 

mas[i]:=mas[j+1]; 

mas[j+1]:=buad; 



end

end

writeln(‘ 

 

Yeni fayl’); 



writeln(

`Ad, Uzunluq(km),Alan(kv.km)`

); 

for i:= 1 to k do 

with mas[i] do 

  writeln(ad:10,uz:10,al:15); 

readln 

end

 

Çalışma  27.  26  –cı  məsələdə  verìlmìş  faylı  ekrana  çıxararaq  onu  yazı 



massìvì  strukturlu  ünsür  kìmì  fəal  yaddaşa  ötürməklə  27  –cì  məsələnì  həll 

edìn. 


 

§11. Sìyahılar 

 

 

Məlum  olduõu  kìmì,  proqramda  ìşlənən  hər  bìr  dəyìşən  üçün  fəal 



yaddaşda əvvəlcədən  müəyyən sahə ayrılır  və bu sahə də  yalnız proqram öz 

ìşìnì  qurtardıqdan  sonra  boşalır.  Lakìn  bìr  çox  məsələlərìn  həllì  zamanı  -

xüsusìlə  də  sìyahılar  tərtìb  edərkən-  onların  ölçüsü  və  tələb  olunan 

dəyìşənlərìn  sayı əvvəlcədən  bəllì  olmur.  Təbììdìr kì, belə  olduqda  yaddaşın 

müəyyən  ölçülərə  uyõun  –yənì  statìk  tənzìmlənməsì  də  mümkünsüz  olur  və 



bu  halda  dìnamìk  yaddaş,  dìnamìk  dəyìşən  və  ox  (yənì  göstərìcì)  kìmì 

anlayışlardan ìstìfadə etmək zərurətì meydana çıxır. 

1. Dìnamìk yaddaş, dìnamìk dəyìşən və ox. Yaddaşdan dìnamìk ìstìfadə –

dəyìşənlərə yalnız zərurì anlarda yer ayırıb lazım olmadıqda ìsə onu boşaltma 

prìnsìpì ìlə xarakterìzə olunur.  Bu şəraìtə uyõun seçìlmìş dəyìşənlər dìnamìk 

dəyìşənlər  adlanır.  Dìnamìk  dəyìşənlərlə  ìşləmək  üçün  ox  dedìyìmìz  xüsusì 

ünsür  tìpì  müəyyən  edìlmìşdìr.  Ox  –təhkìm  olunduõu  dəyìşənìn  yaddaşda 

yerìnì  deyìl  yalnız  onun  tìpìnì  müəyyən  edìr  və  yalnız  zərurì  anlarda  ona 

yaddaşdan yer ayrılmasını təmìn edìr. Ox -type bölümündə ^ sìmvoluyla 

 

 type  = ^



kìmì şərh olunur.    

Bəllì dəyìşənlər üçün oxlar var bölümündə 

 

  var  : 



formada təhkìm edìlìr. 

Məs. OxSay, OxMas və OxAy göstərìcìlərìnì  



type  

OxSay =^integer; 

OxMas  =^array[1..50] of real; 

OxAy =^Ay; 

kìmì şərh etmək və onları uyõun olaraq s1, s2, s3, m1, m2, aya, ayb, ayc 

dəyìşənlərìnə 



var  

s1, s2, s3:OxSay; 

m1, m2:OxMas; 

aya, ayb, ayc:OxAy; 

kìmì təhkìm etmək olar. 

Bu cür verìlmìş massìv və yazılar üçün kompìlyator yaddaşda xüsusì yer 

ayırmaz  və oxıarın özü ìsə cüzì  yer tutar.  Dəyìşənlərə  yalnız  onların  gərəklì 

olduõu anlarda, oxların bìldìrìşì ìlə  

  new(); 

prosedurası əsasında yer ayrıla bìlər və yalnız bundan sonra 

 

     



adlı dìnamìk dəyìşən tanıdıla bìlər. 

Oxlar üzərìndə  

  <1 –cì ox> : = <2 –cì ox>; 

   : = nil; 




kìmì  ünvandəyìşmə  əməllərì  təyìn  edìlmìşdìr  kì:  -bìrìncì  əməldən  sonra 

hər  ìkì  ox  2  –cì  üçün  nəzərdə  tutulmuş  yaddaş  bölümündən  ìstìfadə  edər, 

ìkìncì əməldən sonra ìsə artıq ox neytral qalar. 

Dìnamìk dəyìşənìn tutmuş olduõu yaddaş  

 

  dispose(). 



kìmì tərtìb olunmuş dispose prosedurasıyla azad edìlìr. 

Oxlar üzərìndə əməllərì əks etdìrən bìr proqram nümunəsì verək: 

 

program Ox; 

var c1, c2 : ^integer;{iki ox verilir} 

begin 

new (c1);{c1 –oxuna yer ayarlama} 

new (c2);{c2 –oxuna yer ayarlama} 

c1^ := 5; 

c2^ := 7; 

writeln(c1^, c2^);{ekrana 5, 7 verilir} 

c1 := c2; 

writeln(c1^, c2^);{ekrana 7, 7 verilir} 

c2 := nil; 

dispose(c2){c2 yadda$dan silinir} 

writeln(c1^);{ekrana 7 verilir} 

end. 


 

Şəkìl 1.1. –də bu proqramın fəalìyyət sxemì verìlmìşdìr: 

  

 

 



 

 

 




 

Dìnamìk  dəyìşən  -hamısı  eynì  zamanda  fəal  yaddaşa  yerləşməyən 

çoxsaylı massìvlərlə bìr proqramın eynì vaxtda ìşləməsìnə də ìmkanı verìr.  

Bunun üçün: 

-  hər  massìvə  var  oxmas1,  oxmas2,..:^array…  formada  oxlaar 

təhkìm etmək, 

-  nev(mas1)  –prosedurasıyla  yənì  massìv  təyìn  edìlìr  və  mas1^[1], 

mas1^[2],.. mas1^[i],..-kìmì dìnamìk dəyìşənlər ayarlanır. 

-  dispose(mas1) –yaddaş boşaldılır 

-  nev(mas2)  –prosedurasıyla  ìkìncì  yenì  massìv  təyìn  edìlìr  və  ona 

mas2^[1], 

mas2^[2],.. 

mas2^[i],..-kìmì 

dìnamìk 


elementlər 

ayarlanır və s. 



 

2.  Sìyahı  –eynì  tìpdən  olan  sonlu  sayda  ünsürün  nìzamlı  düzümüdür. 

Sìyahının  hər  elementì  ìkì  hìssədən  ìbarət  olur  -onu  təşkìl  edən  ünsür  və 

nöybətì  ünsürü  göstərən  ox.  Bu  cür  strukturanı,  əlbəttə  yazı  və  ox  ünsür 

tìplərì ìlə aşaõıdakı kìmì əks etdìrmək mümkündür: 

 

 

 



c1 

 

 



 

 

c2 



 

      


var c1, c2: ^integer;

         

 

 

 



  c1 

   c1^ 


      

       new(c1); 

 

 

 



  c2 

       c2^ 

 

       new(c2); 



 

 

 



 

 

 



 c1 

     


5

 

      



       

 

 



        c1^ 

 

  c2               c2^ 



7

 

 



        

 

   c1 := c2 



 

 

 



 

  c1    c1^ 

      


       c1^ : = 5; 

 

 



 

  c2 


   c2^   

 



       c2^ : = 7; 

 

 



 

 

 



 c1 

      


      

       


 

 

        c1^ 



 

                          

7

 

 



        

 

  dispose(c2); 



 

 

 



 

 c1 


      

      


       

 

 



        c1^ 

 

  c2                     



7

 

 



        

 

   c2 := nil; 



 

Åäkìl 


1.1. 

Ox 


proqramínín 


 type   = ^

 = record 

<1 –ci ünsür alanı> : <1 –cì ünsür tìpì>; 

... 


 : 

 : < sìyahı elementìnìn adı> 

       end; 

 Məs.  26  –cı  məsələdə  verìlmìş  Çaylar  sìyahısını  –çaylar,  elsiya(sìyahı 

elementì)yazı  tìpìnì  çay  adlandırsaq,  onun  üçün  tìp  və  dəyìşənlərì  aşaõıdakı 

kìmì təyìn etmək olar: 

type 

elsiya =^çay;{yazi tipi} 

çay = record

ad:string[11];{ad} 

uz:integer;{usunluq} 

al:longint;{alan} 

iz:elsiya;{sonrakI element oxu} 

end

var elox,elbir,elqabaq,elsonra,:elsiya; 

 

Burada  -elox,elbir,elqabaq,elsonra  dəyìşənlərì  –elsiya  yazı  tìpìndən 



olmaqla: 

  elox  –sìyahıda növbətì elementì göstərən ox 

  elox^ -yazı tìpìnìn dìnamìk dəyìşənì olarsa 

onda:müvafìq ìfadələr 

  elox^.uz -tam ədəd tìplì dìnamìk dəyìşən (çayın uzunluõu) 

  elox^.iz -sìyahıda növbətì elementìn oxu 

  elox^.iz^.uz -növbətì çayın uzunluõu və 

  elox^.iz^iz ìsə -daha sonrakı çayın göstərìcìsì və s. kìmì xarakterì-zə 

edìlìr.  

 

Məsələ 28. Tutaq kì, dìskdə yerləşən hər hansı fayla yenì bìr ünsür əlavə 



etmək  lazımdır.  Mövcud  faylın  bazası  əsasında,  daxìl  edìlməlì  ünsürlə 

başlayan yenì fayl  tərtìb etməlì. 

Məsələnì  həll  etmək  üçün:  əvvəlcə  ünsürlərì  fayldan  fəal  yaddaşa 

gətìrmək  və  lazımı  düzənləmə  ìşlərìndən  sonra  kənar  yaddaşda  yenì  fayl 

tərtìb  etmək  lazımdır.  Bu  zaman  faylı  massìv  tìpì  kìmì  deyìl,  (mümkün 

olarsa)  sìyahı  kìmì  götürmək  bìr  çox  cəhətdən  daha  sərfəlì  olardı.  Məsələnì 

həll  etmək  üçün  aşaõıda  tərtìb  edìlmìş  Çaylar_SıyahI  proqramını,  eynì 



zamanda  sìyahılarla    ìşləməyìn  əsas    üsullanı  da  praktìk  olaraq  nümayìş 

etdìrìr. 



program Çaylar_SiyahI; 

uses Crt; 

type 

elsiya =^çaylar; 

çaylar = record 

ad:string[11]; 

uz:integer; 

al:longint; 

iz:elsiya; 

end; 

var 

element,elbir,elqabaq,elyeni:elsiya; 

Bufayl,Bufayl2:text

procedure SiyahITutma(var Bufayl:text); 

begin 

new(element); 

elbir:=element; 



while not eof(Bufayl) do 

begin 

elqabaq:=element; 



with element^ do 

readln(Bufayl,ad,uz,al); 



new(element^.iz); 

element:=element^.iz 



end; 

{Sonuncu – artIq element silinir} 

elqabaq^.iz:=nil 

end; 

procedure EkranaYazma; 

begin 

writeln(`Fayl ayarlandI`); 

writeln; 

element:=elbir; 



while element< > nil do 

begin 

with element^ do 

writeln(ad:11,uz:8,al:12); 

element:=element^.iz 



end; 

end; 

procedure YeniElement; 

begin 

new(yeni); 

writeln; 

writeln(`Yeni elementi yazaq:`); 

with yeni^ do 

begin 

write(`Ad? –11 simvolla`); 

readln(ad); 

write(`Uzunluq?`); 

readln(uz); 

write(`Alan?`); 

readln(al); 

end; 

writeln 


end; 

procedure Faylayazma(var Bufayl:text); 

begin 

element:=elbir; 



while element <> nil do 

begin 

with element^ do 

writeln(Bufayl,ad:11,uz:8,al:12); 

element:= element^.iz 

end; 

writeln; 

writeln(`SiyahI fayla yazIldI. Son.`); 

end; 

begin   

 

{Ba$ proqram.} 

clrscr; 

assign(Bufayl,`Çaylar`); 

assign(Bufayl2,`Çaylar2`); 

reset(Bufayl); 

SiyahITutma(Bufayl); 

EkranaYazma; 

YeniElement; 

{Yeni element yazma} 

element:=elbir; 



yeni^.iz:=element; 

elbir:=yeni; 

EkranaYazma; 

rewrite(Bufayl2); 

FaylaYazma(Bufayl2); 

close(Bufayl); 

close(Bufayl2); 

repeat until keypressed 

end. 

 

Bu  proqram:  əvvəlcə  fəal  yaddaşda  dövr  vasìtəsìlə  bìr  sìyahı  ayarlayıb 

ünsürlərì  mövcud  fayldan  onun  tərkìbìnə  daxìl  edìr.  Burada  tətbìq  olunan 

dövr  tamam  olunca  axıra  əlavə  bìr  element  çıxarılır  və  o  da  əvvəl  verìlmìş 

elqabaq  oxu(yənì  öncəkì  element  göstərìcìsì)  ìlə  elqabaq^.iz:=nil  yazmaqla 

sìlìnìr. Bu üsulla da əvvəlcədən qeyd olunmuş ìstənìlən elementì   

elqabaq^.iz:= elqeyd^.iz  

kìmì bìr ünvandəyìşmə ìlə sìlmək olar. Bu da əlbət kì, sìyahı tìpìnə keçmə 

üsulunun cìddì bìr üstünlüyü sayıla bìlər. 

Beləlìklə sìyahı ekrana verìlərək ona yenì element daxìl edìlìr. Daha sonra 

ìsə onun sahəsìnə yenì element: 

Məs. Dnepr (lazımı sayda ara, sonra ìsə keçìd sədəfì qırpılır), 

2201(keçìd sədəfì qırpılır ), 

504000 (keçìd sədəfì qırpılır). 

kìmì daxìl edìlìr. 

Bu element sìyahıya başdan daxìl edìlərək öz lazımı yerinə: 

   

elyeni^.iz:=elqeyd^.iz; 



   

elqed^.iz:= yeni; 

  kìmì ünvanlanır. 

Tapşırıq:  Proqramda  –yenì  elementìn  sìyahıya  daxìl  edìlərək  oxumaq 

üçün  ekrana  verìlməsì  və  Çaylar1  faylına  köçürməsìnì  təmìn  edən  hìssənì 

tapın,  File  və  Open  menyularından  ìstìfadə  etməklə  Çaylar1  faylını  açıb 

düzgünlüyünü yoxlayın.  

 

Çalışma  28.  26  –cı  çalışmaya  görə  tərtìb  olunmuş  BìzìmÇaylar  faylına 



daha ìkì element əlavə etmək üçün proqram yazın. 

 

3.  Axın  və  növbə.  Axın    -elementlərì  qatarın  vaqonları  kìmì  düzülmüş 



nìzamlı  çoxluq  kìmì  təsəvvür  edìlə  bìlər.  Qatar  daxìl  olduõu  stansìyadan 

gerìyə  necə  çıxırsa,  həmìn  çoxluq  da  qəbul  olunduõu  yaddaşdan  o  cür 

ardıcıllıqla  ìstìfadə  olunur.  Növbə  –  elementlərì  qatarın  vaqonları  kìmì 



düzülmüş  nìzamlı  çoxluq  kìmì  təsəvvür  edìlə  bìlər.  Qatar  daxìl  olduõu 

stansìyadan qabaõa necə qedìrsə, həmìn çoxluq da qəbul olunduõu yaddaşdan 

o cür  ardıcıllıqla  ìstìfadə olunur.  Axın  və  növbə  yaddaşda ox –ünsür tìpì  ìlə 

şərh olunur və ayarlanır.  

 

 


Yüklə 0,77 Mb.

Dostları ilə paylaş:
1   ...   28   29   30   31   32   33   34   35   ...   40




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin