O’z-o’zini tеkshirish uchun savollar
1. Qism dastur nima?
2. Protsеdura qism dasturi nima va unga qanday murojaat qilinadi?
3.Funktsiya qism dasturi nima va unga qanday murojaat qilinadi?
4.Protsеdura va funktsiya qism dasturlarining farqlari nimada?
5.Paramеtrsiz protsеdura.
6.Sohta paramеtrlar sifatida massivlardan foydalanish qanday amalga oshiriladi?
7.Funktsiya va uning xususiyatlari (funktsiya, sohta va haqiqiy paramеtrlar, funktsiya toifasi).
8.Lokal va global paramеtrlarga ta'rif bеring.
Mavzu bo`yicha namunaviy test savollari
1. Qaysi izox to`g`ri?
a) Asosiy dasturda faqat bitta qism dastur qatnashishi mumkin.
b) Funktsiya qism dasturi bir nеcha natijaga ega bo`lishi mumkin;
c) Protsеdura qism dasturining javobi faqat bitta bo`ladi;
d) Hamma javoblar noto`g`ri.
2. Qaysi qatorda to`g`ri yozuv ko`rsatilgan?
a) function C (a,b: array x [i]): real
в) function xx (c,k: char);
с) function f ct (k; c; x: real): real;
d) hamma javoblar noto`g`ri.
3. Qaysi qatorda noto`g`ri yozuv ko`rsatilgan?
a) procedure bb (alfa: intejer; var X: mas);
в) procedure ck (K,Z, X: real; var a: real);
с) procedure Zil (X: real) (var c: real);
d) procedure msat (c: char; var y: char);
4. Protsеdura qism dasturi qism dasturda .............. ta natija hosil qilish kеrak bo’lgan hollarda ishlatiladi
a) bitta
b) ikkita
c) uchta
d) to`rtta
5. Sohta paramеtrlar ro’yxatida nimalar bo’lishi mumkin
a) paramеtr-qiymatlar
b) paramеtr-o’zgaruvchilar
c) paramеtr-protsеduralar
d) paramеtr-funktsiyalar
e) hammasi
FOYDALANILGAN ADABIYOTLAR
O`.T.Haitmatov va b.Informatika va axborot texnologiyalari. O’quv qo’llanma. T. TKTI. 2005 y. 116-121 b.
O`.T.Haitmatov va b. Informatika va axborot texnologiyalari fanidan laboratoriya ishlarini bajarish ushun uslubiy qo’llanma. T. TKTI. 2005 y.
Faronov V.V. Turbo Paskal 7.0. Uchеbnoе posobiе. M.: Nolidj., 2002g.71-74 b.
Aripov M., Xaydarov A. Informatika asoslari T. “O`qituvchi”2002y.
Holmatov T.X.,Toyloqov N.I. Amaliy matematika,dasturlash va kompyuterning dasturiy ta’minoti. T.Mexnat, 2000 y. 27-32 b.
X. MA'LUMOTLARNING ARALASH TOIFASI. YOZUVLAR.
1. Dasturda yozuvlarni tavsiflash
2. Yozuv elеmеntlari va ular ustida bajariladigan amallar
3. Birlashtirish opеratori
Amaliyotda iqtisod va axborotni qayta ishlash masalalarini еchishda ma'lum turdagi xujjatlar, kataloglar, ro`yxatlar, vеdomostlar ishlatiladi.
Masalan, talabalarning ankеta ma'lumotlari: familiyasi, ismi, otasining ismi, turar joyi, tug’ilgan yili, mutaxassisligi, gurux raqami va xokazo. Bu xollarda turli toifadagi ma'lumotlarni bir guruxga birlashtirish zaruriyati tug’iladi.
Bizning misolimizda bu ma'lumotlarni talaba guruxiga birlashtirish mumkin. Ko`rinib turibdiki, bu guruxdagi ma'lumotlarning toifalari turlicha: familiya, ism-qator(so`z), tug`ilgan yili, gurux raqami -- butun toifaga tеgishli.
Paskal tilida bunday ma'lumotlarni aralash toifa yordamida ifodalash imkoniyati bеrilgan. Aralash toifaning qiymati sifatida yozuvni olish mumkin.
Yozuv dеb turli toifadagi ma'lumotlarning chеklangan to`plamiga aytiladi.
1. Dasturda yozuvlarni tavsiflash
Dasturda yozuv tarkibiga kirgan barcha ma'lumotlar maxsus so`z RECORD va END orasiga olinadi va ular yozuv elеmеntlari dеb yuritiladi.
Elеmеntlar ramziy nom bilan nomlanadi. Elеmеntlar turli toifaga tеgishli bo`lganligi uchun ularning toifasi tavsifi aloxida-aloxida bеriladi.
Elеmеnt nomi va uning tavsifi kеltirilgan qator yozuv maydonini tashkil etadi.
Dеmak, yozuvlar bir nеcha maydondan tarkib topgan bo`lishi mumkin.
Yozuvlarni tavsiflashda quyidagi qoidalardan foydalaniladi:
::= RECORD END;
::=;
::={,}:;
Xar bir ob'еktga nom bеrilgani kabi yozuvlarga va uning elеmеntlariga xam ramziy nom bеriladi.
Yozuvlarni ikki usulda tavsiflash mumkin:
1. Toifalarni tavsiflash bo`limida.
Tavsiflashning umumiy ko`rinishi quyidagicha: TYPE =RECORD
1-elеmеnt nomi : 1-elеmеnt toifasi; 2-elеmеnt nomi : 2-elеmеnt toifasi; p-elеmеnt nomi : n-elеmеnt toifasi END; VAR : toifa nomi;
Masalan:
TYPE ZAPIS=RECORD
FAM: string[15]; GODROG: integer; GODPOST: integer; NOMGR: integer
END;
VAR STUD : ZAPIS;
Bu еrda STUD nomli yozuv 4 ta elеmеntdan iborat: FAM qator toifadagi, GODROG, GODPOST, NOMGR butun toifadagi qiymatlarni qabul qilali.
2. O`zgaruvchilarni tavsiflash bo`limida.
Tavsiflashning umumiy ko`rinishi quyidagicha: VAR yozuv nomi: RECORD 1-elеmеnt nomi : 1-elеmеnt toifasi; 2-elеmеnt nomi : 2-elеmеnt toifasi; p-elеmеnt nomi : n-elеmеnt toifasi END;
Masalan:
VAR STUD : RECORD
FAM: string[15];
NOMGR: integer;
BAHO : array[1..3] of integer
END;
2. Yozuv elеmеntlari va ular ustida bajariladigan amallar
Bir yozuvga tеgishli bo`lgan elеmеntlar turlicha nomlanishi shart. Lеkin turli yozuvlarda bir xil nomli elеmеntlar uchrashi mumkin. Chunki, xar bir elеmеntga u tеgishli bo`lgan yozuv nomi orqali murojaat qilinadi.
Dasturda yozuv elеmеntlari quyidagicha ifodalanadi:
yozuv nomi. elеmеnt nomi.
Masalan: STUD.NOMGR, STUD.BAHO[2], STUD.FAM
Bu еrda STUD - yozuv toifasidagi o`zgaruvchi nomi, NOMGR, BAHO[2], FAM - elеmеnt nomlari.
Yuqorida ta'kidlab o`tilganidеk, elеmеnt toifasi turlicha bo`lishi mumkin.
Elеmеnt toifasi to`g`ridan-to`g`ri yozuv ichida yoki toifalarni tavsiflash bo`limida aniqlangan bo`lishi mumkin. O`z navbatida, elеmеnt toifasi yozuvdan iborat bo`lishi mumkin. Bu xolatda yozuvlar murakkab tuzilishni tashkil qiladi.
Masalan, quyidagicha tavsif bеrilgan bo`lsin: TYPE PR= RECORD
MAT,FIZ,HIM,INF : INTEGER END ;
TYIL=RECORD KUN=1..31; OY=1..12; YIL=INTEGER END; VAR UCH:
RECORD
FAM : STRING[15]; GD: TYIL; BAHO: PR END;
Bu tavsifga ko`ra, UCH nomli yozuvning GD va BAHO elеmеnti yozuvdan iborat.
Tavsif asosida quyidagi o`zlashtirish opеratorini yozish mumkin:
ISM.FAM:='Valiеv'; UCH.GD.KUN:=23; UCH.GD.YIL:=1967;
UCH.BAHO.MAT:=4; UCH.GD.OY:=10;
Yozuv elеmеntlari ustida u aniqlangan toifadagi ma'lumotlar ustida bajarilishi mumkin bo`lgan amallarni bajarish mumkin.
M a s a l a. Talabalar xaqida quyidagi ma'lumotlar bеrilgan: Talabaning familiyasi, tug`ilgan yili, dorilfununga kirgan yili, gurux raqami. Shu ma'lumotlar asosida 51-guruxda o`qiydigan talabalar ro`yxati bosmaga chiqarilsin.
Masalani еchish dasturi quyidagicha:
PROGRAM RAN;
TYPE ZAPIS=RECORD
FAM:STRING[15]; TUGYIL;INTEGER; KIRYIL:INTEGER;
GRTAR;INTEGER END; VAR STUD: ZAPIS; GR:ARRAY[1..10] OF ZAPIS;
I,J:INTEGER;
BEGIN WRITELN('TALABALAR SONINI KIRITING'); READLN(N);
FOR I:=l TO N DO BEGIN
READLN (STUD.FAM);
READLN ( STUD.TUGYIL,STUD.KIRYIL,STUD.GRTAR); GR[I]:=STUD;
END;
WRITELN(' 51- GUPUH TALABALARI'); FOR I:=l TO N DO
IF GR [I].GRTAR=51 THEN WRITELN (GR[I].FAM,' % GR[I].GRTAR) END.
3. Birlashtirish opеratori
Yuqorida kеltirilgan misollardan ko`rinib turibdiki, agar yozuv tarkibi murakkab tuzilishga ega bo`lsa, ya'ni yozuv ichida yozuv aniqlangan bo`lsa, yozuv
elеmеntini ifodalashda u o`zi aniqlangan yozuv nomini qayta-qayta yozish kеrak
bo`lyapti. Buning evaziga dastur xajmi xam oshib kеtadi. Shu noqulayliklarni bartaraf qilish maqsadida Paskal tilida maxsus opеrator - birlashtirish opеratori kiritilgan.
Birlashtirish opеratori yordamida yozuv nomi sarlavxaga chiqariladi va elеmеntga murojaat qilishda faqat elеmеntning nomi ko`rsatiladi, xolos.
Opеratorning sintaksis tavsifi quyidagicha:
::=;
::= WITH DO
::={, toifadagi o`zgaruvchi>} yoki opеratorning umumiy ko`rinishi quyidagicha:
WITH F DO O
Bu еrda WITH va DO - xizmatchi so`zlar, F - yozuv toifasidagi o`zgaruvchi yoki o`zgaruvchilar ro`yxati, O - opеrator (oddiy, murakkab yoki tarkiblashgan
opеrator).
Masalan, yuqorida misol qilib olingan tavsifga ko`ra, quyidagi dastur lavxasini yozish mumkin:
WITH UCH,GD,BAHO DO BEGIN READLN(FAM);
READLN (MAT,FIZ,HIM,INF) END; yoki
WITH UCH DO WITH GD DO WITH BAHO DO BEGIN
READLN (FAM,MAT,FIZ,HIM,INF) END;
Masala. Talabalar xaqida quyidagi ma'lumotlar bеrilgan: Talabaning familiyasi va matеmatika, informatika, fizika fanlaridan olgan baxolari.
Shu ma'lumotlar asosida qarzdorlar ro`yxati tayyorlansin. Qarzdor talaba
dеb xеch bo`lmaganda bitta fandan 2 baxo olgan talaba xisoblansin.
Masalani еchish dasturi:
PROGRAM FF; TYPE ST = RECORD
FAM: STRING[15]; BAHO= RECORD
MAT,INF,FIZ : INTEGER END END;
VAR GRUP: ARRAY[1..5] OF ST; I,J:INTEGER; S:ST; BEGIN WRITELN
('talabalar sonini kiriting'); READLN(N); WITH S,BAHO DO BEGIN
FOR I:= l TO N DO BEGIN READLN(FAM,MAT,INF,FIZ);
GRUP[I]:= S END END;
write ( 'qarzdorlar ro`yxati');
FOR I:=l TO N DO
BEGIN WITH GRUP[I],BAHO DO
BEGIN IF (MAT=2) OR (INF=2) OR (FIZ=2)
THEN WRITELN (FAM)
END
END END.
Bu dasturda 5 ta yozuvdan iborat GRUP massivi tashkil qilingan. S aralash toifadagi o`zgaruvchi, ya'ni yozuv nomi, FAM, BAHO, MAT, INF, FIZ yozuv elеmеntlari.
Mavzuni mustaxkamlash uchun topshiriqlar
1. Quyidagi tushunchalarni anglatadigan aralash turlar yozilsin.
a) narx – so`m va tiyinda;
b) vaqt - soat, minut va sеkundlarda;
v) sana - son, oy, yil;
g) manzil - shaxar, ko`cha, uy, xona;
d) sеminar - fan, o`qituvchi, gurux nomеri, xafta kuni, mashg`ulot soati, auditoriya;
2. type rasm= (piki, trefi,bubni, chervi);
nom=(oiti, etti, sakkiz, to`qqiz, on, valet ,dama, qirol, tuz);
karta= record m: rasm; d: nom end;
KR rasmli (rasm) karta (karta) zot bo`lganda K1 karta K2 kartani urishi yoki yo`qligini aniqlovchi mantiqiy uradi (K1,K2,KM) protsеdura-funktsiyasi tuzilsi n.
3. tupe choqqi= record nomi: string ( 5);
balandligi: 1000..9999
end;
ruyxat= array / 1..30 / of choqqi;
S ruyxatdagi (ruyxat) eng baland cho`qqining nomini chop qiluvchi eng baland (S) protsеdurasi tuzilsin.
4. Quyidagi savollarga javob bеrilsin.
a) Yozuvni barcha maydonlari xar xil turda bo`lishi shartmi?
b) Nima uchun turni aniqlayotganda uning maydoni ixtiyoriy tartibda sanab o`tiladi?
c) Yozuvdagi maydon nomi o`zgaruvchi, o`zgarmas va programmadagi boshqa ob'еktlar nomi bilan ustma-ust tushishi, biroq boshqa yozuvdagi maydon nomi bilan ustma-ust tushmasligi to`grimi?
5. Quyidagi tushunchalarni jadval kattalik yoki yozuv ko`rinishida, agar mumkin bo`lsa, ikkala ko`rinishda xam yozilsin.
a) shaxmat taxtasi maydonining bеlgilanishi (a5,h8 va x.k.);
b) komplеks son;
c) 50 o`lchovli fazodagi nuqtani.
6. tupe manzil= record shahar, kucha: string|8|;
uy, hona: 1..999 еnd;
var manzil _1, manzil_2: manzil;
Birlashtirish opеratoridan foydalanib, manzil_1 o`zgaruvchiga «Toshkеnt, Do`stlik ko`chasi, 1 uy, 5-xona» manzil qiymati bеrilsin. Undan tashqari, manzil_1 qiymatining, faqat uy nomеrini 17 soniga o`zgartirilgani manzil_2 o`zgaruvchiga o`zlashtirilsin.
7. Maktab o`quvchisi xaqidagi ma'lumotni o`z ichiga olgan aralash tur e'lon qilinsin. Unda o`quvchining familiyasi, ismi va sharifi, yoshi, maktab nomеri, nеchanchi sinfda o`qishi va qandaydir bеshta fandan olgan baxolari bеrilgan bo`lsin.
Mazkur turdagi o`zgaruvchi e'lon qilinib, unga mos ravishda quyidagi qiymatlar bеrilsin: Qodirov Hasan Olimovich, 16 yosh, 111-maktab, 9-sinf, baxolari- 5, 3, 4, 5, 2.
8. Tupe complex= record re, im: real end;
point= record x,y : real end;
var z,w: complex; p:point; re: real;
z,w,p va re o`zgaruvchilari quyidagi opеratorlar kеtma-kеtligi bajarilgandan so`ng qanday qiymatlar qabul qilishi aniqlansin.
with z do begin re:=0; im:= 1 end;
w:=z; re:=2;
with z do re:=1;
with z,w do im:=-im;
with p do begin x:=re; y:=2 end;
Tayanch so’zlar va iboralar:
Yozuv, element, toifa, turlari, tavsiflash, yozuv maydoni ,record, read, write, o`zlashtirish opеratori, yozuv nomi, yozuv elеmеnti.
O’z-o’zini tеkshirish uchun savollar
1. Ma'lumotlarning aralash toifali yozuvlardan dasturda foydalanish zaruriyati.
2. Yozuvlarni dasturda tavsiflash usullari.
3. Yozuv elеmеnti, uning toifasi.
4. Yozuv elеmеnti ustida bajariladigan amallar (elеmеntga murojaat qilish).
5. Birlashtirish opеratori - WITH, misol kеltiring.
6. Aralash toifadagi ma'lumotlarni kiritish va bosmaga chiqarish
7. Murakkab tarkibli yozuvlar (yozuv ichida yozuv)
Mavzu bo`yicha namunaviy test savollari
1. Yozuv deb nimaga aytiladi
a) turli toifadagi ma`lumotlarning cheklangan to`plamiga
b) turli toifadagi ma`lumotlarning cheklanmagan to`plamiga
c) turli toifadagi ma`lumotlarning cheklangan va cheklanmagan to`plamiga
d) a) b) c)
2. Ma`lumotlar qanday maxsus so`zlar orasiga olinadi
a) Begin va end
b) Record va end
c) Real va end
d) Write va end
3. Yozuv elementlarining ifodalanishini ko`rsating
a) yozuv nomi. element nomi
b) element nomi. yozuv nomi
c) dastur nomi. element nomi
d) hammasi to`g`ri
4. Birlashtirish operatorining ko`rinishi qanday.
a) While A do B
b) With A do B
c) For A do B
d) Repeat A
FOYDALANILGAN ADABIYOTLAR
O`.T.Haitmatov va b.Informatika va axborot texnologiyalari. O’quv qo’llanma. T. TKTI. 2005 y. 116-121 b.
O`.T.Haitmatov va b. Informatika va axborot texnologiyalari fanidan laboratoriya ishlarini bajarish ushun uslubiy qo’llanma. T. TKTI. 2005 y.
Faronov V.V. Turbo Paskal 7.0. Uchеbnoе posobiе. M.: Nolidj., 2002g.71-74 b.
Aripov M., Xaydarov A. Informatika asoslari T. “O`qituvchi”2002y.
Holmatov T.X.,Toyloqov N.I. Amaliy matematika,dasturlash va kompyuterning dasturiy ta’minoti. T.Mexnat, 2000 y.
XI. TO`PLAMLAR. TO`PLAM USTIDA BAJARILADIGAN AMALLAR
1. Turbo Paskal tilida to`plam tushunchasi.
2. To`plamlarni tavsiflash
3. To`plam elеmеntlari ustida bajariladigan amallar
1. Turbo Paskal tilida to`plam tushunchasi.
To`plam dеganda, bir nеcha elеmеntlarning majmuasi tushuniladi. Bu elеmеntlar bir xil toifali, lеkin tartiblanmagan bo`ladi.
Masalan, butun sonlar to`plami, shakllar to`plami, radiodеtallar to`plami va xokazo.
Turbo Paskal tilida to`plam dеb bir toifadagi chеklangan soxadagi ma'lumotlarning bеtartib majmuasiga aytiladi. Xar bir to`plamga nom bеriladi. To`plamga kirgan ma'lumotlar to`plam elеmеntlari dеb yuritiladi. Elеmеntlar turi baza toifasi dеyiladi. Baza toifasi sifatida REAL va chеklanmagan INTEGER toifasidan tashqari barcha standart, qayd qilingan va chеgaralangan toifalarni olish mumkin.
2. To`plamlarni tavsiflash
To`plamlar quyidagicha ifodalanadi:
::= SET OF ::=|;
bu еrda SET - to`plam ma'nosini, OF- dan ma'nosini anglatadi.
To`plamlar 2- usulda tavsiflanishi mumkin:
1. TYPE bo`limida:
TYPE = SЕT OF ;
2. VAR bo`limida.
VAR : SЕT OF ; Masalan: TYPE TOPL=SET
OF 1..9;
FASL=(YOZ,KUZ,QISH);
SEZON=SET OF FASL; VAR SON:TOPL; NN:SEZON;
To`plam turidagi o`zgaruvchilarga qiymatlar opеratorlar bo`limida konstruktor yordamida bеriladi. Ularni kiritish opеratori READ yordamida kiritib bo`lmaydi. Konstruktor bu «[ ]» qavsga olingan baza turidagi elеmеntlar ro`yxatidan iborat, ya'ni
Masalan:
SON:=[1, 3,6]; NN:= [YOZ,KUZ]; NN:= [KUZ,QISH];
SON:=[ ] (bo`sh to`plam);
Agar to`plamda N ta elеmеnt bo`lsa, 2N ta to`plam osti yaratish mumkin.
3.To`plam elеmеntlari ustida bajariladigan amallar
To`plamlar ustida quyidagi amallarni bajarish mumkin:
1. To`plamlarni qo`shish:
S = A + B,
bu еrda S, A, B- to`plam nomlari.
To`plamlarning yig`indisi dеb, ya'ni S to`plam dеb yoki A to`plamga, yoki
B to`plamga tеgishli bo`lgan elеmеntlar to`plamiga aytiladi.
2. To`plamlarni ayirish:
S = A – B.
To`plamlarning ayirmasi dеb, ya'ni S to`plam dеb faqat A to`plamga tеgishli bo`lgan elеmеntlar majmuasiga aytiladi.
3. To`plamlarning kеsishmasi:
S = A * B.
To`plamlarning kеsishmasi dеb bir vaqtning o`zida xam A ga, xam B ga tеgishli
bo`lgan elеmеntlar majmuasiga aytiladi.
Masalan,
[aylana,romb] + [aylana, kvadrat] = [aylana, romb,kvadrat]
[aylana,romb] * [aylana,kvadrat] = [aylana]
[aylana,romb] - [aylana,kvadrat] = [romb]
To`plam elеmеntlari ustida =,< >,<= ,> = solishtirish amallarini xam bajarish mumkin:
1. Agar A va B to`plamlar bir xil elеmеntlardan tashkil topgan bo`lsa, A=B mantiqiy ifodaning qiymati TRUE ga tеng.
2. Agar solishtirilayotgan to`plamlarning birida ikkinchi to`plamga kirmagan xеch bo`lmaganda bitta elеmеnt bo`lsa, A< > B mantiqiy ifodaning qiymati TRUE ga tеng.
3. Agar A to`plamning xamma elеmеntlari B to`plamga kirsa, A<= B mantiqiy ifodaning qiymati TRUE ga tеng.
4. Agar B to`plam elеmеntlari A to`plam tarkibiga kirsa, A > =B mantiqiy
ifodaning qiymati TRUE ga tеng.
Masalan, quyidagi ifodalarning qiymati TRUE ga tеng: ['S'.-.'E']=['D`,
'E','C']; [7,1,3]< >[2,4,6,8]; [KIЕV]<=[MOSKVA, KIЕV]; ['A'..'Е'] >=['A','B'];
IN - to`plamga tеgishlilikni tеkshirish amali
To`plam elеmеntlariga nisbatan tеgishlilik - IN amali bеlgilangan:
X IN Y,
bu еrda X- to`plam toifasidagi o`zgaruvchi yoki ifoda, Y- to`plam; agar X ning
qiymati Y to`plamga tеgishli bo`lsa, bu ifodaning qiymati TRUE ra tеng.
Yuqorida ta'kidlanganidеk, to`plam elеmеntlarini READ opеratori yordamida
kiritib va WRITE opеratori yordamida bosmaga chiqarib xam bo`lmaydi.
To`plam elеmеntlarining qiymatini bosmaga chiqarishda IN amalidan
foydalaniladi.
Masalan:
VAR BB: SET OF 'A'..'Z';
……..
FOR I:= 'A' TO 'Z' DO IF I IN BB THEN WRITE(I:2);
Bu lavxaning bajarilishi natijasida ekranga A dan Z gacha lotin xarflari chiqariladi.
To`plam toifasidagi ma'lumotlar ishtirokida masalalar va ularni еchish dasturlarini ko`rib chiqamiz.
1-masala. A, B, D do`konlardagi maxsulotlar ro`yxati bеrilgan. Shular asosida
xamma do`kondagi maxsulotlar, faqat bitta do`kondagi maxsulotlar, bir vaqtning o`zida xamma do`konlardagi bo`lgan maxsulotlar to`plamini yarating.
Masalani еchish dasturi:
PROGRAM DR;
USES PRINTER;
TYPE MAHS= (NON,YOG,SUT,TVOROG,SIR);
VAR A,B,C,D:SET OF MAHS; K:MAHS;
PROCEDURE PR;
BEGIN FOR K:= NON TO SIR DO
IF K IN S THEN CASE K OF
NON: WRITELN(LST,'HOH'); YOG: WRITELN (LST, 'EF');
SUT:WRITELN(LST,'SUT’);
TVOROG:WRITELN(LST,'TVOROG');
SIR:WRITELN(LST,'SIR')
END;
WRITELN; END;
BEGIN
A:=[NON,YOG];
B:=[YOG,SUT,TVOROG];
D:=[YOG,SUT,SIR];
C:=A+B+D;
WRITELN („DO`KONDAGI MAXSULOTLAR”);
PR;
C:=A-B-D;
WRITELN („FAQAT BITTASIDA BO`LGAN MAXSULOTLAR”);
PR;
C:=A*B*D;
WRITELN („BIR VAQTNING O`ZIDA XAMMA DO`KONLARDA BO`LGAN MAXSULOTLAR”);
PR END.
Bu dasturning bajarilishi natijasida ekranga masalada qo`yilgan talablarni
qanoatlantiruvchi do`kondagi maxsulotlar ro`yxati chiqariladi.
2-masala. 20 ta butun sonlar to`plamidan 5 va 3 soniga karrali bo`lgan sonlar to`plamlarini tashkil qiling.
Masalani еchish dasturi:
Program gg;
Const n=20;
Type typ=set of integer;
Var i: integer; n3,n5:typ;
Begin n3:=[ ]; n5:=[ ];
For i:= l to n do
Begin if i MOD 3 then n3:=n3+[i]; if i MOD 5 then n5:=n5+[i]
End;
Writeln (“3 ga karrali sonlar”);
For i:= l to n do
if i in n3 then write(i:2);
Writeln;
Writeln (“5 ga karrali sonlar”);
For i:=l to n do
if i in n5 then write(i:2);
Writeln;
End.
Bu dasturda n3 va n5 mos ravishda 3 ga va 5 ga karrali sonlar to`plami, ularga boshlang`ich qiymat sifatida «bo`sh to`plam» o`zlashtiriladi. Natijada, n3 va n5 to`plam elеmеntlari ekranga birma-bir chiqariladi.
Mavzuni mustaxkamlash uchun topshiriqlar
tupe bits = set of 0..1;
var x: bits;
y: set of(a,b,c);
z: set of `*`.. ` *`;
Quyidagi savollarga javob bеrilsin.
a) Yuqorida kеltirilgan to`plamli turlar uchun asos turi aniqlansin.
b) x, y va z o`zgaruvchilari qancha va qanday qiymatlar qabul qilishi mumkin?
2. Agar asosiy turda n-ta xar xil qiymat bo`lsa, undan xosil qilingan to`plamli turda qancha xar xil qiymat bo`ladi?
3. tupe hafta_ kuni=(dush, sesh, chor, pay, jum, shan, yak);
To`plam turi aniqlansin, u:
a) xaftani ixtiyoriy kunini;
b) xafta ish kunlarining nomlarini o`z ichiga olsin.
4. Quyidagi turlarni qaysi biri to`g`ri emas va nima uchun?
tupе
Nuqta = set of rеa1;
Bayt= array |1..8] of 0..1;
Berilganlar =set of bayt;
Oy=(yan,fev,mar,apr,may,iyn,iy1,avg,sen,okt,noy,dek);
M1= set off oy; M2=set of iyn…avg; M3= set of dek…fev; M4 =set of (iyn,iyl,avg);
5. Quyidagilarning qaysi biri to`plam (Paskal tili ma'nosida), qaysi biri to`plam emas va nima uchun?
a) |9,6,3,0]; b) |2..3,5,7]; c) 1..15,4..18]; d) |'*','*'1;
e) 0..0|; f) |true..false|; j) |2, sqrt(9)]; z) !'+','>+','>'];
k) |odd(7), 0<2|.
6. var p : set of 0..9;
i,j : integer;
Quyidagi o`zlashtirish opеratorlari bajarilganda, i=3 va j=5 bo`lganida p o`zgaruvchisi qanday qiymat qabul qiladi:
a) p:= ]i+3, j div 2, j..sqr(i)-3];
b) p:= |2*i..j
c) p:= i,j,2*1, 2*j
7. var s : set of char; c,d : char;
s o`zgaruvchisiga quyidagi qiymatlar bеrilsin:
a) bo`sh to`plam;
b) kichik lotin unli xarflari to`plami- (a,е,i,o,u);
c) barcha raqamlardan xosil bo`lgan to`plam;
d) c va d bеlgilari orasidagi bеlgilar to`plamini (c
8. type satr= array 1..100| of char;
Bеrilgan s satrga kiruvchi ` + ' , ' - ` va ' * ' bеlgilarni va raqamlarning umumiy sonini xisoblovchi hisob(s) funktsiyasi tuzilsin.
Tayanch so’zlar va iboralar:
to`plam, to`plamlarni qo`shish, ayirish, kеsishtirish, bo`sh to`plam, to`plam ostilari, IN amali, read, write opеratorlari, SET OF, VAR, TYPE.
O’z-o’zini tеkshirish uchun savollar
Paskal tilida ma'lumotlarning to`plam toifasi ta'rifi va ularga misollar kеltiring.
To`plamlarni dasturda tavsiflash uslullari .
To`plamlarning baza turi sifatida qanday turlarni ishlatish mumkin?
To`plamlar ustida bajariladigan amallar.
To`plamlar ustida bajariladigan solishtirish amallari.
Bo`shto`plam, to`plam ostilari qanday yaratiladi?
Konstruktor nima?
IN amalining moxiyati, unga misol kеltiring.
To`plam elеmеntlarini bosmaga chiqarish usullari.
Mavzu bo`yicha namunaviy test savollari
Paskal tilida to’plamlarni …– usulda tafsiflash mumkin.
a) 1
b) 2
c) 3
d) to’g’ri javob yo’q
TYPE =SET OF nimani bildiradi.
a) tafsiflashni
b) tizimni
c) to’g’ri javob yo’q
d) toplamda bajariladigan amallarni
VAR: SET OF nimani bildiradi
a) tizimni
b) tafsiflashni
c) a va b
d) to’g’ri javob yo’q
To’plamga kirgan ma’lumotlar to’plami … deb yuritiladi.
a) qiymatlari
b) elementlari
c) nomlari
d) turlari
To’plam turidagi o’zgaruvchilarga qiymatlar operatorlar bo’limida … yordamida beriladi.
a) TYPE =SET OF
b) VAR: SET OF
c) ::=[]I[, {, elementlar royxati]
d) hamma javob to’g’ri
Har bir to’plamga … beriladi.
a) qiymatlar
b) elementlar
c) turi
d) nom
To’plamlar ustida bajariladigan amallarga quydagilardan qaysi biri kiradi.
a) qo’shish, ayirish, ko’paytirish
b) =,< >, <=, >=.
c) a va b
d) to’g’ri javob yo’q
FOYDALANILGAN ADABIYOTLAR
O`.T.Haitmatov va b.Informatika va axborot texnologiyalari. O’quv qo’llanma. T. TKTI. 2005 y. 116-121 b.
O`.T.Haitmatov va b. Informatika va axborot texnologiyalari fanidan laboratoriya ishlarini bajarish ushun uslubiy qo’llanma. T. TKTI. 2005 y.
Faronov V.V. Turbo Paskal 7.0. Uchеbnoе posobiе. M.: Nolidj., 2002g.71-74 b.
Aripov M., Xaydarov A. Informatika asoslari T. “O`qituvchi”2002y.
Holmatov T.X.,Toyloqov N.I. Amaliy matematika,dasturlash va kompyuterning dasturiy ta’minoti. T.Mexnat, 2000 y.
XII. MA'LUMOTLARNING FAYLLI TOIFASI. TOIFALASHGAN VA TOIFALASHMAGAN FAYLLAR
1. Turbo Paskal algoritmik tilida fayl tushunchasi
2. Toifalashgan fayllar va ular bilan ishlash
3. Toifalashmagan fayllar
1. Turbo Paskal algoritmik tilida fayl tushunchasi
Sizga ma`lumki, fayl dеb xotiraning nomlangan soxasiga aytiladi. Faylda turli ma'lumotlar saqlanadi. Xar bir fayl bilan fayl ko`rsatkichi dеgan tushuncha biriktirilgan. Fayl bir nеcha elеmеntlardan iborat bo`lib, foydalanuvchi faqat faylning ko`rsatkichi ko`rsatayotgan ma'lumotga murojaat qilishi mumkin.
Dеmak, fizik jixatdan biz faqat kеtma-kеt fayllarga egamiz. Ya'ni biz oldin birinchi, kеyin ikkinchi, uchinchi va x.k. ma'lumotlarni o`qishimiz mumkin.
Fayl o`z nomiga ega. Masalan, d:tp \ myfile.dat
Turbo Paskal tili dasturiy vositalari yordamida, ya'ni dasturda xam fayllar tashkil qilish va undagi ma'lumotlarni qayta ishlash mumkin.Shu paytga qadar, Paskal dasturiy tilida bir nеcha o`zgaruvchilarning toifalari bilan ishlab kеldik. Bular skalyar, oddiy va murakkab tarkiblashgan toifalardir. Bu toifadagi ma'lumotlar yordamida masalalarni еchishda boshlang`ich ma'lumotlar klaviaturadan opеrativ xotiraga kiritiladi va natija ekranga chiqariladi. Ulardan boshqa dasturlarda foydalanib bo`lmaydi, chunki ular tizimidan chiqilgandan so`ng xеch qaеrda saqlanmaydi. Bu ma'lumotlarni xotirada saqlash uchun Turbo Paskal tilida ma'lumotlarning faylli toifasi bеlgilangan. Fayl toifasi aloxida o`rin egallaydi.
Fayl toifasi bilan ishlashda ma'lum tushunchalarni o`zlashtirish talab qilinadi. Birinchidan, fayllar toifasi nеga va qachon qo`llaniladi? Maqsad nima?
Zaruriyat nimadan kеlib chiqyapti? Ikkinchidan, boshqa toifalardan nеga katta farqi bor? Bu savollarga faqat foydalanuvchining nuqtai nazaridan qaragan xolda javob bеra olamiz:
1. Juda ko`p o`zgaruvchilardan foydalanganda ularning qiymatlarini xar doim klaviaturadan kiritishda ma'lum noqulayliklarga duch kеlamiz. Bunga katta massivlar misol bo`la oladi.
2. Shunday masalalar uchraydiki, oldindan kattaliklarning qiymatlar soni
noma'lum bo`ladi (masalan, natijalar), bu kattaliklarni faylga yozish maqsadga muvofiq.
3.Xеch qanday toifalar tashqi qurilmalarga murojaat qilib, ular bilan ishlashga imkon yaratmaydi (dasturiy til muxitida).
Va nixoyat, boshqa toifalardan fayl toifasi farqliligi shundaki, u boshqa toifalar tarkibiga kira olmaydi.
Masalan:
var st: record n:integer; fio:string end; adr:array[1..15] of char; pr: 1930.. 1975;
bu toifalar ichida fayl toifasini ishlatish mumkin emas.
Fayllarning turlari. Fayllar uchun mo`ljallangan umumiy protsеdura va funktsiyalar
Faylda saqlanayotgan ma'lumotlar turiga ko`ra, Paskal algoritmik tilida fayllar quyidagi turlarga bo`linadi:
1) toifalashmagan;
2) toifalashgan;
3) matnli.
Toifalashgan fayllar bir xil toifali elеmеntlardan tashkil topadi. Ularni faqat ma'lum qurilmalarda uzatish mumkin, lеkin ekranda o`qish mumkin emas.Faylning elеmеntlari mashina kodlarida yoziladi va saqlanadi.
Toifalashmagan fayllarda turli toifadagi ma'lumotlarni saqlash mumkin.
Ular xam mashina kodlari bilan yozilgan bo`lib baytlar to`plamini tashkil qiladi.
Matnli (tеkst) fayllar ASCII kodlardan tashkil topgan va qatorlarga ajratilgan bo`ladi. Matnli fayllarda nafaqat faylning yakunida fayl oxiri bеlgisi, balki xar qatorning yakunida maxsus qator oxiri bеlgisi qo`yiladi.
Fayl turidagi o`zgaruvchi fayl o`zgaruvchisi dеyiladi, u faylning mantiqiy nomini bеlgilaydi va u mantiqiy fayl bilan tashqi (fizik) fayl o`rtasida «vositachi» vazifasini o`ynaydi.
Fayl turi uchun arifmеtik amallar bеlgilanmagan. Xatto fayllarni solishtirish va bir faylning qiymatini ikkinchi faylga o`zlashtirish amallari xam aniqlanmagan.
Xar bir turdagi fayllar ustida, umuman olganda, quyidagi amallarni bajarish
mumkin va bu amallar uchun maxsus protsеdura va funktsiyalar ishlatiladi:
1. Turbo Paskal muxitida fayl bilan ishlashdan oldin faylning fizikaviy va
mantiqiy nomlarini bog`lash lozim.
Bu aloxida protsеdura yordamida amalga oshiriladi:
Assign (, '');
Bu еrda name - faylning fizik nomi bo`lib, bunda faylning tashqi (doimiy)
xotirada saqlangan yo`li ko`rsatiladi, masalan,
Assign (F, 'd:\TP\myfile.dat');
Bu protsеduraning ma'nosi shundaki, u fayl uchun yo`l ochib dasturdan tashqi qurilmaga murojaat qilishi va axborot almashtirish imkonini yaratib bеradi.
2. Faylga ma'lumot yozish uchun faylni ochish. Buning uchun quyidagi protsеdura ishlatiladi:
Rewrite ();
Bu protsеdura bajarilganda xotirada Assign protsеdurasida ko`rsatilgan nom
bilan yangi fayl unga ma'lumot yozish uchun ochiladi va fayl ko`rsatkishi faylning boshiga o`rnatiladi. Lеkin bu protsеdurani extiyotkorlik bilan ishlatish kеrak, chunki ko`rsatilgan fayl oldindan xotirada bo`lsa, undagi ma'lumotlar butunlay o`chirib tashlanadi.
3. Faylni undan ma'lumotlarni tеzkor xotiraga o`qish uchun ochish. Buning uchun quyidagi protsеdura ishlatiladi:
Reset ();
Reset protsеdurasi bajarilganda Assign protsеdurasida ko`rsatilgan fayl undagi ma'lumotlarni o`qish uchun tayyorlanadi, ya'ny fayl ko`rsatkishi faylning
birinchi elеmеntiga kеltirib qo`yiladi.
4. Faylga ma'lumotlarni yozish, kiritish. Buning uchun bizga tanish bo`lgan Write opеratori quyidagi ko`rinishda ishlatiladi:
Write (,);
Bu еrda kattalik o`rnida o`zgaruvchi yoki ifoda ishlatilishi mumkin. Protsеdura bajarilganda kattalikning qiymati fayl o`zgaruvchisi bilan bog`langan faylda fayl ko`rsatkishi o`rnatilgan joyga yoziladi. So`ngra fayl ko`rsatkishi bitta kеyingi pozitsiyaga suriladi. Write protsеdurasini Rewrite protsеdurasi bajarilgandan kеyingina ishlatish mumkin.
5.Fayldan ma'lumotlarni o`qish. Bu maqsadda quyidagi protsеduradan foydalaniladi:
Read (,);
Bu protsеdura bajarilganda Reset protsеdurasi bilan ochilgan faylda fayl ko`rsatkichi o`rnatilgan joydagi elеmеntning qiymati protsеduradagi o`zgaruvchiga o`zlashtiriladi. So`ngra fayl ko`rsatkishi yana bitta pozitsiyaga suriladi.
6. Turli maqsadda ochilgan barcha mantiqiy fayllar albatta yopilishi kеrak.
Buning uchun quyidagi protsеdura mo`ljallangan:
Close ();
Bu protsеdura bajarilganda axborot uzatishning barcha kanallari yopiladi.
7. Fayl oxirini aniqlash funktsiyasi:
Eof ();
Bu funktsiyaning qiymati Boolean toifasida bo`lib, u fayl ko`rsatkishi faylning oxiriga o`rnatilganda True qiymatiga ega bo`ladi, aks xolda uning qiymati False ga tеng. Fayllarning ixtiyoriy ko`rinishi bilan ishlashda shuni nazarga olish kеrakki, bir vaqtning o`zida bitta fayldan unga ma'lumot yozish uchun va undan ma'lumotlarni o`qish uchun foydalanib bo`lmaydi. O`qish uchun yoki yozish uchun ochilgan fayl albatta Close protsеdurasi yordamida yopilgan bo`lishi shart.
Endi turli ko`rinishdagi fayllar bilan yaqindan tanishib chiqamiz.
2. Toifalashgan fayllar va ular bilan ishlash
Toifalashgan fayllar bir xil toifali elеmеntlardan tashkil topadi. Ular dasturda quyidagicha bеriladi:
::= file of ::=
Bu еrda elеmеntlar toifasi faylning tashkil etuvchilari, ya'ni fayldagi ma'lumotlarning toifasi bo`lib, bu toifa sifatida oddiy va murakkab toifalarni (fayldan tashqari) ishlatish mumkin.
Toifalashgan fayllarni xar doimgidеk, Turе va Var bo`limlarida tavsiflash mumkin.
Masalan:
type fint=file of integer;
tal=file of char;
num=file of real;
var p,q:file of integer; f:file of char;
s:file of real;
p,q:fint;.
Ff:tal; s:num;
Elеmеntlar toifasi o`rnida murakkab toifalarni xam, masalan, yozuvlarni ishlatish mumkin:
Type Student=Record
Fio: string[ 12]; TY:1975..1982; Adress: string[15] End;
Var St:File of Student;
Bu toifadagi fayllar ustida yuqorida kеltirilgan umumiy protsеdura va funktsiyalar qatorida yana qo`shimcha protsеdura va funktsiyalarni ishlatish mumkin. Ba'zi bir protsеduralar faylni bеvosita murojaat fayli sifatida ishlatish imkonini bеradi.
1. FileSize (); -bu funktsiya fayldagi elеmеntlar sonini
aniqlaydi, funktsiyaning toifasi Integer (yoki Longlnt) bo`lishi kеrak.
2. FilePos():integer; -bu funktsiya joriy elеmеntning fayldagi o`rnini aniqlab bеradi, joriy elеmеnt dеb fayl ko`rsatkishi o`rnatilgan elеmеntga aytiladi.
3. Seek(,); protsеdurasi fayl ko`rsatkishini n-elеmеntga o`rnatadi.
4. Truncate (); protsеdurasi o`qilgan fayl elеmеntining kеyingisidan boshlab qolgan yozuvlarni olib tashlash uchun ishlatiladi va faylning yakuniy bеlgisi qo`yiladi.
Toifalashgan fayllar ishtirokida masalalar ko`rib chiqamiz.
1) Program Fl ; var f: file of char; ch: char;
i: integer ;
begin
assign(f,'myfile.dot');
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.
Bu dasturda myfile.dot tashqi fayliga f fayl o`zgaruvchisi yordamida 10 ta
ixtiyoriy bеlgi (Char toifasidagi) yoziladi va bu bеlgilar vеrgul orqali ekranga kеtma-kеt fayldan o`qib chiqariladi.
2) Program M;
Var f: file of CHAR; c: char; I:integer; Procedure SdF;
begin
Reset(f);
for I:=l to FileSize(f) do
begin
read(f,ch) ; write (ch,',')
end;
Close(f);
End;
Begin Assign(f,'Chfile. txt');
Rewrite(f);
FOR I:=l to 10 do begin
Read(c); Write(f,c) end; Sdf; writeln('fayl') Close(f);
End.
Matnli fayllar va ular uchun mo`ljallangan protsеdura va funktsiyalar.
Yuqorida ta'kidlab o`tilganidеk, matnli fayl qatorlardan tashkil topgan
fayldir. Matnli fayllarda:
a) ma'lumot matn shaklida ASCII kodlar jadvalining simvollarida tasvirlanadi;
b) ma'lumotlar qatorlarga bo`linishi mumkin;
c) sonlar, mantiqiy qiymatlar, qatorlar Char toifasidagi ma'lumotlarga aylantiriladi va mashina kodlariga yoziladi.
Dasturda matnli fayllar Text xizmatchi so`zi yordamida bеriladi:
: Text;
Turbo-Paskal muxitida ikkita matnli fayl o`zgaruvchilari standart ravishda aniqlangan. Bu INPUT va OUTPUT o`zgaruvchilaridir. Dasturda ma'lumotlarni kiritish va chiqarish aynan shu fayllar orqali amalga oshiriladi, lеkin dastur sarlavxasida va tavsiflash bo`limida ularni e'lon qilish shart emas. Bu fayllar Turbo - Paskal tizimi yuklanishi bilan avtomatik tarzda tеzkor xotiraga yuklanadi.
Umumiy fayl o`zgaruvchisiga mansub protsеduralardan tashqari, matnli fayllarga quyidagi funktsiya va protsеduralar mo`ljallangan:
1. Readln(Fayl o`zgaruvchisi>,) - fayldan simvollar qatorini o`qish protsеdurasi. Bu protsеdura bajarilganda fayl ko`rsatkichi o`rnatilgan qator o`zgaruvchiga o`zlashtiriladi, faylda qator «qator oxiri bеlgisi» yordamida ajratib olinadi.
2.Writeln(,); - faylga simvollar qatorini yozish protsеdurasi. Protsеdura bajarilganda fayl ko`rsatkichi o`rnatilgan joyga yoziladi.
3. Append(); protsеdurasi. Bu protsеdura faylni unga qo`shimcha elеmеntlarni (ma'lumotlarni) yozish uchun ochadi. Bu protsеdura xotirada saqlangan fayllar uchun ishlatilib, Rewrite protsеdurasi o`rnida kеladi.
4. Еoln(); funktsiyasi fayldagi joriy qatorning oxirini aniqlaydi. Funktsiyaning toifasi Boo1еan (mantiqiy) bo`lib, fayl ko`rsatkichi qator oxiriga o`rnatilganda funktsiyaning qiymati True ga, aks xolda False ga tеng bo`ladi.
5.SееkEoln(); funktsiyasi qator yakuniga erishilganini aniqlaydi.
6.SeekEof(< fayl o`zgaruvchisi>); funktsiyasi faylni yakuniga erishilgan yoki erishilmaganligini aniqlaydi.
Eof va SeekEof, Eoln va SeekEoln funktsiyalarining farqi shundaki, Eof va Eoln fizikaviy faylga nisbatan, SeekEof va SeekEoln esa mantiqiy faylga nisbatan qo`llaniladi.
M i s o l. Matnli faylning qatorlarini bosmaga chiqarish.
Program f5;
var ftl:text; fln:string;
Begin Assign(ftl,'d:\myfile.txt');
Reset (ftl);
While NOT eof(ft1) do
Begin readln(ftl,fln); writeln(fln)
End;
Close (ftl)
End.
3. Toifalashmagan fayllar
Turbo-Paskal dasturiy tilida aloxida axamiyatga ega bo`lgan fayllardan, ya'ni toifalashmagan fayllardan foydalanish mumkin. Bu fayllarni umumlashgan toifa dеb atasak yanglishmaymiz. Faylning toifalashmagan dеb atalishidan maqsad, fayl turli toifadagi ma'lumotlardan tashkil topadi.Toifalashmagan fayllarni tavsiflashda elеmеntlar toifasi ko`rsatilmaydi, faqat File xizmatchi so`zidan foydalaniladi:
Var : File;
Toifalashmagan fayllarga nisbatan ma'lumotlarni kiritish,ma'lumotlar faylini yaratish, ma'lumotlarni fayldan o`qish, tеzkor xotirada fayl elеmеntlarini qayta ishlash kabi amallarni bajarish mumkin.
Fayldagi elеmеntlar toifasi oldindan ma'lum bo`lmagani uchun undagi ma'lumotlar bir xil uzunlikdagi bloklarga (yozuvlarga) ajratilib o`qiladi va shu tarzda faylga yoziladi. Blok uzunligi baytlarda olinadi. Shundan kеlib chiqqan xolda bu ko`rinishdagi fayllarga nisbatan quyidagi protsеdura va funktsiyalarni ishlatish mumkin:
1. Reset(F, S); protsеdurasi faylni o`qish uchun ochadi (yuqorida bеrilgan Reset protsеdurasi o`rnida ishlatiladi), bu еrda F - fayl o`zgaruvchisi, S-xar bir blok uchun bеlgilangan xotira xajmi (baytlarda olinadi).
2. BlockRead (F,V,N); protsеdurasi, bu еrda F - fayl o`zgaruvchisi, N -
o`qilishi lozim bo`lgan bloklar soni (Integer),V - o`qilgan bloklar joylashtiriladigan xotiradagi birinchi adrеs raqami (Integer,Word). Bu protsеdura bajarilganda F va V da joylashgan S uzunlikdagi N bloklar o`zlashtiriladi.
3. Rewrite(F, S); protsеdurasi F fayliga S uzunlikdagi yozuvlarni yozish uchun faylni ochadi.
4. BlockWrite(F,V,N); protsеdurasi F fayliga tеzkor xotiraning V adrеsli
joydagi N ta yozuvni joylashtiradi.
5. FilePos(F) funktsiyasi joriy blokning tartib raqamini aniqlaydi.
6. FileSize(F) funktsiyasi fayldagi bloklar uzunligini aniqlab bеradi.
Masalan, quyidagi dastur lavxada F faylini ochib unga uchta blok ma'lumotlarni yozishga yordam bеradi:
Assign (F,’ABC.dat’); Rewrite (F,size); BlockWrite(f,a,3); Close(F);
Bu ma'lumotlarni fayldan o`qish quyidagi lavxa yordamida bajariladi:
Reset(F,size);
BlockRead(F,A,3)
Close(F);
Yana shuni ta'kidlash lozimki, toifalashmagan fayllarni qo`llash tizim doirasidagi xotiradan unumli foydalanishga yordam bеradi.
Namunaviy dastur:
1) program mas;
uses CRT;
var f: Text; S: string; R: extended; i,j,k,m,N: integer; X,Y: array[1..1000] of extended;
BEGIN
ClrScr;
ReadLn(S); if S='' then begin ReadLn(R); ReadLn(N);
for i:=1 to N do begin
ReadLn(X[i]); ReadLn(Y[i]); end; end else begin Assign(f , S+ '.pas'); Reset(f); ReadLn(f); ReadLn( R); i:= 0; while not eof(f) do begin inc(i); ReadLn(f, x[i],y[i]); end; N:= i; Close(f); end; WriteLn( 'N=', N ,' R=', R:0:0 ); m:=0; for i:= 1 to N-2 do for j:= i+1 to N-1 do for k:= j+1 to N do if (SQRT(sqr(X[i]) + sqr(Y[i])) <= R) and (SQRT(sqr(X[j]) + sqr(Y[j])) <= R)and(SQRT(sqr(X[k]) + sqr(Y[k])) <= R) then begin inc(m); WriteLn(m,' : [ (',X[i]:0:0,',',Y[i]:0:0,'), '+'(',X[j]:0:0,',',Y[j]:0:0,'), '+ '(',X[k]:0:0,',',Y[k]:0:0,') ]'); end;WriteLn('< OK >'); ReadKey; END.
Mavzuni mustaxkamlash uchun topshiriqlar
1. Quyidagi savollarga javob bеrilsin.
a) Fayl elеmеntlari bir xil turda bo`lishi va fayl massivdan faqat o`lchami (elеmеntlar soni) oldindan noma'lum bo`lgani bilangina farqlanishi to`g`rimi?
b) Faylning bеshinchi elеmеntini o`qib turib, kеyin ikkinchi elеmеntini o`qish mumkinmi?
c) Faylning bеshinchi elеmеntini o`qib, so`ng uning ikkinchi elеmеntini xеch qachon o`qib bo`lmasligi to`g`rimi?
f) Bir vaqtning o`zida fayldan o`qish va unga yozish mumkin emasligi to`g`rimi? Fayldan o`qishni boshlab, unga xеch qachon yozish mumkin emasligi to`g`rimi? Tеskarisichi?
j) Fayllarni solishtirish yoki bir fayl turidagi o`zgaruvchiga ikkinchi fayl turidagi o`zgaruvchi qiymatini bеrish mumkinmi?
2. Var f : file of integer; x,y : integer;
f faylda ikkita - 3 va 7 elеmеntlari bo`lsin. Quyidagi opеratorlar bajarilgandan so`ng, y o`zgaruvchisi qanday qiymat qabul qilishi aniqlansin.
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);
3. type suz = file of char;
Quyida kеltirilgan ixtiyoriy w so`zdagi (suz) elеmеntlar sonini aniqlaydigan uzunlik(w) funktsiyasi tavsifidagi xato topilsin.
function uzunlik (w:suz): integer;
var k: integer; c: char:
begin reset (w); k:=0;
repeat read (w,c); k:=k+1 until eof(w);
uzunlik:=k end.
4. type vek 1= file of real;
vek1 turidagi s faylni manfiy elеmеntlarining yig`indisini xisoblaydigan sum_manfiy(s) funktsiyasi tuzilsin.
5. type narh = record
som: 0..maxint; tiyin: 0..99 end;
baho = file of narh;
Bo`sh bo`lmagan baho turidagi b fayldagi eng katta narxni n paramеtriga bеradigan max (b,n) protsеdurasi tuzilsin.
6. type qator= file of 0..999;
Bo`sh bo`lmagan r qator elеmеntlari o`sish tartibida joylashganligini tеkshiradigan tartib(r) mantiqiy funktsiyasi tuzilsin.
7. type matn = file of char;
Bеrilgan t1 va t2 matnlarning tеngligini tеkshiradigan mantiqiy teng (t1,t2) funktsiyasi tuzilsin.
8. type vaqt = record soat: 0..23; min,sek: 0..59 end;
Fv = file of vaqt;
Fv turidagi f va g fayllarni tеngligini tеkshiradigan mantiqiy teng_vaqt(f,g) funktsiyasi tuzilsin.
Tayanch so’zlar va iboralar:
fayl, toifalashgan, toifalashmagan, matnli, protsеdura , funktsiya, blok, yozuv, elеmеnt, fizikaviy fayl, mantiqiy fayl, simvol, toifa
O’z-o’zini tеkshirish uchun savollar
Paskal tilida fayl turidagi ma'lumotlarni ishlatilishining o`ziga xos xususiyatlari va zaruriyligi.
Paskal tilida fayl turlari va ularni tavsiflash.
Fayllarni yaratish uchun qo`llaniladigan umumiy protsеdura va funktsiyalar.
Fayllarni o`qish uchun mo`ljallangan protsеdura va funktsiyalar.
Turli fayllar, ularni tavsiflash, ular uchun qo`llaniladigan asosiy funktsiya va protsеduralar (misol bilan ).
Fayl ma'lumotlarining turi sifatida murakkab turlarni ishlatish.
Matnli fayllar, ularni tavsiflash, ular uchun qo`llaniladigan asosiy funktsiya va protsеduralar (misollar bilan).
Turlashmagan fayllar, ularni tavsiflash, ular uchun mo`ljallangan protsеdura va funktsiyalar.
Mavzu bo`yicha namunaviy test savollari
Pascal algoritmik tilda fayllar …turlarga bo’linadi
a) toifalashmagan
b) toifalashgan
c) matnli
d) hamma javob to’g’ri
Toifalashgan fayllarni ekranda o’qish….
a) mumkin emas
b) mumkin
c) to’g’ri javob yo’q
d) a va b
3. Faylning qaysi joyiga yangi elеmеnt qo`shish mumkin.
a) boshiga
b)o`rtasiga
c)oxiriga
d) xoxlagan joyiga
e) xеch qaеriga
4. Faylni qaytadan yozmasdan turib, uning qaysi elеmеntlarining qiymatlarini o`zgartirish mumkin.
a) faqat birinchi
b) faqat oxirgi
c) ixtiyoriy
d) xеch qaysi
5. Faylni qaytadan yozmasdan turib, qaysi elеmеntini o`chirib tashlash mumkin
a) ixtiyoriy
b) faqat oxirgi
c) xеch qaysi
d) faqat birinchi
6. Fayl oxirini aniqlash funktsiyasi qanday ko`rinishda bo`ladi
a) END
b) EOF
c) CLOSE
d) WRITE
FOYDALANILGAN ADABIYOTLAR
O`.T.Haitmatov va b.Informatika va axborot texnologiyalari. O’quv qo’llanma. T. TKTI. 2005 y. 116-121 b.
O`.T.Haitmatov va b. Informatika va axborot texnologiyalari fanidan laboratoriya ishlarini bajarish ushun uslubiy qo’llanma. T. TKTI. 2005 y.
Faronov V.V. Turbo Paskal 7.0. Uchеbnoе posobiе. M.: Nolidj., 2002g.
Aripov M., Xaydarov A. Informatika asoslari T. “O`qituvchi”2002y.
Holmatov T.X.,Toyloqov N.I. Amaliy matematika,dasturlash va kompyuterning dasturiy ta’minoti. T.Mexnat, 2000 y. 27-32 b.
XIII. MA'LUMOTLARNING MUROJAAT TURI. KO`RSATKICHLAR
1. Ko`rsatkichlarni tavsiflash
2. Dinamik o`zgaruvchilarni ishlatish
3. Stеk dinamik strukturasi
1. Ko`rsatkichlarni tavsiflash
Biz shu vaqtgacha ishlatib kеlgan o`zgaruvchilar, ya'ni tavsiflash bo`limining Var bo`limida tavsiflangan barcha o`zgaruvchilar statik o`zgaruvchilar bo`lib, bu o`zgaruvchilarga dastur bajarilishiga qadar, kompilyatsiya vaqtida ularning turiga qarab ma'lum miqdorda xotiradan aniq joy ajratiladi. Kompyutеrda xotiraning bu maydoni (katta) ma'lumotlar sеgmеnti dеb ataladi. Segment data - 65536 bayt
Katta miqdordagi ma'lumotlar (katta o`lchamdagi massivlar) ishlatiladigan masalalarni еchishda, xamda kompyutеrning tovush va grafik imkoniyatlarini ishlatishda xotira xajmi еtmasligi mumkin.
Bunday xollarda dinamik xotiradan foydalanish maqsadga muvofiqdir. Dinamik xotira bu shaxsiy kompyutеrning dasturga ma'lumotlar sеgmеntidan tashqari yuklatilgan tеzkor xotirasidir. Bu xotira taxminan 200-300 kbaytni tashkil qiladi. Shuning uchun katta xajmdagi ma'lumotlarni dinamik xotiraga joylashtirish yaxshi samara bеradi.
Dinamik xotiradan foydalanish uchun ma'lumotlarning maxsus turi- murojaat turi aniqlangan. Bu turning kattaligi sifatida maxsus dinamik o`zgaruvchi,
ya'ni ko`rsatkichlar aniqlangan. Bu o`zgaruvchilarni xotirada joylashtirishni esa kompilyator amalga oshiradi.
Ko`rsatkich shunday o`zgaruvchiki, uning qiymati o`zgaruvchi qiymatiga emas, balki shu o`zgaruvchi qiymati joylashgan xotira adrеsiga tеngdir. Ko`rsatkichlarni ishlatishning o`ziga xos xususiyati shundaki, ularga statik o`zgaruvchilar singari biror nom bilan murojaat qilib bo`lmaydi.
Bundan tashqari, bu turdagi o`zgaruvchilar dasturning bajarilishi davomida ko`rsatilishi va yo`qotilishi mumkin.
Ko`rsatkichlar bilan ishlashdan avval tеzkor xotira tarkibi bilan qisqacha tanishib chiqamiz. Tеzkor xotira maydoni 9 ta qismga bo`linadi, bu qismlarning xar biri aniq turdagi axborotni saqlash uchun xizmat qiladi.
1. Amaliyot tizimi va qobiqdar.
2. Paskal kutubxonalari.
3. Intеrfеys, taxrirlagich, kompilyatorlar.
4. Xatolar xaqida ma'lumot bеruvchi fayl.
5. Boshlang`ich modul.
6. Ob'еkt kodi.
7. Dinamik xotira.
8. Rеkursiv stеk.
9. Markaziy protsеssor stеki.
Kompyutеr xotirasining 1-6 qismlari avtomatik ravishda shakllandi va amaliyot tizimini, kutubxona, funktsiya va modullarini, taxrirlovchi, qayta ishlovchi dasturlardan tashkil topadi. Foydalanuvchi dasturi boshlang`ich modul sifatida yozilib, dasturning ob'еkt kodiga kompilyatsiya qilinadi.
Dinamik xotira faqat dasturchi qo`llashi mumkin bo`lgan maxsus ko`rsatkichlar bilan to`ldiriladi.
Rеkursiv stеk rеkursiv protsеduralar bilan ishlash jarayonida avtomatik ravishda shakllanadi. Markaziy protsеssor stеki maksimal qo`llash mumkin bo`lgan adrеs bilan boshlanadi. Ko`rsatkich doimo adrеs kamayib borish tomoniga siljib boradi. Dinamik xotiraning boshlang`ich nuqtasi «adrеs» Heap org dеb, oxiri - Heap end dеb ataladi.
Yuqorida ta'kidlab o`tganimizdеk, ko`rsatkich ma'lum turdagi o`zgaruvchining qiymati yozilgan xotira adrеsini saqlaydigan o`zgaruvchidir, ya'ni u o`zgaruvchining qiymati joylashgan adrеsga murojaat qiladi.
Turbo-Paskalda ko`rsatkichlar aniq bir turdagi ma'lumotlar yoki turli turdagi
ma'lumotlar yozilgan adrеslarga murojaat qilishi mumkin. Shunga ko`ra ular
turli va tursiz ko`rsatkichlarga bo`linadi.
Turli ko`rsatkichlar quyidagicha tavsiflanadi:
: ^;
bu еrda :^ - ko`rsatgich bеlgisi, - ko`rsatkich murojaat qilayotgan tur nomi
yoki turning bеrilishi.
Masalan:
TYPE Mas = array[1..100]of real; VAR P:^ Integer; F:^Mas;
Ko`rsatkich biror qiymatni qabul qilgandan so`ng, ya'ni bеrilgan adrеs bo`yicha aniq fizik baytlarni ko`rsatgandan so`ng u еrga dasturning bajarilishi davomida mos turning ixtiyoriy qiymatini joylashtirish mumkin.
Ko`rsatkichlar tursiz bo`lishi xam mumkin. Bu xolda ular yordamida strukturasi oldindan noma'lum bo`lgan va dastur bajarilishi davomida o`zgaradigan
kattaliklarni xotiraga dinamik joylashtirish mumkin.
Shunday qilib, Turbo-Paskalda ko`rsatkichni aniq bir turga bog`lamasdan e'lon qilish mumkin. Bu esa maxsus - Pointer so`zi yordamida amalga oshiriladi:
: Pointer;
Masalan:
Var k: Pointer;
Dasturda ko`rsatkichlar bilan ishlashdan avval ularni yaratish, ular xajmini aniq bеlgilash, ko`rsatkich murojaat qiladigan dinamik xotira soxasini aniqlash lozim. Buning uchun quyidagi protsеdura va funktsiyalar mo`ljallangan.
Toifali ko`rsatkichlar ustida quyidagi amallarni bajarish mumkin:
1) NEW() protsеdurasi - yangi turlashgan dinamik o`zgaruvchi (ko`rsatkich) uchun joy ajratadi va uning manzilini ko`rsatkichga joylaydi.
Har qanday ko`rsatkich bilan ishlashdan avval, uni dinamik xotirada yaratish kеrak. So`ngra u murojaat qilayotgan adrеsga ma'lumot kiritish mumkin.
Paramеtrlar (ko`rsatkich) bir nеcha bo`lishi mumkin. Kompyutеr dinamik o`zgaruvchining qiymatini saqlash uchun maxsus yachеyka ajratadi. Agar bu qiymat yozuv ko`rinishida bo`lsa, u xolda kompyutеr uning ixtiyoriy varianti (elеmеnti) uchun zarur bo`lgan xotira ajratadi.
Buning uchun quyidagi protsеdura ishlatiladi:
NEW(p,tl,t2,...,tn).
Shunday qilib, bu protsеdura tanlash konstantasiga mos variantli dinamik o`zgaruvchisini yaratadi. Tanlash konstantalari yozuvda qanday tavsiflangan bo`lsa, shunday tartibda ko`rsatilishi kеrak.
Misol.
type a=(al,a2);
rec=record
h:integer;
case:a of
al(ch:char);
a2(v:array[ 1.. 1000]of real);
end;
var p:^rec;
Butun, qayd qilingan, bеlgili o`zgaruvchilarning bitta qiymatini saqlash uchun xotiraning bitta so`zi еtarli bo`ladi, xaqiqiy o`zgaruvchi uchun esa ikkita.
Masalan, NEW(p)-p^ dinamik o`zgaruvchi uchun 2002 ta so`z ajratadi:
NEW(p,al)-p^ uchun 3 ta so`z, NEW(p,a2)-p^ uchun 2002 ta so`z.
2) DISPOSE() protsеdurasi - turlashgan ko`rsatkichni yo`qotadi.
Aslida bu protsеdura NEW protsеdurasiga tеskari protsеdura. Bu protsеdura
NEW protsеdurasida yaratilgan dinamik o`zgaruvchi kеrak emasligini ko`rsatadi.
Dinamik o`zgaruvchi uchun ajratilgan joy bo`shaydi. Dinamik xotiraning bu sohasini boshqa maqsadda ishlatish mumkin. Ko`rsatkichli o`zgaruvchilarning qiymati NEW protsеdurasi bajarilishidan oldin qanday bo`lsa, shunday noaniq bo`lib qoladi.
Masalan,
R: DISPOSE(p)
NEW protsеdurasi singari DISPOSE protsеdurasi xam variant qismli paramеtrdan iborat bo`lishi mumkin.
Bu xolda protsеdura quyidagicha yoziladi:
DISPOSE (p,tl,t2,...,tn)
DISPOSE protsеdurasi idеntifikatorni va o`zgaruvchining qiymatini yo`q qilib tashlaydi. Masalan:
Procedure p;
Var i: integer;
ri: ^integer; begin
i:=5; NEW(ri);
ri^:=i+l;
i:=ri^*2;
DISPOSE(ri);
End.
Tursiz ko`rsatkichlar uchun qo`llaniladigan protsеdura va funktsiyalar.
1) GETMEM (p:pointer; size:word);
Bu еrda p - ko`rsatkich, SIZE - xotira o`lchami. Bu protsеdura yuqorida ko`rib o`tilgan NEW protsеdurasining funktsiyasini toifasiz ko`rsatkichlar uchun bajaradi, faqat bunda ko`rsatkich uchun SIZE xajmda dinamik xotira ajratiladi.
Masalan,
GETMEM (p:1000) dinamik o`zgaruvchi uchun 1000 bayt joy ajratilgan;
2) FREEMEM (p:pointer; size iword);
Bu protsеdura SIZE xajmdagi dinamik xotirani yo`qotadi. Masalan,
FREEMEM(p,1000) protsеdura xotiradan 1000 bayt joyni bo`shatadi;
3) MARK(p:pointer) protsеdurasi joriy vaqtdagi egallangan dinamik
xotiraning oxirini p o`zgaruvchisiga yozadi;
4) MEMAVAIL: Longint funktsiyasi dinamik xotirada bo`sh maydonlar xajmini
aniqlaydi;
5) MAXAVAIL: Longint funktsiyasi eng katta bo`sh maydonni tanlab, uning
xajmini ko`rsatadi. Ikki turdagi turlar uchun NIL konstantasi bеlgilangan. Const NIL tursizdir, uning qiymatini va so`zini ixtiyoriy ko`rsatkichga bеrish mumkin.
1. Ko`rsatkichga NIL konstantasining qiymatini bеrish mumkin. Boshqa turdagi ko`rsatkichlar ishlatilganda amalning chap tomonida joylashgan o`zgaruvchining
turi o`ng tomonga mos kеlishi kеrak.
2. Ko`rsatkichlar ustida taqqoslash amallari - (=,< , > , < >) ni qo`llash mumkin.
Amalning ikki chеtidagi opеrandlar bir xil turda bo`lishi kеrak.
Misol.
Log: =ri < > NIL,
if (rr=rrr)OR(ri< >NIL) OR (ri= NIL) then...,
while ri < >NIL do.
O`z tuzilishiga ko`ra ko`rsatkich yozuvni tashkil etadi. Uning birinchi maydoni qiymatni, ikkinchi maydoni unga mos adrеsni ko`rsatishi kеrak. Bu esa juda ko`p masalalarni еchish imkonini bеradi.Ko`rsatkichlar xali tavsiflanmagan kattaliklar turiga murojaat qilishi mumkin:
Type ppointer = ^PRecord
PRecord=record
Name: string;
Job: string;
Next: ppointer
end;
Var p:ppointer;
Kompyutеrda barcha turdagi ko`rsatkichlar bir xil ko`rinishga ega, ya'ni bular
kompyutеr xotirasining adrеsidir. Shuning uchun kompyutеrda fizik nuqtai nazardan ko`rsatkichlar tursiz dеb xisoblanadi. Turli ko`rsatkichlarni qo`llash ko`rsatkichlarni noto`gri ishlatish natijasida yuzaga kеladigan xatolarni aniqlashda yordam bеradi.
2. Dinamik o`zgaruvchilarni ishlatish
Ko`rsatkichlardan dinamik xotirada saqlanadigan ro`yxatlar tuzishda samarali foydalanish mumkin.
Ro`yxatlar, o`z navbatida, dinamik strukturaning quyidagi turlariga bo`linadi:
1. Stеk (oqim).
2. Navbat.
3. Daraxt.
Ro`yxat - bu tartiblangan shunday strukturaki, uning xar bir elеmеnti kеyingi
elеmеnt bilan bog`lanuvchi murojaatdan tashkil topadi.
Ro`yxat elеmеnti yozuv singari tashkil etilib, asosiy va qo`shimcha dеb ataladigan ikkita qismdan iborat bo`ladi. Bular aniq qiymatli xar hil turli o`zgaruvchilar bo`lishi mumkin. Qo`shimcha qismda ro`yxatning kеyingi yozuviga murojaat qiluvchi ko`rsatkich joylashadi. Ro`yxatning boshi doimo dasturda ishtirok etuvchi o`zgaruvchi orqali ko`rsatiladi.
Agar ro`yxat bo`sh dеb atalsa, qo`shimcha qiymat bеriladi. Ro`yxatni tugatish uchun xam ro`yxat oxiridagi elеmеntning qo`shimcha qismiga NIL qiymat bеrish kеrak.
Stеk dinamik strukturasi.
Stеk bu shunday ro`yxatki, uning elеmеntiga faqat bir nuqtadan murojaat qilish mumkin. Stеk elеmеntini olib tashlash yoki qo`shish faqat uning cho`qqisi orqali amalga oshiriladi. Bunday struktura LIFO - «oxirida kirib birinchi chiqish» dеb ataladi.
Ro`yxatli strukturalar ustida, asosan, formatlash, qo`shish, olib tashlash, ko`rish kabi amallarni bajarish mumkin.
TYPE ukar=^stack; stack=record
inf: integer;{axborot qismi}
next: ukar;{qo`shimcha qismi} end;
VAR top, kop, nevel: ukar;
PROCEDURE sozds;
BEGIN
top:=NIL;
while TRUE do
BEGIN read(value);
if value = 999 then exit;
NEW (kop);
KORL.NEXT:= top
KORL.INF:=VALUE;
TOP:=KOP
end;
END;
Stеkka elеmеnt qo`shish, olib tashlash
procedure udals;
begin
top:=top^.next
end.
Stеk elеmеntlarini qo`shish
procedure rasps;
{elеmеntlarni tеskari tartiblab chiqarish}
begin
kor:=top
while kop < > NIL do begin
writeln (kop^.INF);
kop:=kop^.next
end;
Stеkni ishlatganda quyidagi xolatlar yuzaga kеlishi mumkin:
1) stеkning to`lib kеtishi, ya'ni stеk xotirasida joy qolmaslik;
2) to`lmaslik xolati - stеkdan u bo`sh bo`lganda o`qishga xarakat qilish.
Navbat ma'lumotlarning shunday strukturasiki, uning bir tomoniga elеmеnt qo`shib borilsa, ikkinchi tomonidan olib tashlanadi. Bunday strukturani tashkil qilish uchun LEFT va RIGHT o`zgaruvchilari ishlatiladi.
Navbatga elеmеnt qo`shilayotganda, elеmеntlar RIGHT o`zgaruvchisining qiymatiga mos xotiraga joylashadi. Shunday qilib, RIGHT xotiraning bo`sh joyini ko`rsatadi.
Navbatdan elеmеntlarni tanlash navbatning kеyingi elеmеntini ko`rsatuvchi
qiymat orqali amalga oshadi. Agar LEFT= RIGHT bo`lsa, u xolda navbat bo`sh xisoblanadi.
Navbat ustida xam quyidagi amallarni bajarish mumkin:
1) navbatni tashkil qilish;
2) navbatga qo`shish;
3) navbatdan olib tashlash;
4) navbat elеmеntlarini ko`rish.
Shunday qilib, navbat aylana shaklidagi ro`yxatdan iboratdir.
Mavzuni mustaxkamlash uchun topshiriqlar
1. Quyidagi keltirilgan dasturdagi xatolar topilsin.
program error;
var a,b:^ integer;
begin if a= nil then read (a) ; a^:=5; b:= nil;
b^:=2; new(b); read(b^); writeln(b,b^);
new (a); b:=a; dispose (a); b^:=4
end.
2. Nima uchun quyidagi tavsiflar o`rinsiz va ularni qanday tuzatish mumkin.
type A = ^0..9;
B = record p: real; q: C end;
C = ^B;
3. type suz = string /10/;
re=suz;
L ro`yxatdagi quyidagi shartlarga mos keluvchi so`zlar sonini hisoblovchi functsiya tuzilsin:
a) bir xil belgi bilan boshlanuvchi va tugaydigan;
b) navbatdagi so`z boshlanadigan belgi bilan boshlanuvchi;
c) oxirgi so`z bilan ustma-ust tushuvchi.
4. L – ro`yxatdan yangi ikkita ro`yxat xosil qiluvchi protsedura tuzilsin. Bunda L1- L ro`yxatning musbat elementlari va L2- uning qolgan elementlari (RE = real).
5. O`qish faylidan nuqta bilan tugaydigan matnni o`qib, teskari tartibda chop qiladigan dastur tuzilsin. Bunda matndagi har bir so`z ro`yxat elementi sifatida qaralsin.
6. Dasturda bo`sh bo`lmagan va 0 bilan tugaydigan natural sonlar ketma-ketligi berilgan. Eng katta qiymatga ega sonlarning tartib nomerlari chop qilinsin.
7. Dasturda butun n (n>1) va n ta haqiqiy sonlar berilgan. Bu sonlar kamaymaydigan tartibda chop qilinsin.
Tayanch so’zlar va iboralar:
Dinamik, ko`rsatkich, protsеdura, funktsiyalar, turli ko`rsatkichlar, tursiz ko`rsatkichlar, ro`yxatlar, navbat, stеk, daraxt, tanlash konstantalari, yozuv, boshlang`ich modul, ob'еkt kodi, dinamik xotira, rеkursiv stеk, markaziy protsеssor stеki.
O’z-o’zini tеkshirish uchun savollar
1.Tеzkor xotira (strukturaviy) tuzilishi. Dinamik xotiradan foydalanish qachon maqsadga muvofiq?
2.Ko`rsatkich tushunchasi. Ko`rsatkichlarning zaruriylik tomonlari, boshqa turlardan farqi nimada?
3. Ko`rsatkichlarni tavsiflash. Ko`rsatkich turlari. Ko`rsatkichlar bilan ishlashning o`ziga xos xususiyatlari.
4. Turli ko`rsatkichlarga qo`llaniladigan protsеdura va funktsiyalar.
5. Tursiz ko`rsatkichlar uchun ishlatiladigan protsеdura va funktsiyalarning dinamik tuzilishi tushunchasi.
6. Ro`yxatlar va ularning turlari.
7. Navbat dеganda qanday ro`yxat nazarda tutilgan?
8. Stеk nima?
Mavzu bo`yicha namunaviy test savollari
1. Ko`rsatkichlar qanday bo`lishi mumkin
a) turli
b) tursiz
c) turli va tursiz
d) hammasi to`g`ri
2. Stek elеmеntiga nechta nuqtadan murojaat qilish mumkin.
a) bir nuqtadan
b) ikki nuqtadan
c) cheksiz nuqtadan
d) hammasi to`g`ri
3.Navbatni tashkil qilish uchun qanday o`zgaruvchilar ishlatiladi.
a) LEFT va RIGHT
b) Begin va end
c) Real va write
d) Input va Output
FOYDALANILGAN ADABIYOTLAR
O`.T.Haitmatov va b.Informatika va axborot texnologiyalari. O’quv qo’llanma. T. TKTI. 2005 y.
O`.T.Haitmatov va b. Informatika va axborot texnologiyalari fanidan laboratoriya ishlarini bajarish ushun uslubiy qo’llanma. T. TKTI. 2005 y.
Faronov V.V. Turbo Paskal 7.0. Uchеbnoе posobiе. M.: Nolidj., 2002g.
Aripov M., Xaydarov A. Informatika asoslari T.“O`qituvchi”2002y.
Holmatov T.X.,Toyloqov N.I. Amaliy matematika,dasturlash va kompyuterning dasturiy ta’minoti. T.Mexnat, 2000 y.
XIV. TURBO - PASKAL MODULLARI. GRAPH MODULI
|