383
OldFile, NewFile : file;
V : array [1..128,1..200] of byte;
Result : integer;
OldName, NewName : string [14];
Begin
writeln (‘İlkin faylın adını verin’);
readln (OldName);
Assign (OldFile, OldName);
Reset (OldFile);
writeln (‘Yeni faylın adını verməli:’);
readln (NewName);
Assign (NewFile, NewName);
Rewrite (NewFile);
Repeat
BlockRead (OldFile, V, 200, Result);
BlockWrite (NewFile, V, Result);
Until Result=0
Close (OldFile);
Close (NewFile)
End.
Bu proqram bir faylın digər fayla sürətlə köçürülməsini təmin edir.
Mətn faylı istisna olmaqla tipli və tipsiz fayllara birbaşa üsulla da müraciət
etmək olar. Bu isə diskdə saxlanılan informasiyadan operativ olaraq istifadə
edilməsini təmin edir.
Birbaşa müraciəti təşkil etmək üçün
seek(F,n)
standart prosedurundan
istifadə edilir. Bu prosedurda n arqumenti F fayl dəyişənilə təyin olunan faylın
elementinin sıra nömrəsini təyin edir. n tam qiymətlər alır və bu ədəd faylın
elementlərinin sayından çox olmamalıdır. Faylın elementləri 0-dan başlayaraq
nömrələnir. Prosedur yerinə yetirildikdə kursor faylın
mövqeyini n-ci elementə
doğru yerini dəyişir və həmin elementin oxunması, redaktəsi icra oluna bilər, n-ci
mövqedən fayla yeni verilən yazıla bilər. Praktikada birbaşa müraciət üçün bu
prosedurdan başqa daha 2 standart funksiyadan istifadə olunur:
1.
FilePos(F)
. Funksiya cari anda F faylında kursorun yerləşdiyi
elementinin nömrəsini təyin edir.
2.
FileSize(F).
Funksiya F faylının ölçüsünün -faylın elementlərinin
sayını təyin edir. Adətən bu funksiyadan faylda elementin olmasını
yoxlamaq üçün istifadə edilir. Əgər
FileSize(F)=0
isə onda fayl boşdur,
yəni
onda heç bir element yoxdur, əks halda faylda elementlər vardır.
Məsələn ,
type tf=file of integer;
procedure sortpuz(name:string);
var f:tf;
i,nkz:longint;
r1,r2:integer;
flag:boolean;
begin
assign(f,name);
reset(f);
nkz:=filesize(f);
384
repeat
flag:=false;
for i:=0 to nkz-2 do
begin
seek(f,i);
read(f,r1,r2);
if r2>r1 then
begin
seek(f,i);
write(f,r2,r1);
flag:=true
end
end;
nkz:=nkz-1
until not flag;
close(f);
end;
begin
sortpuz('c:\azad.txt')
end.
Proqram tam ədədlərdən ibarət faylda nizamlama əməliyyatı aparır.
2.18. Modullar
Turbo Pascal-da proqramın həcminə müəyyən məhdudiyyət vardır. Belə ki,
kompilyator yalnız o proqramları translyasiya edə bilər ki, bu əməliyyat zamanı
maşın kodunun həcmi 64 Kbayt-dan çox olmasın. Bu səbəbdən böyük həcmli
proqramları bir neçə proqram fraqmentlərinin - modulların toplusu şəklində
yaratmaq lazım gəlir.
Modul müstəqil kompilyasiya olunan proqram vahididir.
Modulun mətni “
.pas
” genişlənməsinə malik faylda,
kompilyasiya olduqda isə o,
“
.tpu
” genişlənməsinə malik xüsusi faylda saxlanılır. Əsas proqramdan
uses
işçi
sözü vasitəsilə modulun həm mətninə və həm də onun kompilyasiya olmuş faylına
müraciət olunur. Qeyd edək ki, modulun mətni və ya onun kompilyasiya olmuş
faylı əsas proqramın yerləşdiyi cari kataloqda və ya istifadəçi tərəfindən, Turbo
Pascal proqram mühitinin
Options→
Directories
əmrini
yerinə yetirdikdə
açılan
Directories dialoq pəncərəsinin (şək. 1)
Unit directories sahəsnidə müəyyən
olunan digər kataloqda yerləşə bilər.
Modul vasitəsilə həmçinin tətbiqi proqram kitabxanası yaradılır. Bu
kitabxananın prosedur və funksiyalarına digər proqramlardan müraciət etməklə bir
sıra məsələləri, o cümlədən, riyazi, statistik məsələləri həll etmək,
kompyuter
qrafikasının elementlərindən istifadə etmək olar.
Modul aşağıdakı struktura malikdir:
UNIT <ad
>; {Modulun başlığı}
INTERFACE
IMPLEMENTATION
<icra olunan hissə
>
BEGIN