linkedin facebook linkedin facebook nod32

Pascalda fayl bilan ishlash

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2015-01-12

Pascalda fayl bilan ishlash

Shu paytgacha haralgan hosilaviy turlarning muhim xususiyati shundan iboratki, ular oldindan berilgan chekli komponentalardan iborat ekanligidir. Bu esa programma bajarilmasdan oldin shu turdagi o‘zgaruvchilarning qiymatlari uchun mashina xotirasidan zarur hajmdagi joy ajratish imkonini berar edi. Ammo ma’lum bir sinf masalalari uchun oldindan komponentalar sonini aniqlash imkoni yo‘q, ular masalani yechish jarayonida aniqlanishi mumkin. Bu hollarda bir xil turdagi ixtiyoriy elementlar ketma-ketligidan iborat bo‘lib, ularning uzunligi oldindan noma’lum bo‘lib, hisoblash jaryonida aniqlanadigan turga zarurat tug‘iladi. Paskal tilida bu talabga javob beruvchi tur - fayl turi aniqlangan. Standart Paskalda faqat  ketma-ket murojat qiluvchi fayllar haraladi, ya’ni fayl bo‘yicha ketma-ket birinchi elementidan boshlab haraladi. Masalan faylni 10 elementiga borish uchun undan avvalgi 9 ta elementini harab chiqish kerak. Bunday fayllar ketma-ket fayllar yoki ketma-ket murojaat qilish usulidagi fayllar deyiladi. Ketma-ket faylda har bir urinishda faqat keyingi bitta  elementga murojaat qilish mumkin. Agarda masalani yechish jarayonida faylning biror oldingi elementiga murojaat qilishga to‘g‘ri kelsa, u holda faylni boshiga qaytib birinchi elementdan boshlab ketma-ket harakatlanib kerakli elementga kelinadi.
Paskalda faylli tur quyidagi ko‘rinishda aniqlanadi:
<faylli turi> ::=  file of < komponentani turi> yoki
packed file of <komponentani turi>
bu yerda file, of, packed - xizmatchi so‘zlar, <komponentani turi> - esa Paskaldagi fayl turidan yoki fayl turini o‘z ichiga oluvchi turdan farqli har qanday turning nomi yoki uning berilishi.
Odatda faylli tur ishlatishga turlar bo‘limida yoki o‘zgaruvchilar bo‘limida kiritiladi, masalan:
1)  type letter = ‘a’. . ’z’;
var tekst: file of letter;
2)   var tekst: file of ‘a’. . ’z’;
Fayllar - bu shunday vositaki, u yordamida programma tashqi dunyo bilan aloqa bog‘laydi.
Fayl turidagi o‘zgaruvchilar ustida hech qanday amal aniqlanmagan. Faylning komponentalari ustida esa komponentaning turiga mos amallar aniqlangan bo‘lishi mumkin.
Shuni ta’kidlash kerakki, Turbo-Paskal tilida programmaning tashqi muhit bilan aloqasi mantiqiy va fizik fayllar apparati orqali amalga oshiriladi.
Turlangan va turlanmagan fayllar Turlangan fayllar sonlar, belgilar va ulardan tashkil topgan strukturalarning mashinaviy tasviridan iborat. Ular ma’lumotlarni EHM xotirasida qanday saqlansa, xuddi shunday holda saqlanadi. Shuning uchun turlangan fayllar yordamida programmaning ishchi xotirasi va diskdagi ma’lumotlarni ayirboshlash mumkin, lekin to‘g‘ridan-to‘g‘ri ma’lumotlarni ekranga chiqarish mumkin emas.
Turlanmagan fayllar ham ma’lumotlarni mashinaviy tasviridan iborat. Bu faylning turlangan fayldan farqi shundan iboratki turlangan fayl oldindan e’lon qilingan turdagi berilgan bilan ishlaydi, turlanmagan fayllar esa, ma’lumotlarning tuzilishiga va mohiyatiga bog‘liq bo‘lmagan baytlar majmuasi bilan ishlaydi.
Ixtiyoriy turdagi fayl turlarda ma’lumotlarni saqlashning eng kichik birligi bayt hisoblanadi. Fayllar bilan ishlash tamoyili hamma fayllar uchun bir xil bo‘lib eng avval fayl o‘zgaruvchilarni fizik fayllar bilan bog‘lash kerak.
Programmada e’lon qilingan fayl o‘zgaruvchilar qiymat berish operatorlarida qatnashmasligi lozim.
Protsedura funksiyaning sarlavhasida ramziy parametr sifatida ishlatilayotgan ixtiyoriy turdagi fayl o‘zgaruvchilar  var  parametr sifatida e’lon qilinishi kerak.
Turlangan fayl sintaksisi quyidagicha aniqlanadi:
<turlangan faylni berilishi> ::= file of < tur>
Turlanmagan fayl sintaksisi esa quyidagicha aniqlanadi:
<turlanmagan faylni berilishi> ::=  file
Turbo-Paskal tilida ixtiyoriy turdagi fayllar uchun standart protseduralar aniqlangan bo‘lib, ulardan eng ko‘p ishlatiladiganlari quyidagilardan iborat:
assign(f,s)   -  f faylli o‘zgaruvchini fizik fayl bilan bog‘laydi;
reset(f)        - mantiqiy fayl f ni o‘qish uchun ochadi;
rewrite(f)    - mantiqiy fayl f ni yozish uchun ochadi;
close(f)       - mantiqiy fayl f uchun  o‘qish-yozish kanalini yopadi.
Turlangan fayl ochilgandan keyin ma’lumotlarni kiritish - chiqarish quyidagi standart operatorlar yordamida amalga oshiriladi:
read(f,<nomlar ruyxati>), write(f,<nomlar ro‘yxati>).
Birinchi argument - mantiqiy faylni nomi, undan keyin esa fayl komponentasini turiga mos keluvchi o‘zgaruvchi (o‘zgaruvchilar) bo‘lib, unga o‘qish (read) paytida faylning navbatdagi qiymati yoziladi, yoki teskarisi yozish (write) paytida o‘zgaruvchi qiymati faylga yoziladi.
Turlanmagan fayllar uchun quyidagi protseduralarni ishlatish mumkin, ya’ni reset(f, buf) yoki rewrite(f, buf), bunda buf-faylga bir marta murojaat qilganda o‘qish yoki unga yozishdagi baytlar soni (blok o‘lchami). Blokning eng kichik o‘lchami 1- bayt bo‘lishi mumkin.
Turlanmagan fayllarda ma’lumotlarni o‘qish yoki unga yozish uchun quyidagi protseduralarni ishlatish kerak:
blockread(f, d, c, r) va blockwrite(f, s, c, w)
bu yerda f-fayl nomi, d-ma’lumotlar o‘qiladigan o‘zgaruvchi, s-ma’lumotlar yoziladigan o‘zgaruvchi, s-o‘qilishi kerak bo‘lgan bloklar soni, r va w o‘zgaruvchilar esa qatnashishi shart bo‘lmagan o‘zgaruvchilar bo‘lib, ular o‘qish-yozish protseduralari yordamida o‘qilgan (yozilgan) bloklar sonini bildiradi.
Matn fayli.Matn fayli deb - ASCII kodlari hamda kengaytirilgan va boshharuvchi kodlardan tashkil topgan faylga aytiladi. Matn fayllari satrlar bo‘yicha tashkil topgan bo‘lib, fayl oxiri deb nomlanuvchi maxsus koddan tashkil topgan bo‘ladi. Matnli fayl ixtiyoriy ma’lumotlarni (sonni, belgini, satrni) belgilar ketma-ketligi ko‘rinishda saqlaydi. Masalan, Paskal tilida yozilgan programma ham matnli fayl hisoblanadi. Undan tashhari ma’lumotlarni bir qismi satrlarga ham bo‘linishi mumkin. Satr oxirini alomati bo‘lib 13 kod hisoblanadi va u satrni o‘tkazish belgii (10 kod) bilan birlashtirilishi mumkin, matnli faylning oxiri “z”(26 kod) belgi bilan belgilanadi. Son, satr va mantiqiy qiymatlarni yozishda ular belgili ko‘rinishga o‘zgartiriladi, o‘qishda esa son va satrlar matnli ko‘rinishdan mashinaviy ko‘rinishga avtomatik ravishda o‘zgartiriladi.
Matnli fayllar bilan ishlashda faylli o‘zgaruvchini kiritish kerak:
var f: text;
va uni fizik fayl bilan assign protsedurasi orqali bog‘lash kerak, undan keyin faylni ochish mumkin. Shuni ta’kidlash kerakki matnli fayl bilan “file of char” turidagi turlangan fayl bilan bir xil emas.
Matnli faylni reset, rewrite yoki append(f)  protseduralari orqali ochish mumkin, bunda oxirgi protsedura matnli f fayl oxiriga yozish uchun ochadi. Undan tashhari matnli faylni ochishdan oldin o‘qish-yozish amallari uchun buferning o‘lchamini quyidagi protseduralar orqali o‘rnatish mumkin:
settextbuf(f, nbuf, buf);
bu yerda f -matnli fayl nomi, buf - buferga mo‘ljallangan o‘zgaruvchining nomi, nbuf - buferning baytdagi o‘lchami.
Matnli va sonli ma’lumotlarni o‘qish va yozish quyidagi protseduralar yordamida amalga oshiriladi:
o‘qish: read(f,x),  read(f,x1,x2,. . . ,xn) yoki satrni o‘tkazish bilan -readln(f,x), readln(f,x1,x2,. . . ,xn).
yozish:  write(f,x), write(f,x1,x2,. . . ,xn) yoki satrni o‘tkazish bilan -writeln(f,x),  writeln(f,x1,x2,. . . ,xn).

1 misol. Berilgan d diskda misol1.txt faylni hosil qiling

2.1 3.4 2.9

3.10 2 63

1 21 2.3
 
faylning elementlari yig‘indisi topilsin.

Program N1; {faylni o‘qish}
Var
f1:text;
s,x: real;
Begin
S:=0;
Assign(f1, ‘d:\misol1.txt’);
Reset (f1);
While  not eof  (f1)  do  begin
While  not eoln  (f1)  do 
begin
read (f1,x);
S:=s+x;
End;
Readln (f1);  {yangi satrga o‘tish}
End;
Write(s);
Close (f1);
End.

2 misol. Berilgan a=234 va b=10,3 sonlarni d diskda misol2.txt faylni hosil qiling.

Program N2; {Faylni yozish}
Var
F2:text;
A: integer;
B: real;
Begin
A:=234;  b:=10,3;
Assign(f2, ‘d:\misol2.txt’);
Rewrite (f2);
Write(f2,a:3, b:3:1);
Close (f2);
End.

3 misol. Berilgan d:\misol1.txt


1 5 65

21 2 3

4 5 6 
satrlarining yig‘indisini, uning yoniga ustun ko‘rinishida yozib, yangi d:\misol1.txt fayli hosil  qilinsin va natija.txt ga chiqaring.

Program N3;
Var
f1, f2:text;
s,x: integer;
Begin
Assign(f1, ‘d:\misol1.txt’);
Assign(f2, ‘d:\natija.txt’);
Reset (f1);
Rewrite (f2);
While  not eof  (f1)  do  begin
S:=0;
While  not eoln  (f1)  do 
begin
read (f1,x);
Write(f2,x:3);
S:=s+x;
End;
Write(f2,s:5);
Readln (f1);
End;
Close (f1);
Close (f2);
End.

1408 marta o`qildi.

Foydalanuvchi ismi: Rivoj 203
Qo`shilgan sana: 2015-04-16

ajoyib

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений