Protsedura qism dasturi qism dasturda bir necha natija hosil qilish kerak bo‘lgan hollarda ishlatiladi va u asosiy dasturda struktura bo‘yicha qism dastur bo‘limida, yani o‘zgaruvchilar va operatorlar bloki bo‘limlari orasida tasvirlanadi.
Har bir protsedurani tasvirlash sarlavhadan boshlanadi. Protsedura sarlavhasi va umumiy ko‘rinishi quyidagicha bo‘ladi:
PROCEDURE [()] ;
end;
Bu yerda PROCEDURE – xizmatchi so‘z; - protseduraning nomi;
- tiplari ko‘rsatilgan berilganlar va natijalarni ifodalaydigan nomlar tiplari bilan sanab o‘tiladi.
Berilganlar quyidagicha yoziladi:
::=:[;:…];
Berilganlarni parametr qiymat deb ham ataladi.
Natijalarni ifodalaydigan nomlar quyidagicha yoziladi:
::=:[;:…];
Natijalarni parametr o‘zgaruvchi deb ham ataladi.
Soxta parametrlar ro‘yxatida parametr protsedura va parametr funksiyalar ham bo‘lishi mumkin.
Protsedura qism dasturiga murojaat
Protsedurani bajarish uchun asosiy dasturning kerakli joyidan unga murojaat qilish kerak. Murojaat quyidagicha amalga oshiriladi:
[()];
Bunda haqiqiy parametrlar ro‘yxati va protseduradagi soxta parametrlar ro‘yxati orasida to‘liq moslik bo‘lishi shart, yani ular soni bir xil bo‘lishi, kelish tartiblari mos tushishi va tiplari ham mos ravishda bir xil bo‘lishi kerak. Ro‘yxatda parametrlar vergul bilan ajratiladi. Protsedura chaqirilganda soxta parametrlar o‘rniga haqiqiy parametrlar qo‘yiladi.
Berilganlar(parametr qiymat) va natijalar(parametr o‘zgaruvchi)ni yuqoridagidek ajratishni quyidagicha tushuntirish mumkin:
Berilganlar protsedura ichida foydalanish uchun kerak, yani protsedura asosiy dasturdan chaqirilganda berilganlar(soxta parametrlar) asosiy dasturdan kelayotgan aniq parametrlar bilan almashtiriladi. Ushbu parametrlar protsedura ichida o‘zgarishi ham mumkin, bu o‘zgarish protseduradan chiqishda hisobga olinmaydi. Natijalar(parametr o‘zgaruvchi) ro‘yxatidagi nomlarga esa asosiy dasturdan qiymat uzatilishi bilan bir qatorda protsedurada hosil bo‘lgan natijani asosiy dasturga uzatiladi ham.
Masalan, ushbu dasturni karaylik:
9-13.docx
MAVZU: PROTSEDURA.
PROTSEDURAFUNKSIYA.
Protsedura qism dasturi qism dasturda bir necha natija hosil qilish kerak
bo‘lgan hollarda ishlatiladi va u asosiy dasturda struktura bo‘yicha qism dastur
bo‘limida, yani o‘zgaruvchilar va operatorlar bloki bo‘limlari orasida tasvirlanadi.
Har bir protsedurani tasvirlash sarlavhadan boshlanadi. Protsedura sarlavhasi
va umumiy ko‘rinishi quyidagicha bo‘ladi:
PROCEDURE [()] ;
end;
Bu yerda PROCEDURE – xizmatchi so‘z; protseduraning nomi;
tiplari ko‘rsatilgan berilganlar va natijalarni
ifodalaydigan nomlar tiplari bilan sanab o‘tiladi.
Berilganlar quyidagicha yoziladi:
::=:[;:…];
Berilganlarni parametr qiymat deb ham ataladi.
Natijalarni ifodalaydigan nomlar quyidagicha yoziladi:
::=:[;:…];
Natijalarni parametr o‘zgaruvchi deb ham ataladi.
Soxta parametrlar ro‘yxatida parametr protsedura va parametr funksiyalar ham
bo‘lishi mumkin.
Protsedura qism dasturiga murojaat
Protsedurani bajarish uchun asosiy dasturning kerakli joyidan unga murojaat
qilish kerak. Murojaat quyidagicha amalga oshiriladi:
[()];
Bunda haqiqiy parametrlar ro‘yxati va protseduradagi soxta parametrlar ro‘yxati
orasida to‘liq moslik bo‘lishi shart, yani ular soni bir xil bo‘lishi, kelish tartiblari
mos tushishi va tiplari ham mos ravishda bir xil bo‘lishi kerak. Ro‘yxatda
parametrlar vergul bilan ajratiladi. Protsedura chaqirilganda soxta parametrlar
o‘rniga haqiqiy parametrlar qo‘yiladi.
Berilganlar(parametr qiymat) va natijalar(parametr o‘zgaruvchi)ni
yuqoridagidek ajratishni quyidagicha tushuntirish mumkin:
Berilganlar protsedura ichida foydalanish uchun kerak, yani protsedura asosiy
dasturdan chaqirilganda berilganlar(soxta parametrlar) asosiy dasturdan kelayotgan
aniq parametrlar bilan almashtiriladi. Ushbu parametrlar protsedura ichida
o‘zgarishi ham mumkin, bu o‘zgarish protseduradan chiqishda hisobga olinmaydi.
Natijalar(parametr o‘zgaruvchi) ro‘yxatidagi nomlarga esa asosiy dasturdan qiymat uzatilishi bilan bir qatorda protsedurada hosil bo‘lgan natijani asosiy dasturga
uzatiladi ham.
Masalan, ushbu dasturni karaylik:
Program PR;
X:integer;
Procedure izm(y:integer);
Begin
Y:=1 end;
Begin
X:=0; izm(x);
Writeln(x); end.
Ushbu dasturda protseduradagi y:=1 o‘zgarish asosiy dasturga qaytarilmaydi,
chunki soxta o‘zgaruvchi y var so‘zi bilan tavsiflangan emas, shuning uchun x
ning uz qiymati, yani 0 qiymat bosmaga chiqariladi.
Endi dasturni quyidagicha o‘zgartiramiz:
Program PR;
X:integer;
Procedure izm(var y:integer);
Begin
Y:=1 end;
Begin
X:=0; izm(x);
Writeln(x); end.
O‘zgaruvchi var so‘zi bilan tavsiflanganda va asosiy dasturdan murojaat qilinganda
ularning qiymati emas, balki adreslari beriladi. Natijada soxta parametrlarning
hamma o‘zgarishlari aniq parametrlarga ham tegishli bo‘ladi. Shuning uchun endi
ushbu dastur bajarilganda bosmaga x ning 1 ga teng qiymati chiqariladi.
Endi mavzu boshida keltirilgan dasturni protseduradan foydalanib tuzaylik:
Program line1;
Var i:integer;
Procedure line(n:integer;c:char);
Begin
For i:=1 to n do
Write(c); writeln; end;
Begin
Line(50,’*’);
Line(40,’‘);
Line(50,’*’);
Line(40,’+’);
Line(50,’=’); end.
Endi ushbu dasturdagi protsedurada 2 ta parametr qiymat bor, natija esa
asosiy dasturga qaytarilmaydi, balki proseduraning o‘zida bosmaga chiqarish
tashkil etilgan. Parametrsiz protseduralar
Protseduraning umumiy ko‘rinishidan ko‘rinib turibdiki,
protsedura
parametrsiz ham bo‘lishi mumkin. U holda protsedura sarlavhasida uning faqat
nomi bo‘ladi:
Procedure ;
Bunday hollarda protsedura ichida ishlatiladigan malumotlar oldindan asosiy
dasturda aniqlangan bo‘lishi kerak. Masalan, bizga ikkita uchburchak yuzini uning
tomonlari orqali hisoblash kerak bo‘lsin. Dasturni quyidagicha tuzish mumkin:
Program s;
Var a1,b1,c1,a2,b2,c2,s,a,b,c,p:real;
Procedure str;
Begin
P:=(a+b+c)/2; s:=sqrt(p*(pa)*(pb)*(pc)); write(s); end;
Begin
read(a1,b1,c1); a:=a1;b:=b1; c:=c1; str;
read(a2,b2,c2); a:=a2;b:=b2; c:=c2; str;
end.
Ushbu dasturda p o‘zgaruvchi faqat protsedura ichida kerak bo‘lganligi uchun u
shu protsedura uchun lokal hisoblanadi. Uni protsedura ichida elon kilsa ham bular
edi.
Yuqoridagi dasturni parametrlar ishlatib quyidagicha ham tuzish mumkin:
Program s2;
Var a1,b1,c1,a2,b2,c2,s1,s2:real;
Procedure str1(a,b,c:real; var s:real);
Var p:real;
Begin
P:=(a+b+c)/2;
S:=sqrt(p*(pa)*(pb)*(pc)); end;
Begin
Read(a1,b1,c1); str1(a1,b1,c1,s1); writeln(s1);
Read(a2,b2,c2); str1(a2,b2,c2,s2); writeln(s2);
End.
Protseduraga parametr sifatida massivlarni ham uzatish mumkin. Lekin
protsedurada massivni quyidagicha tavsiflash mumkin emas:
Procedure umnoj(a:array[1..10,1..10] of real);
Bu shuning bilan bog‘liqki, prosedura etalonida parametr qiymat va parametr
o‘zgaruvchilar faqat tip identifikatori bilan ishlatiladi. Shuning uchun bunday
hollarda quyidagicha yul to‘tish mumkin:
Const n=10;
Type matrix=array[1..n,1..0] of real;
Endi protsedura sarlavhasi quyidagicha yozilishi mumkin:
Procedure umnoj(a:matrix); Endi misol sifatida massiv elementlari ichidan eng kattasini topish uchun
protseduradan foydalanib dastur tuzaylik:
Program s3;
Const n=20;
Type mas=array[1..n] of real;
Var max:real; a: mas; j:integer;
Procedure max1(b:mas; var m:real);
Var i: integer;
Begin
M:=b[1]; for i:=2 to n do
If b[i]>m then m:=b[i]; end;
Begin
For j:=1 to n do read(a[j]);
Max(a;max); writeln(‘max=’,max); end.
Ushbu dasturda n soni protsedura ichida ham, asosiy dasturda ham ishlaydi,
shuning uchun uni parametr sifatida uzatib utirish shart emas. Agar bordiyu
protsedura bir necha marta chaqirilib, har birida elementlar soni har xil bo‘lganida
parametr sifatida kiritish zarur bo‘lgan bular edi.
Protseduradan foydalanganda quyidagi izoxlarni hisobga olgan ma’qul:
1. Agar protsedura soxta parametrlarga ega bo‘lmasa, uning sarlavhasida ham,
protsedurani chaqirganda ham qo‘yilmaydi;
2. Agar ketmaket keluvchi bir necha formal parametrlar bir tipga ega bo‘lsa, shu
parametrlarni vergul bilan ajratib yozilib, oxirida bir marta tipni ko‘rsatish
mumkin. Xuddi shu jarayon VAR so‘zidan keyin keluvchi parametrlarga ham
tegishli;
3. Protseduraning oxirgi operatori bajarilgandan keyin boshqarish protsedura
chaqirilgan joyga qaytariladi;
4. Protseduradan chiqqandan keyin protsedura ichida ishlatilgan lokal parametrlar
qiymatlari aniqlangan emas.
FUNKSIYA QISM DASTURI
Funksiya bu shunday qism dasturki, bunda bitta natija chiqadi va u funksiya
qism dasturining nomida hosil bo‘ladi. Shuning uchun funksiya qism dasturi
protsedura qism dasturining xususiy holi bo‘lib, undan farqi shuki, birinchidan,
funksiya qism dasturining natijasi bitta qiymatdan iborat bo‘ladi. Protsedura qism
dasturida esa natija bitta yoki bir nechta bo‘lishi mumkin. Funksiya qism
dasturining natijasi asosiy dasturga funksiyaning natijasi sifatida beriladi.
Protsedura qism dasturi natijalari esa uning parametrlari qiymati sifatida hosil
bo‘ladi.
Funksiya qism dasturini aniqlanishi protsedura qism dasturini aniqlanishiga
uxshaydi va u ham sarlavha va blokdan iborat bo‘ladi. Funksiya qism dasturining umumiy ko‘rinishi quyidagicha bo‘ladi:
FUNCTION ():;
end;
Bu yerda FUNCTION – xizmatchi so‘z, funksiya nomi, kiritiladigan soxta parametrlar ro‘yxati, funksiya
natijasi tipi. Natija funksiya nomida hosil bo‘ladi. Bundan tashqari, funksiyani
parametrsiz ko‘rinishda ham yozish mumkin:
FUNCTION :;
Har ikkala holda ham funksiya natijasi funksiya qism dasturi tanasida funksiya
nomiga hech bo‘lmaganda bir marta o‘zlashtirilishi shart.
1 – misol. y=xn ifodani hisoblashni funksiya qism dasturi ko‘rinishida ifodalang.
Bu yerda n – butun son.
Funksiya qism dasturini quyidagicha ifodalash mumkin:
Function step(n:integer; x:real): real;
Var i: integer; y:real;
Begin
Y:=1;
For i:=1 to n do
Y:=y*x;
Step:=y;
End;
Ushbu funksiya qism dasturining nomi step bo‘lib, unda soxta parametrlar ikkita, n
va x dir. Funksiya qism dasturi natijasi tipi esa umumiy holda real – haqiqiy deb
elon qilingan, chunki x soxta parametri ham haqiqiy deb elon qilingani uchun, uni
almashtiradigan haqiqiy parametr ham haqiqiy tipda bo‘ladi. Funksiya qism dasturi
uchun lokal hisoblangan u o‘zgaruvchida hosil bo‘lgan natija funksiya qism dasturi
nomi step ga o‘zlashtiriladi.
Oxirgi natija albatta funksiya nomiga o‘zlashtirilgan bo‘lishi shart va u funksiya
nomida asosiy dasturga qaytariladi. Lokal o‘zgaruvchi shu funksiya ichida
aniqlangan bo‘ladi va funksiyadan chiqqandan keyin uning qiymati aniqlanmagan
bo‘ladi.
Funksiya qism dasturiga murojaat ifodani hisoblash kerak bo‘lsin. Bunda yuqoridagi step qism
Funksiya qism dasturiga murojaat uning nomi orqali amalga oshiriladi.
Funksiyaga murojaat qilinadigan joyda funksiyaning nomi yoziladi va undan keyin
qavs ichida haqiqiy parametrlar yoziladi. Agar funksiya qism dasturi parametrsiz
ko‘rinishda bo‘lsa, u holda faqat uning nomi yoziladi va qavslar ham quyilmaydi.
Funksiya qism dasturidagi soxta parmetrlar qanday tartibda keltirilgan bo‘lsa, shu
funksiya qism dasturini chaqiraetganda ham haqiqiy parametrlar shunday ketma
ketlikda kelishi va tiplari ham mos tushishi kerak. Agar ikkita va undan ko‘p
parametrlar ro‘yxatda bir xil tipda bo‘lsa, ularni bitta tavsifga kiritsa bo‘ladi.
2 – m i s o l .
z=(a5+a5)/am
dasturidan foydalanilsin. Bu yerda a – haqiqiy, m – butun ).
Ushbu misolning dasturi quyidagi ko‘rinishda bo‘lishi mumkin:
Program step1;
Var m:integer;
A,r:real;
Function step(n:integer; x:real): real;
Var i: integer; y:real;
Begin
Y:=1;
For i:=1 to n do
Y:=y*x;
Step:=y;
End;
Begin
Read(a,m);
Z:=step(5,a)+step(5,1/a);
If m=0 then r:=1 else if m>0 then r:=step(m,a) else r:=step(m,1/a);
Z:=z/r;
Writeln(‘z=’,z);
End.
Ushbu dasturda step(5,a) murojaat orqali a5 qiymat, step(5,1/a) orqali esa a5
qiymat hisoblanyapti, so‘ng m ning 0, manfiy yoki musbat bo‘lishiga karab am
qiymat hisoblanyapti. Shunda qilib step funksiya qism dasturiga 3 marta murojaat
qilinyapti.
Protsedura va funksiya qism dasturlarini uz ichiga olgan asosiy dasturda
nom tanlaetganda lokal va global parametrlarning bir xil bo‘lmagani ma’qul. Funksiyani aniqlaganda uning nomiga natijani o‘zlashtirish kerak deb
yuqorida aytib utdik. Bunday manoda funksiya oddiy o‘zgaruvchini eslatadi. Lekin
funksiya ifoda ichida qatnashsa, bu funksiyani chaqirish deb tushuniladi. Odatda
natija birorbir boshqa o‘zgaruvchida hosil qilinib, so‘ng shu natija funksiya
nomiga o‘zlashtirilgani ma’qul. Masalan, quyida faktorialni hisoblovchi funksiyani
keltiraylik:
FUNCTION FAK(N:INTEGER):INTEGER;
VAR I,K:INTEGER;
BEGIN
K:=1;
FOR I:=2 TO N DO K:=K*I;
FAK:=K;
END;
Bu yerda takrorlash operatori ichida K o‘zgaruvchida faktorial hosil qilinyapti va
oxirgi natija funksiya nomiga o‘zlashtirilyapti.
MAVZU: FAYLLAR VA ULAR
BILAN ISHLASH. TURLANGAN
VA TURLANMAGAN FAYLLAR.
MATNLI FAYLLAR.
Fayl
fundamental
bu malumotlarning
strukturalaridan biri.
Kompyuterlarning dastur bilan ishlashi, tashqi kurilmalar bilan aloqasi fayl
strukturasiga asoslangandir.
Fayllar quyidagi masalalarni yechishga asoslangandir:
1. Qiymatlarni boshqa dasturlar foydalanishi uchun saqlab quyish;
2. Dasturning kiritishchiqarish tashqi kurilmalari bilan aloqasini tashkil qilish.
Fayl tushunchasining ikki tomoni bor: 1 chi tomondan fayl – tashqi xotiraning biror axborotni saklovchi nomlangan
bir qismidir. Bunday tushunchadagi fayl fizik fayl deb ataladi.
2 Tomondan fayl – bu dasturda ishlatiladigan malumotlarning turli
strukturalaridan biridir. Bunday tushunchadagi fayl mantiqiy fayl deb
ataladi, yani u bizning tasavvurimiz bilan hosil qilinadi.
Fizik fayl strukturasi
Fizik fayl strukturasi axborot tashuvchi – kattik yoki yumshok magnit
disklaridagi baytlarning oddiy ketmaketligidan iborat.
Mantiqiy fayl strukturasi
Mantiqiy fayl strukturasi – bu, faylni dasturda qabul qilish usulidir. Obrazli
qilib aytsak, u biz faylning fizik strukturasiga karashimiz mumkin bo‘lgan
«shablon»dir.
Ana shunday shablonlarga misol ko‘raylik:
Belgi
Belgi
…
Belgi
eof
Bu yerda har bir belgi faylning bir yozuvi, eof esa faylning oxirini bildiradi.
Yunalish tugmasi belgisini marker deb ataylik, markerni dastur ko‘rsatmasi
bilan faylning ixtiyoriy yozuviga keltirib quyish va o‘sha yozuvni o‘qish
mumkin. Bunda har bir o‘qishda faqat bitta belgi uqiladi.
Yuqorida fayl yozuvi sifatida belgili tipni oldik, endi fayl yozuvi sifatida
yozuv tipini olamiz:
T=RECORD
FIO:STRING[15];
ADR:STRING[20];
GODR:INTEGER;
END;
F:FILE OF T;
Bu yerda biz T tipidagi fayl hosil kildik, agar T tipidagi yozuvda quyidagicha
malumotlar bor desak
Aliev
Bozorov
Akramov
Karimov
Buxoro,15
P.Neruda,12
Nakshband,45
Galaba,13
1974
1985
1980
1976
Har bir yozuvda 3 ta maydon bor va yozuvlar soni esa turtta.
Agar biz fayldan 1chi yozuvni o‘qishni buyursak, unda bir o‘qishda 3 ta
o‘zgaruvchida Aliev, Buxoro 15, 1974 malumotlari birdaniga uqiladi. Buni
qanday amalga oshirishni quyida ko‘ramiz.
Agar fayl strukturasini massiv strukturasiga solishtirsak, quyidagi farqlarni
ko‘ramiz:
1. Massivda elementlar soni xotirani taksimlash vaqtida o‘rnatiladi va u
to‘laligicha tezkor xotiraga joylashadi. Massiv elementlari raqamlanishi uni elon qilishda ko‘rsatilgan quyi va yukori chegaralarga mos holda
o‘rnatiladi.
2. Faylda esa elementlar(yozuvlar) soni dastur ishi jarayonida o‘zgarishi
mumkin va u tashqi axborot tashuvchilarda joylashgan. Fayl elementlarini
raqamlash 0 dan boshlanadi va elementlar soni doim noaniq.
Biz yuqoridagi mavzularda o‘zgaruvchilarning turli toifalari bilan ishlab
keldik. Bular skalyar, oddiy va murakkab tarkiblashgan toifalardir. Bu
toifadagi malumotlar yordamida masalalrni yechishda boshlang‘ich
malumotlar klaviaturadan operativ xotiraga kiritiladi va natija ekranga
chiqariladi. Ulardan boshqa dasturlarda foydalanib bo‘lmaydi, chunki ular
tizimdan chiqilgandan so‘ng hech kaerda saklanmaydi. Bu malumotlarni
xotirada saqlash uchun Paskal tilida malumotlarning faylli toifasi
belgilangan.
Fayllarning turlari
Faylda saklanaetgan malumotlar turiga kura Paskalda fayllar quyidagi
turlarga bo‘linadi:
1) toifalashmagan;
2) toifalashgan;
3) matnli.
Toifalashgan fayllar bir xil toifali elementlardan tashkil topadi. Ularni
malum kurilmalarda uzatish ham mumkin. Faylning elementlari mashina kodlarida
yoziladi va saklanadi.
Toifalashmagan fayllarda turli toifadagi malumotlarni saqlash mumkin. Ular
ham mashina kodlarida yozilgan bo‘lib baytlar to‘plamini tashkil qiladi.
Matnli(tekst) fayllar ASCII kodlardan tashkil topgan va qatorlarga ajratilgan
bo‘ladi. Matnli fayllarda nafaqat faylning yakunida fayl oxiri belgisi, balki har
qatorning yakunida maxsus qator oxiri belgisi qo‘yiladi.
Fayl tipidagi o‘zgaruvchi fayl o‘zgaruvchisi deyiladi, u faylning mantiqiy
nomini belgilaydi va u mantiqiy fayl bilan tashqi(fizik) fayl o‘rtasida «vositachi»
vazifasini utaydi.
Fayl tipidagi o‘zgaruvchi uchun arifmetik amallar aniqlanmagan. Hatto
fayllarni solishtirish va bir faylning qiymatini ikkinchi faylga o‘zlashtirish amallari
ham aniqlanmagan.
Yuqoridagi barcha turdagi fayllar ustida, umuman olganda quyidagi
amallarni bajarish mumkin va bu amallar uchun quyidagi maxsus protsedura va
funksiyalar ishlatiladi:
1. Fayl bilan ishlashdan oldin faylning fizikaviy va mantiqiy nomlarini boglash
lozim.
Bu quyidagi protsedura yordamida amalga oshiriladi:
Assign(,’’);
Masalan
Assign(F,’d:\TP\myfile.txt’); Ushbu protsedura yordamida fayl uchun yul ochib dasturdan tashqi kurilmaga
murojaat qilish va axborot almashish mumkin.
2.Faylga malumot yozish uchun faylni ochish:
Rewrite();
Bu protsedura bajarilganda xotiraga Assign protsedurasida ko‘rsatilgan nom
bilan yangi fayl unga malumot yozish uchun ochiladi va yozuv ko‘rsatkichi fayl
boshiga o‘rnatiladi. Bu protsedurani extietkorlik bilan ishlatish kerak, chunki
ko‘rsatilgan fayl oldindan xotirada bo‘lsa, undagi malumotlar butunlay uchirib
tashlanadi.
3. Faylni undan malumotlarni tezkor xotiraga o‘qish uchun ochish:
4. Reset();
Bu protsedura bajarilganda Assign protsedurasida ko‘rsatilgan fayl undagi
malumotlarni o‘qish uchun ochiladi, yani yozuv ko‘rsatkichi faylning birinchi
elementiga keltirib qo‘yiladi.
5. Faylga malumotlarni yozish, kiritish:
Write(,);
Bu yerda kattalik o‘rnida o‘zgaruvchi yoki ifoda ishlatilishi mumkin.
Protsedura bajarilganda kattalikning qiymati fayl o‘zgaruvchisi bilan boglangan
faylda fayl ko‘rsatkichi o‘rnatilgan joyga yoziladi va fayl ko‘rsatkichi keyingi
pozitsiyaga suriladi. Ushbu protsedura fayl yozish uchun ochilgandagina
ishlaydi.
6. Fayldan malumotlarni o‘qish:
Read(,);
Bu protsedura bajarilganda Reset bilan ochilgan faylda yozuv ko‘rsatkichi
o‘rnatilgan joydagi elementning qiymati o‘zgaruvchiga o‘zlashtiriladi. So‘ng
yozuv ko‘rsatkichi bitta pozitsiyaga suriladi.
7. Turli yuqoridagi maksadlar uchun ochilgan fayllar ish oxirida yopilishi
kerak, buning uchun
Close();
Protsedurasi ishlatiladi. Bu protsedura bajarilganda axborot uzatishning barcha
kanallari yopiladi.
8. Fayl oxirini aniqlash funksiyasi:
Eof();
Bu funksiyaning qiymati BOOLEAN tipida bo‘lib, u fayl ko‘rsatkichi faylning
oxirida o‘rnatilganda TRUE qiymatga ega bo‘ladi, aks holda uning qiymati
FALSE ga teng.
Toifalashgan fayllar va ular bilan ishlash
Toifalashgan fayllar bir xil tipdagi elementlardan tashkil topadi. Ular dasturda
quyidagicha elon qilinadi:
FILE OF ;
Bu yerda elementlar toifasi faylning tashkil etuvchilari, yani fayldagi
malumotlarning toifasi bo‘lib, bu toifa sifatida oddiy va murakkab
toifalarni(fayldan tashqari) ishlatish mumkin. Toifalashgan fayllarni quyidagicha tavsiflash mumkin:
TYPE bo‘limida
Type f=file of integer;
Tal=file of char;
Num=file of real;
Var p,q: file of f; f1: file of char;
Var f2:file of integer;
Var bo‘limida
Toifalashgan fayllarga misollar ko‘rib o‘tamiz.
1 – misol.
Tashqi faylga ixtiyoriy ketmaketlikdagi belgilarni yozish va o‘qish.
PROGRAM F1;
VAR F:FILE OF CHAR;
CH:CHAR; I:INTEGER;
BEGIN
ASSIGN(F,’MYFILE.TXT’);
REWRITE(F);
FOR I:=1 TO 10 DO
BEGIN
READLN(CH); WRITE(F,CH); END;
CLOSE(F); RESET(F);
WHILE NOT EOF(F) DO
BEGIN
READ(F,CH);
WRITE(CH,’ ‘); END;
CLOSE(F); END.
Ushbu dasturda ekrandan 10 ta belgi o‘qib olinadi fa tashqi faylga yoziladi.
So‘ng o‘sha fayl o‘qish uchun ochilib fayl tugagunga kadar qaytaqayta uqiladi
va o‘kilgan belgilar bosmaga chiqariladi.
TIPLASHMAGAN, MATNLI FAYLLAR BILAN ISHLASH
Tiplashmagan fayllarga aniq tipdagi fayllar kiradi. Ko‘pchilik hollarda bu
fayllar yozuvlardan iborat bo‘lib, turli berilganlar bazasini tashkil etishda
qo‘llanadi.Bunday fayli o‘zgaruvchilar dasturda quyidagicha e’lon qilinadi:
TYPE
FileRec = RECORD
...
END;
VAR
F : file of FileRec;
Agar matnli fayllarda beilganlar simvollardan tashkil topgan bo‘lsa,
tiplashmagan fayllar yozuvlardan tashkil topgan deb qaraladi. Bunday
berilganlarning o‘lchov birligi sifatida yozuvning o‘zi qabul qilinadi. Yozuv
uzunligi SizeOf(FileRec) bilan aniqlanadi. Seek(VAR F; NumRec: LongInt)
protsedura F joriy faylning NumRec tartibli o‘zgaruvchisini o‘rnatadi; F tiplashgan va tiplashmagan berilganlarning fayl o‘zgaruvchisi. Tiplshmagan faylni
ochishda joriy pozitsiya yozuv boshiga o‘rnatiladi va 0 chi tartib nomerga ega
bo‘ladi, fizik yozuv mantiqiy yozuv tartib nomeridan bittaga kam bo‘ladi.
Misol. Telefonlar xakidagi ma’lumot misolida tiplashmagan fayllar bilan
ishlash.
PROGRAM BookPhone;
TYPE
StFio = string[10];
StPhone = string[10]; RecBook = RECORD { fayl uchun yozuv }
Fio : StFio;
Phone: StPhone;
END;
VAR
BookFile : file of RecBook; { RecBook faylli yozuvga o‘zgaruvchilar}
Work : RecBook; { yozuvlarga o‘tish uchun o‘zgaruvchilar }
Ind : byte;
PROCEDURE OutputRec; { joriy yozuvni ekranga chiqarish }
BEGIN
Read(BookFile, Work);
With Work do
Writeln('FIO: ',Fio,' telefon: ',Phone);
END; { OutputRec }
PROCEDURE OutputAllRec;
{ fayning hamma yozuvlarini ekranga chiqarish }
BEGIN
Seek(BookFile, 0); { faylni birinchi mantiqiy yozuvni o‘rnatish }
Writeln('*** Telefonlar xakidagi ma’lumotnomani ekranga chiqarish');
WHILE (NOT Eof(BookFile)) DO
OutputRec;
END; { OutputAllRec }
PROCEDURE AddRec;
{ klviaturadan sanaydi va faylga yozuvni ko‘shadi }
BEGIN
Writeln('*** Fayl yozuvini chiqarish');
WITH Work DO BEGIN
Write('Familiyasini kiriting: ');
Readln(Fio); { familiyalarni kiriting }
Write('Telefon nomerini kiriting: ');
Readln(Phone); { telefon nomerini kiritish }
Write(BookFile,Work);
END; { with }
END; { AddRec }
PROCEDURE UpdateRec(NumRec : LongInt); { tartib nomeri bo‘yicha fayl yozuvini o‘zgartiring }
BEGIN
Seek(BookFile, NumRec); { tartib nomeri bo‘yicha fayl pozitsiyasini
o‘rnatish } Writeln (' yozuvning eski qiymati ');
OutputRec; { yozuvni chiqarish va fayl pozitsiyasini keyingi yozuvga
o‘tkazish }
Seek(BookFile, NumRec); { oldingi pozitsiyaga qaytarish
Writeln(' yangi qiymat ');
AddRec; { yozuvni o‘zgargan qiymatini chiqarish }
END; { UpdateRec }
BEGIN { BookPhone }
Assign(BookFile, 'PHONE.DAT'); { PHONE.DAT nomli yangi fayl
tashkil qilish}
Rewrite(BookFile);
Write(' PHONE.DAT' yozuvining 5 ta yozuvini tashkil qilish);
FOR Ind := 1 TO 5 DO { klaviaturadan 5 ta yozuvni tashkil qilish}
AddRec;
Write('Yozuvlarni tashkil qilish tugatildi. ... tugmachasini bosing');
Readln;
OutputAllRec; {hamma yozuvlarni ekranga chiqarish }
Write('Faylning 2 ta yozuvini o‘zgarishi. ... tugmachasini bosing ');
Readln;
UpdateRec(1); {1 chi tartib raqam faylning 2 chi mantiqiy yozuviga
to‘g‘ri keladi}
Write('Davom ettirish uchun xohlagan klvishani bosing...');
Readln;
OutputAllRec; { o‘zgargan faylni ekranga chiqarish }
Close(BookFile); { faylni yopish}
END. { BookPhone }
Matnli fayllar
Matnli faylni 0 dan 256 gacha bo‘lgan belgilar qatori ketma ketligi deb
karash mumkin. Matnli qatorni yozish uchun Text standart tipidan foydalaniladi.
VAR
F: text; { F fayl o‘zgaruvchisi }
Har bir qator oxiri markeri bilan tamomlanadi. Amaliyotda bunday
markerni ikkita belgi ketma ketligi tashkil qiladi: Satrga o‘tish chr(13) va
karretkani qaytarish chr(10). Ushbu ikkita belgi matnli fayllar ustidagi standart
harakatlarni belgilaydi. SYSTEM modulidagi standart ochiladigan Input va
Output fayllari Text tipli bo‘ladi. Matnli fayllarni kiritish va chiqarish.
Matnli fayllar uz spesifikasiga ega. Read o‘qish va Write yozish
protseduralarining maxsus kengaytmasi belgili bo‘lmagan tiplar bilan ishlash
imkoniyatini beradi.
Agar Ww word tipidagi uzgaruvchi bulsa, Read(F, Ww) operatorining
chaqirilishi sonlar ketmaketligini F faylidan o‘qib, Ww o‘zgaruvchisiga
o‘zlashtiradi. Boshqa hollarda dasturda xatolikka olib keladi.
Matnli fayllarni ochishni standart usullarda olib borish mumkin:
Fayl o‘zgaruvchisiga mos fayl nomini quyish ( Assign protsedurasi),
yangi matn faylini ochish ( Rewrite protsedurasi);
yoki fayl o‘zgaruvchisiga mos fayl nomini quyish ( Assign protsedurasi ),
xotirada bor faylni ochish (protsedura Reset).
Matnli fayllar o‘zining spesifikatsiyasiga karab, o‘qish yoki yozish
operatsiyalaridan bittasi bilan ishlash imkoniyatini beradi. Shuning uchun matnli
fayllar bilan ishlashda yana bitta protsedura ,faylni ochish protsedurasi paydo
bo‘ladi:
Append(VAR F : text);
Bu protsedura faylni ochib, kursorni fayl oxiriga keltirib kuyadi. Append
protsedurasiga qo‘yiladigan talablar ham xuddi Reset va Rewrite protseduralariga
qo‘yilgan talablarga o‘xshash.
Matnli fayllarni qayta ishlash uchun Read va Write protseduralari
qo‘llaniladi. Readln protsedurasi qatorlarni bo‘luvchi maxsus til vositasi
hisoblanadi. Uning vazifasi xuddi Read ning vazifasiga o‘xshash va o‘qishni
qator oxirining markerigacha olib boradi va boshqa yangi qatorga o‘tishni
ta’minlayladi. Writeln, protsedurasi hamma kattaliklarni yozishni ta’minlaydi.
Protseduralar yozilishining ko‘rinishi quyidagicha:
Readln(VAR F : text; V1 [,V2,...Vn]);
Writeln(VAR F : text; V1 [,V2,...Vn]);
bu yerda V1...Vn turli tipdagi o‘zgaruvchilar. Read va Readln protseduralari
orasidagi farq nimada degan savolga quyidagicha javob berish mumkin. Read
protsedurasi berilganlarni hammasini bir qatorga olib kirish imkonini beradi
Readln operatsiyasi esa albatta bir qator tugagandan keyin avtomatik ravishda
ikkinchi qatorga o‘tishni ta’minlaydi, ya’ni berilganlarni turli qatorlardan olib
kirish mumkin. Write va Writeln protseduralarida ham xuddi shunday.
Kiritish chiqarish operatsiyalarini bajarayotgan paytda maxsus Eoln, Eof,
SeekEoln, SeekEof funksiyalaridan tashkil topgan til vositasini qo‘llash mumkin.
Agarda faylning joriy pozitsiyasi fayl oxiri markerida turgan bo‘lsa
Yeoln(VAR F: text) funksiyasi, True ning bulev qiymatini qaytaradi. Qolgan
hamma holatlarda funksiyaning qiymati False bo‘ladi.
Agarda kursor oxirgi komponentadan keyin turgan bo‘lsa, Eof(VAR F:
text) True ning bulev qiymatini qaytaradi, aks holda False bo‘ladi.
1misol. Diskda fayl yaratish va unga foydalanuvchi tomonidan kiritlgan 5 ta
sonni yozish. Var f:text; n,i:integer;
Begin writeln(‘5 ta butun son kiriting’);
Writeln(‘Har bir son kiritilgach ENTER tugmasini bosing’);
Assign(f,’numbers.txt’);
Rewrite(f);
For I:=1 to 5 do begin write(‘’); readln(n); writeln(f,n); end;
Close(f);
2 Misol. Yuqorida tashkil qilingan matnli fayldagi sonlarni o‘qish.
VAR
F: text; n,I:integer;
Begin
Assign(f,’numbers.txt’);
Reset(f);
For I:=1 to 5 do begin write(‘’); readln(f,n); writeln(n); end;
Close(F);
END.
END.
AMALIY MASHG’ULOT
1Kuyidagicha tavsiflash berilgan:
Var f:file of integer; x,y:integer;
Agar f faylda 3 va 7 sonlari bulsa, kuyidagi operatorlardan sung y uzgaruvchi
kanday kiymat olishini aniklang:
a) reset(f); read(f,y);
if not eof(f) then read(f,y);
if not eof(f) then read(f,y);
b) reset(f); y:=0;
while not eof(f) do
begin read(f,x);
y:=y+x end;
c) reset(f); y:=1;
repeat read(f,x); y:=y*x until eof(f);
2Kuyidagicha tavsiflash berilgan:
Type son=file of real;
Son tipida faylda sonlar ketmaketligi mavjud. Undagi manfiy elementlar sonini
aniklovchi dastur tuzing.
3.Kuyidagicha tavsiflash berilgang:
Type narx=record sum:0..maxint; tiyin:0..99 end;
Narx tipidagi faylda malumotlar berilgan. Undagi eng kichik pul mikdorini
anilovchi dastur tuzing. LABARATORIYA ISHLARI
13.1. Kuyidagicha tavsiflash berilgan:
Type kator=file of 0..999;
Kator tipidagi fayl berilgan. Undagi elementlar usish tartibida joylashganligini
tekshiruvchi dastur tuzing.
13.2. Kuyidagicha tavsiflash berilgan:
Type tekct=file of char;
Tekct tipidagi ikkita t1 va t2 fayllar berilgan. Ulardagi elementlar soni uzaro
tengligini aniklovchi dastur tuzing.
13.3. var f:file of integer; i: integer;
Ushbu operatorlar bajarilgandan sung f fayl da xosil buladigan malumotni
kursating:
A) rewrite(f);
If eof(f) then write(f,1) else write(f,2);
If eof(f) then write(f,3) else write(f,4);
b) rewrite(f);
for i:=3 downto 1 do write(f,sqr(i));
13.4.
type satr=packed array[1..100] of char;
tekst=file of char;
Shunday protsedura tuzingki, kiritilgan satrda uchragan barcha sonlli
simvollarni tekst fayliga yezsin.
type kator=file of 1..maxint;
13.5.
Shunday dastur tuzingki, u berilgan n dan oshmagan barcha Fibonachchi
sonlarini(1,1,2,3,5…) faylga yezsin.
13.6. Bir berilgan fayldagi malumotlarni boshka bir faylga yezuvchi dastur
13.7.
tuzing.
Ikkita faylda malumot bor. Uchinchi bir fayl ochib, avval birinchi
fayldagi malumotlarni, sung ikkinchi fayldagi malumotlarni yiging.
13.8. Matn faylida malumotlar berilgan. Faylda nechta satr borligini aniklovchi
dastur tuzing.
Fayl satri yezuvdan iborat va unda xodimning ismi va yeshi kabi maydonlar bor.
Fayldagi yeshi eng kichik va yeshi eng ulug xodimni aniklovchi dastur tuzing.
13.9. var f:file of integer; x: integer;
Yukorida tavsiflangan fayl xotirada bor va unda fakat 1, 2 sonlari
joylashgan. Kuyidagi operatorlar bajarilgandan sung x uzgaruvchi kanday
kiymat kabul kiladi?
reset(f); read(f,x); if x=1 then write (‘1’) else write(‘2’);
13.10.var t:file of char; c:char;
Kuyidagi operatorlar bajarilgandan sung t faylda nima xosil buladi?
13.11.rewrite(t);
if eof(t) then c:=’a’ else c:=’b’; write(t,c); 13.12.Ikkita faylda sonlar usish tartibida yezilgan. Ularni uchinchi faylga
shunday yigingki, u fayldagi elementlar xam usish tartibida joylashsin.
13.13. Shunday funksiya tuzingki, u:
A) matnli fayldagi bush satrlar sonini aniklasin.
B) matnli fayldagi satrlar ichida eng uzunini aniklasin.
13.18. Matnli fayldagi malumotlarni bosmaga chikaruvchi dastur tuzing.
13.19. Matnli faylda satrlar suzlardan iborat. Aniklang:
a) d xarfidan boshlanadigan suzlar sonini;
b) z xarfi bilan tugaydigan suzlar sonini;
v) biror xarf bilan boshlanib, shu xarf bilan tugaydigan suzlar sonini;
g) Fakat bir xarfdan iborat suzlar sonini.
13.20. Bir matnli faylda bush satrlar xam bor. Uni ikkinchi bir faylga bush
satrlarsiz utkazing.
13.21. Bir matnli fayl xar bir satrida 80tagacha simvollar bor. Shu fayl
yezuvlaridagi 80taga tulmagan bush joylarni ‘*’ bilan tuldirib ikkinchi bir
faylga yezing.
13.22. Satr berilgan. Unda suzlar orasida bush joy bor, satr oxiri «.» bilan
tugaydi. Satrdagi xar bir suzni faylning bir satriga yezadigan dastur tuzing.
13.23. Bir faylda sonlar yezilgan. Ulardan musbatlarini ikkinchi faylga,
manfiylarini esa uchinchi faylga yezuvchi dastur tuzing.
Mavzu: Turbo pascal muhitida ishlash.
Xotiraning dinamik taqsimoti.
Ko’rsatgich turi.
Paskal tili ilmiy texnik, muxandislik masalalarini yechishda keng ko‘lamda
foydalanadigan algoritmik tildir. Mazkur algoritmik til Shveysariyalik professor
Virt Niklaus tomonidan 1971 yilda yaratilgan. Paskal algoritmik tili jamlovchi
mashinani yaratgan Fransuz fizigi Blez Paskal xotirasiga quyilgan.
Paskal tilining alfavitiga quyidagilar kiradi:
1. A dan Z gacha bo‘lgan 26 ta lotin alifbosi harflari.
2. Arab raqamlari: 1,2,3,4,5,6,7,8,9,0.
3. Arifmetik amallar. Paskal tilida quyidagi arifmetik amallar
mavjud: ko‘paytirish(*), masalan: A*V; bo‘lish(/), masalan: A/V; qo‘shish(+),
masalan: A+V; ayirish(), masalan: AV; Paskal tilida darajaga ko‘tarish amali
ishlatilmaydi. Shuning uchun ham sonlarni butun darajaga ko‘tarishda (daraja
ko‘rsatkichi katta son bo‘lmasa) ularni bir necha marotaba ko‘paytirish yo‘li bilan amalga oshirish mumkin.
Haqiqiy darajaga ko‘tarish(agar asos musbat son bo‘lsa) logarifmlash yo‘li bilan
amalga oshiriladi:
nenx
ln
x
yoki
nx
10
n
ln
x
4. Munosabat amal belgilari: < (kichik), <=(kichik yoki teng),
>(katta), >= (katta yoki teng), = (teng), < > (teng emas);
5. Maxsus belgilar: . (nuqta) , (vergul) ; (nuqtali vergul) : (ikki
nuqta), oddiy, kvadrat va figurali qavslar: ( ), [ ] , { } va hokazo.
Nom. Nom yoki identifekatorlar o‘zgaruvchilarni, o‘zgarmaslarni, turlarni,
protseduralarni va funksiyalarni nomlash uchun ishlatiladi. Nom harf va
raqamlardan iborat bo‘lib, doimo harfdan boshlanishi kerak. Masalan: X2, AB2,
Y2, Z3, ALFA, BETTA.
Son. Sonlar butun va haqiqiy bo‘lishi mumkin. Butun sonlar o‘nli raqamlar
yordamida ishorali yoki ishorasiz ko‘rinishda yoziladi:
Masalan: 5; 55; 73; 72867; 5205300.
Haqiqiy sonlar qo‘zg‘almas va qo‘zg‘aluvchan nuqtali ko‘rinishlarda yoziladi:
Masalan: 0.65; 5E02; 150.8; 1.7E2; 86.79.
Satrlar. Paskal tilida satrlar apostrof ichiga olingan belgilar ketmaketligidan
iborat bo‘ladi. Masalan: ‘array’, ‘informatika’, ‘matematika’ kabilar.
O‘zgarmaslar. Paskal algoritmik tilida o‘zgarmaslar: butun(integer),
haqiqiy(real), mantiqiy(boolean), belgili(char), tekstli(text) ko‘rinishlarida bo‘lishi
mumkin.
Butun yoki haqiqiy turdagi o‘zgarmaslar, oldiga + yoki – ishorasi qo‘yilgan
raqamlardan hosil bo‘ladi.
Mantiqiy tipdagi o‘zgarmaslar faqatgina 2 ta mantiqiy qiymat true (rost) va
false (yolg‘on) kiymatlarni qabul qilishi mumkin.
Belgili tipga mansub bo‘lgan o‘zgarmaslar qo‘shtirnoq belgisi ichiga olingan
belgilar ko‘rinishida yoziladi. Masalan: “Kassa”, “Informatika”.
Tekstli konstantalar (qatorlar) belgilar ketmaketligini qo‘shtirnoq belgisi
ichiga olib yoziladi. Masalan: “Y=“, “Ildiz=”, “yig‘indi=” va hokazo.
O‘zgaruvchilar. Mazkur algoritmik tilda dasturda qatnashayotgan o‘zgaruvchi
miqdorlarni belgilab yozish uchun o‘zgaruvchilardan foydalaniladi. Paskal tilida
oddiy va indeksli o‘zgaruvchilardan foydalaniladi. Oddiy o‘zgaruvchilar butun,
haqiqiy, mantiqiy va belgili tiplarning biriga tegishli bo‘lishi mumkin.
Masalan: SR, XMAX, DELTA, IFA, REZ, SUMAR.
Indeksli o‘zgaruvchilar massivlarning elementini tashkil qiladi. Umumiy ismga
ega bo‘lgan o‘zgaruvchilar to‘plamini massivlar deb atash mumkin. Bitta indeks
bilan belgilangan massivlar bir o‘lchovli massiv deb, ikkita indeks bilan belgilangan massivlar esa ikki o‘lchovli massiv deb ataladi. Massivlarning
elementlari kvadrat(o‘rta)[ ] qavsga olinib yoziladi.
Masalan: A[4], A[I] – bir o‘lchovli massivlar, V[2,5], B(I,J] – ikki o‘lchovli
massivlar.
Standart funksiyalar. Dasturda teztez uchrab turadigan funksiyalarning
qiymatlarini hisoblashni yengillashtirish maqsadida standart funksiyalardan
foydalaniladi. Standart funksiyalarni yozishda dastlab ularning nomlari undan
keyin esa kichik qavsga olinib argumentlarini yozish kerak.
Funksiya nomi
Absolyut qiymat
Kvadrat ildiz
Sinus
Kosinus
Tangens
Eksponenta
Natural logarifm
Arktangens
Kvadratga ko‘tarish
X ning butun qismi
Yaxlitlash
Oldingi qiymat
Navbatdagi qiymat
Juftlikni tekshirish
Matematikada yozilishi
x
Paskal tilida yozilishi
ABS(X)
x
sinx
cosx
tqx
ex
nx
arctqx
x2
SQRT(X)
SIN(X)
COS(X)
TAN(X)
EXP(X)
LN(X)
ARCTAN(X)
SQR(X)
TRUNC(X)
ROUND(X)
PRED(X)
SUCC(X)
ODD(X)
Qolgan teskari trigonometrik funksiyalar matematikadagi mavjud quyidagi
formulalar orqali arktanges funksiya yordamida ifodalanadi.
arcsin
x
arctq
x
1
2
x
arccos
x
arcctqx
2
arctq
arctqx
x
1
2
x
Dastur strukturasi. Paskal algoritmik tilida dastur uning sarlavhasi va blok
deb ataluvchi tanasidan iborat. Dastur sarlavhasi, dasturning har doim birinchi
qatoriga yoziladi va Program xizmatchi so‘zi bilan boshlanadi. Program so‘zidan keyin dastur nomi va oddiy qavs ichida dasturning ishlashi uchun bog‘liq
parametrlar input(kiritish) va output(chiqarish) fayllari
yoziladi. Masalan:
Program summa(input, output);
Dastur sarlavhasi; (nuqta vergul) bilan tugallanadi. Dasturning tanasi ikkita
asosiy qismdan iborat: tasvirlash va operatorlar bo‘limi.
Tasvirlash bo‘limi quyidagi qismlardan iborat:
a). nishonlar (metkalar)ni aniqlash;
b). konstantalarni aniqlash;
v). o‘zgaruvchilarni aniqlash;
g). turlarni aniqlash.
Har bir tasvirlash va aniqlash nuqta vergul bilan tugaydi.
Metkalarni aniqlash qismi Label xizmatchi so‘zi bilan boshlanadi va Label dan
keyin dasturda ishlatilgan metkalar vergul bilan ajratilgan holda yoziladi. Masalan:
Label 5, 65, 100; .
Metkalar sifatida musbat butun (natural) sonlar ishlatiladi. Metka operatordan ikki
nuqta (:) bilan ajratiladi. Agar dasturda metka ishlatilmasa, u holda metkani
aniqlash qismi yozilmaydi.
O‘zgarmaslarni aniqlash qismi Const xizmatchi so‘zi bilan boshlanadi va
bundan keyin dasturda ishlatilayotgan o‘zgarmaslar va ularning sonli qiymatlari
yoziladi. O‘zgarmaslar nomi va qiymati = simvoli bilan ajratiladi. Har bir
o‘zgarmasni aniqlash ; (nuqtali vergul) simvoli bilan tugaydi.
Masalan:
Const A=5,5; B=3,5; P1=3.141593;
K=7; L=13;
O‘zgarmaslarni tasvirlash dasturni tushunishda va o‘zgartirish kiritishda
qulaylik tug‘diradi.
O‘zgaruvchilarni tasvirlash bo‘limi Var xizmati so‘zi bilan boshlanadi va
undan keyin dasturda qatnashuvchi o‘zgaruvchilar va tiplari yoziladi. Umumiy
holda o‘zgaruvchilarni tasvirlash qismi quyidagi ko‘rinishda bo‘ladi:
Var v1, v2, v3,…,vn:T;
bu yerda v1, v2, v3,…,vn –o‘zgaruvchilar; To‘zgaruvchilar tipi(real, integer, char,
boolean).
Masalan:
Var a,b,c: real;
p,k: integer;
q,s: char;
t,r: boolean;
AMALIY MASHG’ULOT PASKAL TILIDA TARMOQLANUVChI TARKIBLI
ALGORITMLARGA DOIR DASTUR TUZISh
1misol. Argument x ning ixtiryoriy qiymatida quyidagi funk
siyaning qiymatini hisoblash dasturini tuzing.
y
2
xnis
xn
1
2
x
,|5,0
,
e
Sim
|
x
2
,
агар
x
0
агар
x
0
агар
х
0
1. Blok–sxemasini tuzamiz:
2. Paskal tilida dasturini tuzamiz:
program lab2(input, output);
var x, y: real;
begin
read(x);
if x>0 then y:=sin(x)*sin(x)+ln(x*x) else if x>0 then y:=exp(sin(x))+(1/x)*(1/x) else y:=sqrt(abs(x0.5));
write(‘y=’,y);
end.
LABORATORIYa
TOPShIRIQLARI
1–variant
y
2
xn
e
,
arctg
|
x
IShINI
BAJARISh UChUN VARIANT
x
1
агар
x
2
z
,|5,0
z
,
агар
x
1
бу
ерда
z
.
5
агар
x
1
2–variant
3–variant
z
x
2
x
2
arc
3
5
5ln3
sin
x
2
sin
x
2
3
3
2
x
xgtc
xgtc
|
|
e
x
xnl
5,0
y
4–variant
x
,
,
,
агар
агар
агар
0
x
x
0
x
0
,1
,
,
агар
агар
агар
x
0
0
х
0
x x
6,2
n
2
xnis
(
xnis
ерда
бу
5,4
x
2
5,0
x
а
2
,
tgc
x
,6,0
cba
;5
b
агар
агар
,)
агар
;6,0
x
5,0
х
5,0
5,0
x
.7
c
x
2,0
xnis
3,4
x
17,4
|
tgcra
xgtс
16,0
1
х
1
агар
,
,
|5
агар
,
x
агар
x
1
22
xn
(
x
3
2
)2
sin
x
6,0
x
5,0
x
xgtc
|
x
,
агар
x
1
,|3
,
агар
агар
х
1
1
x
z
y
y
|7,0
,
z
|
rcan
tgx
xniscra
xgtcra
e
,
,
агар
агар
агар
0
x
х
0
x
0
z
tgc
5
32
x
x
x
e
14,4
ctg
1
x
|
|
x
бу
ерда
3
x
,
агар
,
агар
6,0
x
6,0
x
,
агар
x
6,0
.5
5–variant
6–variant
7–variant
8–variant
9–variant y
y
y
10–variant
11–variant
xn
6,2
x
2
a
2cos
,
xnis
crca
osx
|
bax
|
агар
агар
агар
,
,
x
x
x
8,0
8,0
8,0
b
x
бу
ерда
а
;5
b
.4
x
7
2
xgtcra
e
x
5
2
tg
|
x
|3
x
)1
,
(ln5,0
2
5
x
агар
агар
x
1
1
х
агар
x
1
,
,
3
|
(
|)
xnnis
x
a
xsoc
6,0
8,4
2
2
2
|
a
e
x
xn
|
ерда
.6,5
a
x
бу
,5
агар
агар
агар
,
,
1
x
х
1
x
1
x
e
5
x
2
3,4
3
ctg
2
5
x
tgxcrax
2
2
,
,
,
агар
агар
агар
x
x
x
1
1
0
12–variant
y
13–variant
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
PROTSEDURA-FUNKSIYA
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.