11.7.1. Turdoshlashtirilmagan fayllar bilan ishlash uchun protsedura va funktsiyalar
Turdoshlashtirilgan fayllarda ishlatiladigan barcha protsedura va funktsiyalar turdoshlashtirilmagan fayllarda ham ishlatiladi. Faqat bunda Read va Write protseduralari o`rnida BlockRead va BlockWrite protseduralari ishlatiladi, Reset va Rewrite protseduralar, ma`lumotlarni uzatishda ishlatiladigan yozuv o`lchamini aniqlovchi ikkinchi Word turidagi parametrga ega bo`ladi. Agar bu parametr tushirib qoldirilgan bo`lsa, yozuv o`lchami sukut holatida 128 baytga teng, deb qabul qilinadi.
Nazorat savollari
Fayl deb nimaga aytiladi?
Fizik va mantiqiy fayllar tasniflari o`rtasida nima farq bor?
Massiv va fayl o`rtasida qanday o`xshashlik va farq bor?
Turbo Paskalda fayllar qanday belgilariga ko`ra sinflanadi?
Faylni ochish uchun qanday ish bajarish kerak?
Faylni ochish uchun qanday protseduralar belgilangan va ular qanday ishlaydi?
Qaysi protseduralar kataloglar bilan ishlaydi?
Close protsedurasi nima uchun kerak?
Rename va Erase protseduralar qanday ishlarni bajaradi?
Turdoshlashtirilgan fayllarni qanday turlarda bayon etish mumkin?
Turdoshlashtirilgan fayllarning elementlari qanday raqamlanadi?
Turdoshlashtirilgan fayllardan o`qish qaysi qoidalar bo`yicha bajariladi?
Write protsedura turdoshlashtirilgan fayllar uchun qanday formatga ega?
Turdoshlashtirilgan fayl elementlaridan to`g`ridan-to`g`ri foydalanish uchun qanday protsedura va funktsiyalar bor?
Foydalanuvchi matn fayllarining Input va Output fayllaridan farqi nimada?
Matn fayllarining xususiyatlari nimada?
Matn faylining File of Char dan farqi nimada?
Turdoshlashtirilmagan fayllar qanday e`lon qilinadi?
Turdoshlashtirilmagan fayllarning turdoshlashtirilgan fayllardan farqi nimada?
Turdoshlashtirilmagan fayllarda qanday protsedura va funktsiyalar ishlatiladi?
XII BOB.
DINAMIK TASNIFLI MA`LUMOTLAR BILAN ISHLASH
Dinamik tasnifli ma`lumotlarning tarmoqli tuzilishi V bobda berilgan edi
12.1. Dinamik xotira
Dasturda e`lon qilingan hamma o`zgaruvchilar tezkor xotiraning ma`lumotlar segmenti deb ataluvchi bitta uzluksiz sohasida joylashtiriladi. Ma`lumotlar segmentining uzunligi 80x86 mikroprotsessorlar arxitekturasi bilan aniqlanadi va 65536 baytni tashkil qiladi, bu esa ma`lumotlarning katta massivlari bilan ishlashda ma`lum qiyinchiliklarni keltirib chiqaradi. Boshqa tomondan esa, SHK xotira sigimi (odatda 640 K baytdan kam emas) katta o`lchamli ma`lumotlarga ega masalalar bilan ishlash uchun etarli. Holatdan chiqishga dinamik xotira xizmat qiladi.
Dinamik xotira – bu ma`lumotlar segmenti (64Kbayt), stek (odatda 16 Kbayt) va dastur tanasi uchun ketgan sigimlar olib tashlangandan keyin dasturga, uning ishi vaqtida beriladigan, shaxsiy komp’Yuterning tezkor xotira qismi. Dinamik xotira o`lchami keng chegaralarda farqlanishi mumkin. Sukut saqlanganda u komp’Yuterning ishlatish mumkin bo`lgan hamma xotira o`lchami bilan (200…300 Kbaytdan kam emas) aniqlanadi.
Dinamik xotira – bu katta o`lchamdagi ma`lumotlar massivlarini qayta ishlashning haqiqiy yagona imkoniyati. Ko`pchilik amaliy masalalarni dinamik xotirani ishlatmasdan turib echish qiyin yoki mumkin emas. SHuningdek, dinamik xotira, SHK ning grafik va tovush vositalari bilan ishlashda ma`lumotlarni vaqtincha eslab qolishda keng ishlatiladi.
Ma`lumotlarni dinamik joylashtirish dinamik xotirani bevosita dastur ishi vaqtida qo`llashni bildiradi. Bundan farq qilib, statik joylashtirish Turbo Paskalning kompilyatori tomonidan dasturni kompilyatsiya qilish jarayonida amalga oshiriladi. Dinamik joylashtirishda, oldindan turlar ham, joylashtiriladigan ma`lumotlar soni ham ma`lum bo`lmaydi, ularga statik o`zgaruvchilardagi kabi ismi bilan murojaat qilish mumkin emas.
12.2. Adreslar va ko`rsatkichlar
SHaxsiy komp’yuter tezkor xotirasi, axborotni saqlash uchun elementar yacheykalar-baytlar to`plamidan iborat. Bu yacheykalarning har biri o`z shaxsiy raqamiga ega. Bu raqamlar adreslar deyiladi, ular xotiraning ixtiyoriy baytiga murojaat qilishga imkon beradi.
Turbo Paskal, dasturchi ixtiyoriga ko`rsatkichlar, deb ataluvchi dinamik xotirani boshqarish, vositasini beradi. Ko`rsatkich – qiymati xotira bayti adresiga teng bo`lgan o`zgaruvchidir.
Shaxsiy komp’yuterda adreslar, ikkita segment va siljish deb ataluvchi o`n olti xonali so`zlar to`plami bilan beriladi. Segment uzunligi 65336 bayt (64 Kbayt) ga teng bo`lgan va 16 ga bo`linadigan (ya`ni 0, 16, 32, 48 va h.k) fizik adres bilan boshlanadigan xotira qismidir. Siljish kerakli adresga murojaat etish uchun segment boshidan nechta bayt o`tkazish zarurligini ko`rsatadi.
Shaxsiy komp’Yuter adres makoni 1 Mbaytni tashkil qiladi (gap shaxsiy komp’Yuterning standart xotira deb ataluvchi xotirasi to`g`risida borayapti; 80386 va undan Yuqori protsessorli zamonaviy kompyuterlarda adresli makon 4 G baytni hosil qiladi, lekin Turbo Paskalda qo`shimcha xotiralar bilan ishni quvvatlovchi vositalar yo`q; Borland Pascal with Objects 7.0 muhitini ishlatishda bunday imkoniyat bor). 1 Mbayt chegarasida adresatsiyalash uchun ikkita o`n olti xonalik so`zlardan (segment va siljishdan) quyidagicha hosil bo`ladigan, 20 ta ikkilamchi razryadlar kerak, segment tarkibi chapga 4 xonaga siljitiladi, bo`shagan xonalar nollar bilan to`ldiriladi, natija siljish tarkibidan hosil bo`ladi.
Segment
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
+
Siljish
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
=
Adres
|
19
|
18
|
17
|
16
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
12.1. Shaxsiy komp’yuterda adresning tashkil bo`lish sxemasi
16 baytlik xotira bo`lagi paragraf deyiladi, shuning uchun segment xotirani paragrafgacha, siljish esa – baytgacha bo`lgan aniqlikda adreslaydi, deb aytish mumkin. Har bir segmentga xotiraning uzluksiz va alohida adreslanadigan sohasi mos keladi. Segmentlar xotirada biri ketidan ikkinchisi, oraliqsiz yoki qandaydir oraliq bilan, kelishi yoki, nihoyat bir-birini yopishi mumkin. SHunday qilib, o`zining ichki tuzilishiga ko`ra ixtiyoriy ko`rsatkich, segment va siljish deb tushuntiriladigan ikki so`z to`plamini (WORD turidagi ma`lumotni) ifodalaydi. Ko`rsatkichlar yordamida dinamik xotirada Turbo Paskalda ma`lum ma`lumotlarning ixtiyoriy turini joylashtirish mumkin. Ularning faqat ba`zilarigina (BYTE, CHAR, SHORTINT, BOOLEAN) ichki ifodalashda bir baytni, qolganlari esa bir nechta (aralash) baytni egallaydi. SHuning uchun, aslida ko`rsatkich ma`lumotlarning faqat birinchi baytini adreslaydi.
12.3. Xotira taqsimoti
Dinamik tarkibli ma`lumotlar bayonlar bo`limida e`lon qilinganda qandaydir turdagi o`zgaruvchining o`zi emas, balki unga murojaat (ko`rsatkich) ko`rsatiladi. Natijada ko`rsatkich odatdagi o`zgaruvchi, u ko`rsatayotgan o`zgaruvchi esa dinamik bo`ladi.
Dasturda ko`rsatkich identifikatorining ishlatilishi u ko`rsatayotgan xotira yacheykasi adresiga murojaatni bildiradi, uning identifikatoridan keyin ^ belgini qo`yish talab qilinadi.
Dastur ishi vaqtida dinamik o`zgaruvchilar uchun xotira ajratish va bo`shatish New, Dispose, GetMet, FreeMet, Mark, Release standart protseduralari bilan bajariladi.
R ko`rsatkichli o`zgaruvchi uch xil holatda bo`lishi mumkin.
X otiradan oldindan ajratilgan qandaydir bir o`zgaruvchining adresiga ega bo`lish:
Maxsus bo`sh nil adresga ega bo`lish:
Noaniq holatda bo`lish:
Bu holatda ko`rsatkich dastur ishi boshida, u birinchi aniq adresni yoki bo`sh nil adresni o`zlashtirguncha, shuningdek u ko`rsatayotgan xotira sohasi bo`shatilgandan keyin bo`ladi.
nil va noaniq holat o`rtasidagi farq:
New (A) protsedura, A ko`rsatkich uchun bayon etilgan turga mos ravishda xotira sohasini ajratadi va ajratilgan xotira adresini ko`rsatkichga yozadi.
Dispose (A) protsedura, A ko`rsatkich ko`rsatayotgan xotira sohasini bo`shatadi, shundan keyin xotiraning bu sohasi boshqa dinamik o`zgaruvchilar taqsimoti uchun ishlatilish imkoniyatiga ega bo`ladi.
12.5. Bog`liqmas dinamik ma`lumotlar.
Bog`liqmas dinamik ma`lumotlar xuddi statik ma`lumotlar kabi sinflanadi va bajariladi. Bog`liqmas dinamik ma`lumotlarning dinamik xususiyatlari dastur ishi vaqtida ularning «paydo bo`lishi» va «yo`qolishi» bilangina ifodalanadi. Bunday berilganlar ishlatilishidagi farqlarni quyidagi hollarda ko`rsatish mumkin.
var bo`limida talab qilingan turidagi o`zgaruvchi emas, balki shu turga ko`rsatkich e`lon qilinadi;
ishlatishdan oldin New protsedurasini, ishlatib bo`linganidan keyin Dispose protsedurasini chaqirish zarur.
12.6. Bog`liqli dinamik ma`lumotlar
Do'stlaringiz bilan baham: |