- misol - 1- dars. Mavzu: Masalalarni kompyuterda yechish bosqichlari

1- misol. Joriy katalogda «Madhiya.txt» nomli fayl hosil qilib, klavia- turadan kiritilgan madhiyamizning 4 satrini faylning alohida satrlariga yozib qo'yuvchi dastur tuzing.
Yechish. Kiritilgan ma'lumotlarni faylning alohida satrlariga yozish uchun WriteLn operatoridan foydalaniladi.
Program Madhiyal;
Var _madh : Text; satr : String; m: integer;
Begin
Assign(_madh, 'Madhiya.txt'); Rewrite(_madh);
For m:=l to 4 do begin
Write('Madhiyamizning m, 'satrini kiriting: '); ReadLn(satr);
WriteLn(_madh, satr); end;
Close(_madh);
End.
Biz tashqi xotirada yangi fayl hosil qilishni ko'rdik. Ba'zan tashqi xotirada saqlanayotgan biror matnli faylni davom ettirish ya'ni, unga yangi
ma'lumotlar qo'shish zarur bo'lib qoladi. Bu holda Rewrite protsedurasi o'rniga Append(f) protsedurasi qo'llanadi. Bu protsedura ko'rsatilgan tashqi xotiradagi faylni «yozish uchun» ochadi. Ko'rsatilgan fayl tashqi xotirada bo'lmasa, xatolik yuz beradi. Demak, Append protsedurasi yordamida ochilishi lozim bo'lgan fayl tashqi xotirada albatta mavjud bo'lishi shart.
2-misol. 1-misolda hosil qilingan «Madhiya.txt» faylini oching va madhiyamizning 4 satri davomiga naqoratni qo'shib qo'yuvchi dastur tuzing.
Yechish. Faylni davom ettirish uchun uni Append protsedura bilan ochiladi.
Program Madhiya2;
Var f : Text; naqorat: String; m:integer;
Begin
Assign(f, 'Madhiya.txt'); Append(f);
For m:=l to 4 do begin
Write('Naqoratning m, 'satrini kiriting: '); ReadLn(naqorat);
WriteLn(f, naqorat); end;
Close(f);
End.
Reset(f) protsedurasi diskdagi fayllarni o'qish uchun ochadi. U Assign protsedurasi yordamida tashqi xotiradagi biror faylga bog'langan bo'lishi kerak. Ko'rsatilgan fayl tashqi xotirada bo'lmasa, xatolik yuz beradi.
O'qish uchun ochilgan fayldan ma'lumotlar quyidagi operatorlar yordamida o'qiladi:
Read(f, Co'zgaruvchilar ro'yxati>); va ReadLn(f, Co'zgaruvchilar ro'yxati>);
Bunda f — faylli o'zgaruvchi. Co'zgaruvchilar ro'yxati> — 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'llaniladi. 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 Uchburchak_yuzi;
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 larning qiymatlari «uchbur.in» faylidan o'qib olindi} Close(f); {« 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'quv chining 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 avvalgi 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-ovquvchining 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 noma'lum. Bunday hollarda Paskalning Eof(f) funksiyasi qo'llaniladi. Eof — mantiqiy funksiya 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); WriteLn(fam); end;
Close(fio);
End.
Dasturdagi takrorlash operatorining sharti — Not(eof(fio)) «yolg'on» qiymat qabul qilmaguncha, ya'ni eof(fio) funksiyasi «rost» qiymat qabul qilmaguncha takrorlanish davom etadi. Eof(fio) funksiyasi «rost» qiymat qabul qilishi bilan, ya'ni «sinf.txt» faylida o'qish uchun ma'lumotlar tugashi bilan takrorlanish to'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.
|