Ўзбекистон Республикаси Олий ва Ўрта Махсус таълим вазирлиги Фаргона политехника институти



Download 1,17 Mb.
bet32/69
Sana28.06.2022
Hajmi1,17 Mb.
#712699
1   ...   28   29   30   31   32   33   34   35   ...   69
Bog'liq
PASCAL

3.14Типлашган файллар


Жорий позиция, туппадан- тугри киритиш файли, индексли файллар

Типлашмаган файлларга аник типдаги файллар киради. Купчилик холларда бу файллар езувлардан иборат булиб, турли берилганлар базасини ташкил этишда куланади.Бундай файли узгарувчилар дастурда куйидагича эълон килинади:


TYPE
FileRec = RECORD


...
END;
VAR
F : file of FileRec;

Агар текисли файлларда беилганлар символлардан ташкил топган булса, типлашмаган файллар езувлардан ташкил топган деб каралади. Бундай берилганларнинг улчов бирлиги сифатида езувнинг узи кабул килинади. Езув узунлиги SizeOf(FileRec) билан аникланади. Бу езувларни катта капиляторлар билан параллел каралганда айтиш мумкинки, суз тупадан - тугри киритиш файли хакида бораяпди.


Seek(VAR F; NumRec: LongInt) процедура F жорий файлнинг NumRec тартибли узгарувчисини урнатади; F - типлашган ва типлашмаган берилганларнинг файл узгарувчиси. Типлшмаган файлни очишда жорий позиция ёзув бошига урнатилади ва 0 чи тартиб номерга эга булади, физик ёзув мантикий ёзув тартиб номеридан биттага кам булади.


Мисол. Телефонлар хакидаги маълумот мисолида типлашмаган файллар билан ишлаш.


PROGRAM BookPhone;


TYPE
StFio = string[10];
StPhone = string[10]; RecBook = RECORD { файл учун ёзув }
Fio : StFio;
Phone: StPhone;
END;
VAR
BookFile : file of RecBook; { RecBook файлли ёзувга узгарувчилар}
Work : RecBook; { ёзувларга утиш учун узгарувчилар }
Ind : byte;

PROCEDURE OutputRec; { жорий ёзувни экранга чикариш }


BEGIN
Read(BookFile, Work);
With Work do
Writeln('ФИО: ',Fio,' телефон: ',Phone);
END; { OutputRec }

PROCEDURE OutputAllRec;


{ файнинг хамма ёзувларини экранга чикариш }
BEGIN
Seek(BookFile, 0); { файлни биринчи мантикий ёзувни урнатиш }
Writeln('*** Телефонлар хакидаги маълумотномани экранга чикариш'); WHILE (NOT Eof(BookFile)) DO
OutputRec;
END; { OutputAllRec }

PROCEDURE AddRec;


{ клвиатурадан санайди ва файлга ёзувни кушади }
BEGIN
Writeln('*** Файл ёзувини чикариш');
WITH Work DO BEGIN
Write('Фамилиясини киритинг: ');
Readln(Fio); { фамилияларни киритинг }
Write('Телефон номерини киритинг: ');
Readln(Phone); { телефон номерини киритиш }
Write(BookFile,Work);
END; { with }
END; { AddRec }

PROCEDURE UpdateRec(NumRec : LongInt);


{ тартиб номери буйича файл ёзувини узгартиринг }
BEGIN
Seek(BookFile, NumRec); { тариб номери буйича файл позициясини урнатиш } Writeln ('-- ёзувнинг эски киймати --');
OutputRec; { ёзувни чикариш ва файл позициясини кейинги ёзувга утказиш }
Seek(BookFile, NumRec); { олдинги позицияга кайтариш
Writeln('-- янги киймат --');
AddRec; { ёзувни узгарган кийматини чикариш }
END; { UpdateRec }

BEGIN { BookPhone }


Assign(BookFile, 'PHONE.DAT'); { PHONE.DAT номли янги файл ташкил килиш}
Rewrite(BookFile);
Write(' PHONE.DAT' ёзувининг 5 та ёзувини ташкил килиш);
FOR Ind := 1 TO 5 DO { клавиатурадан 5 та ёзувни ташкил килиш}
AddRec;
Write('Ёзувларни ташкил килиш тугатилди. ... тугмачасини босинг');
Readln;
OutputAllRec; {хамма ёзувларни экранга чикариш }
Write('Файлнинг 2 та ёзувини узгариши. ... тугмачасини босинг ');
Readln;
UpdateRec(1); {1 -чи тартиб ракам файлнинг 2 чи мантикий ёзувига тугри келади}
Write('Давом эттириш учун хохлаган клвишани босинг...');
Readln;
OutputAllRec; { узгарган файлни экранга чикариш }
Close(BookFile); { файлни ёпиш}
END. { BookPhone }

Керак булса , дасурни асосий кисм иши тугаганидан сунг, PHONE.DAT файлини учириш учун Erase ни кушиш мумкин.


Типлашган файллар укиш - езиш режимида иш юритишни ташкил килишни таъминлайди. Бу имконият амалий масалаларни ечишда кайси типдаги файллар билан ишлаш кулайлигини аниклашда мухим рол уйнайди. Дастурни бажарилишида типлашган берилганлар машина хотирасида берилганлар билан бир хил куринишда булади шунинг учун катор охири еки кареткани кайтариш бошкарувини кузатишнинг хожати йук.
Туппадан-тугри киритиш файллари билан ишлашда кушимча куйидаги воситалардан фойдаланиш мумкин:

Truncate(VAR F)


Бу процедура F файлининг хамма компаненталарини йукотади.


FilePos(VAR F) : LongInt


Юкоридаги функция F файлининг жорий позициясини LongInt типидаги кийматда кайтаради. FileSize(VAR F)


Функция F файлининг улчовини LongInt кийматида кайтаради.


Буш файл учун FileSize 0 кийматни кайтаради. Ioresult оркали ташки ташувчиларга хатоларни тармоклаш учун мурожат килинади.. Ёзув типлашмаган файлнинг охирига ёзилиши учун, жорий файл позициясини файл охирига кучириб куйиш зарур.Янги файл такил этилаётганда хар бир ёзув ташкиллангандан сунг,бу автоматик равишда бажарилади. Агар файл ташкил килиниб булган ва Seek буйича урнатилган файл позицияси (FilePos(F) < FileSize(F)) файлининг охирида турса , у холда файл охири чакирувни Seek(F, FileSize(F)) га кучириш имконини беради. Хар бир файлдаги физик ва мантикий ёзувлвр сони мос тушади, физик ёзув позициялашган тартиб раками мантикий ёзув ракамидан битта кам булади.


Мисол. BookPhone дастури ёзувни файл охирига уловчи AddRectoEnd процедураси билан тулдирилиши мумкин.


PROCEDURE AddRecToEnd;


BEGIN
Seek(BookFile, FileSize(BookFile));
{ жорий позицияни файл охирига урнатиш }
AddRec; END; { AddRecToEnd }

Мисол. Фамилиялари буйича абанентлар руйхатини чикариш дастури. Барилганлар типи олдинги дастурдагидек колади.


PROGRAM FindFio;


CONST
CountRec: integer = 0;
VAR
BookFile: file of RecBook;
Work: RecBook;
Maska: StFio;
BEGIN
Assign(BookFile, 'Phone.dat');
Reset(BookFile); { бор файл очилган }
Write('Ахтариш учун фамилияни киритинг: ');
Readln(Maska);
WHILE (NOT Eof(BookFile)) DO BEGIN
{ тартиблашмаган файлнинг хамма ёзувлари буйича }
Read(BookFile, Work);
WITH Work DO
IF Pos(Maska, Fio) <> 0 THEN BEGIN { топиди }
Inc(CountRec);
Writeln('Фамилия: ',Fio,' телефон: ',Phone);
END;
END; { while }
Writeln(',Maska,' = ',CountRec учун ёзувлар сони );
Close(BookFile);
END. { FindFio }

Ёзувлар тартиблашмаган фамилиялар буйича жойлашганда , кидирув барча файлар буйича кетма-кет олиб борилади. Бу тартибда ёзувни ахтариш анча кийин кечганлиги сабабли, бош файлга нисбатан индексли файлларни такил этишга олиб келади.


Индексли файллар аник калитлар асосида тартибланган ёзув тартиб номерларини уз ичига олади. Бундай курилиш ташки ташувчиларга мурожат этишни енгиллаштиради.

Назорат саволлари


1.Файл нима?


2.Файл кандай эълон килинади?
3.Файл узгарувчиси нима?
4.Кандай файлларга матнли файллар дейилади?
5.Туппадан –тугри киритиш файли нима?
6.Типлашмаган файлни очишда жорий позиция каерга урнатилади?
7. Truncate(VAR F) ни вазифаси нима?
8. FilePos(VAR F) : LongInt ни вазифаси нима?
9. Индексли файллар нима?
10.Типлашган файллар билан ишлашда кушимча кайси воситалардан фойдаланилади.



Download 1,17 Mb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   69




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish