Mustaqil ish-5 Mavzu: Shablon funksiyalarda funksiyalarni qayta yuklash mexanizmi


-§. K O R SA T K IC H VA XOTIRA BILAN ISHLASH


Download 96.1 Kb.
bet11/12
Sana02.11.2023
Hajmi96.1 Kb.
#1739464
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
Mustaqil ish-5 Mavzu Shablon funksiyalarda funksiyalarni qayta (1)

9-§. K O R SA T K IC H VA XOTIRA BILAN ISHLASH
9.1. Boshlang‘ich tushunchalar
Unchalik murakkab bo im a g a n dasturlam i ishlab chiqish uchun 
biz hozirgacha ko‘rgan m aium o tlar yetarli, ammo murakkab dasturlar 
uchun kamlik qiladi.
Dasturchi murakkab kompyuter dasturlarini ishlab chiqishda 
quyidagi m aium otlarga ham javob berishi lozim:
• m aiu m o tlar qayerda saqlanadi?
• u yerda qanday qiymatlar saqlanmoqda?
• saqlanayotgan m aium otlam ing ko ‘rinishi.
Bu masalalarga javob variantlaridan birinchisi o ‘zgaruvchilami 
oddiy usulda e io n qilishni nazarda tutadi. E io n qilish b u y ru g i orqali 
m aium otning tipi va nomi k o ‘rsatiladi. Kompilyator bu m a’lumot 
ucluin kompyuter xotirasidan maxsus joy ajratishni ta ’minlaydi va 
ichki vositalar yordamida uning manzilini nazorat qiladi.
117

K o‘rsatkichlardan foydalanishni nazarda tutuvchi ikkinchi va­


riant barcha dasturchilar uchun o ‘ta m uhim ahamiyat kasb etadi.
K o ‘rsatkichlar ham o ‘zgaruvchi bo Tib, o ‘zida qandaydir qiy­
matlam i emas, balki bu qiymatlaming kompyuter xotirasidagi man- 
zilini saqlaydi.
K o‘rsatkichlam i k o ‘rib chiqishdan avval oddiy o ‘zgaruvchilar 
manzilini aniqlashga urinib k o ‘raylik. Agar hom e o ‘zgaruvchi boTsa, 
&home bu o ‘zgaruvchining kompyuter xotirasidagi manzilini 
anglatadi. Quyidagi listingga e ’tibor bering:
include  
int main()
{
int a=12; 
double b=1.234;
c o u t « a « ” a ning manzili “« & a « ”\n 
c o u t « b « ” b ning manzili “« & b « ”\n 
return 0;
x
/
Ushbu kod Windows XP2 operatsion tizimi uchun quyidagi 
natijani ekranga uzatadi:
12 a ning manzili 0x8f7dffF4 
1.234 b ning manzili 0x8f7dffec
0 ‘zgaruvchilar manzilini ekranga uzatishda cout o ‘n oltilik 
sanoq sistemasini qoTlaydi, chunki kompilyator xotira manzillarini 
saqlash uchun aynan shu sistemadan foydaladi. Bizning misolimizda a 
o ‘zgaruvchining manzili b nikiga qaraganda 4 baytga farq qiladi. 
Buning sababi int tipidagi m a’lumotlami saqlash uchun xotiradan 
4 bayt jo y ajratilishi bilan bogTiq. Agar xotiraga b avval yozilsa, bu 
o ‘zgaruvchilaming manzillari o ‘rtasidagi farq 8 ga teng boTadi. 
Chunki double tipidagi m a’lumotni saqlashga xotiradan 8 bayt joy 
band qilinadi.
118

C++ dasturlash tili Pascal kabi ko‘plab tillardan shunisi bilan 


farq qiladiki, kompyuter tomonidan qandaydir qarorlar dastur kodini 
kompilatsiya qilish vaqtida emas, balki bajarish vaqtida, ya’ni dastur 
ishlayotgan vaqtda qabul qilinadi. Qiyoslash uchun misol keltiramiz: 
siz ta’til vaqtida bevosita, vaziyatdan kelib chiqqan holda ob-havo, 
kayfiyat va imkoniyat kabi holatlami hisobga olib, dam olishni tashkil 
qilishingiz mumkin. Bu bajarish vaqtida qabul qilinadigan qaror 
bo‘ladi. Kompilatsiya vaqtida qabul qilinadigan qarorga esa hech 
qanday vaziyatni e ’tiborga olmagan holda, belgilangan qat’iy grafik 
asosida dam olishni misol qilib keltirish mumkin.
Bajarish vaqtida qabul qilinadigan qarorlar dastuming yuzaga 
keladigan vaziyatlarga moslashuvchan bo‘lishini ta ’minlaydi. Massiv- 
lar uchun xotirani taqsimlash masalasi bunga yaqqol misol bo‘lishi 
mumkin. Odatda massivni e ’lon qilishda uning hajmi qat’iy belgilab 
qo‘yiladi (kompilatsiya vaqti qabul qilinadigan qaror) va bu hajmni 
zarurat bo‘lganda o‘zgartirish mumkin emas. Odatda, talabalar guruhi 
massivi bilan ishlaganda 25 ta element yetarli hisoblanadi. Ammo 
ayrim hollarda talabalar soni 15 ta yoki 30 yoki undan ham ko‘p 
bo‘lishi mumkin. Bunday hollarda har ehtimolga qarshi 50 ta ele- 
inentli massiv e ’lon qilish lozim bo‘ladi. Qaralayotgan vaziyatda 
talablar soni 15 ta bo‘lsa, xotiraning qolgan 35 yachaykasi bo'sh 
qolmoqda. Ko‘rinib turibdiki, bunday dasturlar bilan ishlaganda 
xotiradan noto‘g‘ri foydalanish muammosi yuzaga keladi. Bunday 
inuammolami (ya’ni xotiradan qancha kerak bo‘lsa, shuncha joy 
iijratish masalasi kabi) hal qilish uchun C++ tilida qaromi dastuming 
bajarilishi jarayonida qabul qilish imkoniyati nazarda tutilgan. Shun- 
i lay qilib, dastur ishga tushganda, kompyuter xotirasidan ehtiyojga 
ko'ra zarur hajmni band qilishga ko‘rsatma berish mumkin.
Xotiradagi ma’lumotlami qayta ishlashning yangi strategiyasiga 
ko'ra, qiymatlar joylashuvi haqidagi axborot nomlangan kattalik
i|ivmatning o‘zi esa hosila kattalik sifatida qayd qilinadi. Bunda 
ma’himotlaming maxsus tipi - ko'rsatkichlardan foydalaniladi. Yuqo-

k
I.
i
avtib o‘tilganidek, ular qiymat saqlanayotgan xotira yacheykalari 
man/illarini o‘zida saqlaydi.
119


Download 96.1 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling