Read(f, ); va ReadLn(f, ); Bunda f - faylli o'zgaruvchi. - bitta yoki o'zaro vergul bilan ajratilgan bir nechta o'zgaruvchilar. Mazkur operatorlar ko'rsatilgan o'zgaruvchilarning qiymatlarini fayldan o'qib oladi.
Read operatori asosan faylda sonli ma'lumotlar yozilgan bo'lsa, ya'ni faylning satri o'zaro probel bilan ajratilgan sonlardan iborat bo'lsa qo'l-laniladi. Read operatori bu sonlarning har birini alohida o'qib oladi. Bitta satrdagi ma'lumotlar tugagach keyingi satrga o'tadi.
3- misol. Tomonlarining uzunliklari «uchbur.in» faylida berilgan uchburchak yuzini hisoblash dasturini tuzing. «uchbur.in» fayli bitta satrdan iborat bo'lib, unda uchburchak tomonlarining uzunliklarini ifodalovchi uchta son o'zaro probel bilan ajratib yozilgan.
Yechish. «uchbur.in» faylidagi ma'lumotlarni o'qish uchun Read operatoridan foydalaniladi. Uchburchak yuzini Geron formulasidan foydalanib hisoblanadi.
Program Uchburchakyuzi;
Var f: Text;a, b, c, yp, s : Real;
Begin
Assign(f, 'uchbur.in');
Reset(f); {«uchbur.in» fayli o'qish uchun ochildi}
Read(f, a); Read(f, b); Read(f, c);
{a,b,c laming qiymatlari «uchbur.in» faylidan o'qib olindi} Close(0;{« uchbur.in» fayli yopildi }
yp:=(a+b+c)/2; s:=sqr(yp*(yp-a)*(yp-b)*(yp-c)); WriteLn('Uchburchak yuzi=', s);
End. ReadLn operatori fayldagi satrni to'lig'icha o'qiydi. Matnli fayllardan satrlarni tartib bilan navbatma-navbat o'qish mumkin. Masalan, faylning 10-satrini o'qish uchun undan oldingi 9 ta satr albatta o'qib olinishi kerak.
4- misol. «sinf.txt» faylida 9-sinf o'quvchilarining ro'yxati (har bir satrda bittadan o'quvchining familiyasi) berilgan. Shu ro'yxatdagi 12-o'quvchining familiyasini ekranga chiqaruvchi dastur tuzing.
Yechish: 12-o'quvchining familiyasi «sinf.txt» faylining 12-satrida yozilgan. Uni o'qib olish uchun awalgi 11 ta satrni o'qib olish kerak. Buning uchun parametrli takrorlash operatoridan foydalaniladi. Program Sinf;
var fio : Text; i : Integer; fam : String; Begin
Assign(fio, 'sinf.txt'); Reset(fio);
For i:=l to 11 Do ReadLn(fio, fam);
ReadLn(fio, fam); Close(fio);
WriteLn(" 12-o'quvchining familiyasi:', fam);
End. Ushbu misolda «sinf.txt» faylida berilgan barcha o'quvchilarining familiyalarini ekranga chiqarish talab etilsa, muammo kelib chiqadi. Chunki «sinf.txt» fayli necha satrdan iboratligi nomaium. Bunday hollarda Paskalning Eof(0 funksiyasi qo'llaniladi. Eof - mantiqiy runksiya bo'lib, faylda o'qish uchun ma'lumotlar qolmagan bo'lsa «Rost», aks holda «Yolg'on» qiymatini qabul qiladi.
5- misol. «sinf.txt» faylida 9-sinf o'quvchilarining ro'yxati berilgan. Ro'yxatdagi barcha o'quvchilarning familiyalarini ekranga chiqaruvchi dastur tuzing.
Yechish. Shart bo'yicha takrorlash operatori - While dan foydalaniladi.
Program Sinf;
var fio : Text; fam : String;
Begin
Assign(fio, 'sinf.txt'); Reset(fio); While Not(eof(fio)) Do begin ReadLn(fio, fam); Write Ln(fam);end;
Close(fio); End. Dasturdagitakrorlashoperatoriningsharti - Not(eof(fio)) «yolg'on» qiymatqabulqilmaguncha, ya'nieof(fio) funksiyasi «rost» qiymatqabulqilmagunchatakrorlanishdavometadi. Eof(fio) funksiyasi «rost» qiymatqabulqilishibilan, ya'ni «sinf.txt» faylidao'qishuchunma'lumotlartugashibilantakrorlanishto'xtatiladi. Zarur bo'lsa, bitta dasturda bir nechta faylni ochish mumkin. Agar ular navbat bilan, ya'ni bittasi yopilgandan keyin ikkinchisi ochiladigan bo'lsa, bitta faylli o'zgaruvchidan foydalanish mumkin. Aks holda ularning har biriga alohida faylli o'zgaruvchi tavsiflanishi kerak.
Do'stlaringiz bilan baham: |