Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr




Download 6,33 Mb.
Pdf ko'rish
bet121/194
Sana20.02.2024
Hajmi6,33 Mb.
#159185
1   ...   117   118   119   120   121   122   123   124   ...   194
6. Qism dastur parametrlari 
Dasturlashda ko‘pincha agar qism dastur nomi boshqa qism dasturga 
parametr kabi yuborilsa, uni qayta ishlash afzalroq bo‘lgan holatlar ham bo‘ladi. 
Ba’zida, qism dastur qandaydir matematik funksiyani modellashtirishi lozim 
bo‘lganda bu hol yuzaga keladi. Masalan, sonli integralini hisoblovchi qism dastur, 
funksiya grafigi ostidagi shakl yuzini aniqlaydi va ushbu funksiyani turli nuqtalarda 
hisoblashi lozim. Bunday qism dastur har qanday berilgan funksiya uchun 
qo‘llanilishi lozim. Qism dasturni har bir funksiya uchun yozib o‘tirish shart 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
233 
bo‘lmasligi kerak. Buning natijasida, dasturdagi matematik funksiya integralini 
hisoblovchi funksiya nomi integratsiyalovchi qism dasturga parametr kabi yuboriladi. 
Bu g‘oya oddiyligi va tabiiyligiga qaramay, uning to‘liq ishlashi muammo 
tug‘dirishi mumkin. Agar faqat qism dastur kodini yuborish kerak bo‘lganida edi, 
alohida ko‘rsatkichni yuborishning o‘zi yetarli bo‘lar edi. Ammo, bir qator murakkab 
holatlar yuzaga keladi. 
Birinchidan, parametr kabi yuboriluvchi qism dasturlarni chaqirishda 
parametrlar tiplarini tekshirish muammosi mavjud. Pascal tilining boshlang‘ich 
tavsifnomasida qism dasturlarni ularning parametrlari tiplarini qo‘shmay, ularni 
parametr kabi yuborish imkoniyati berilar edi. Agar mustaqil kompilyatsiya mavjud 
bo‘lsa, kompilyator parametrlar sonining to‘g‘riligini tekshirishga ham imkon 
bermaydi. Mustaqil kompilyatsiya mavjud bo‘lmasa, parametrlar muvofiqligini 
tekshirishning imkoni bor, ammo bu juda ko‘p qiyinchiliklar tug‘diradi va odatda, 
buning umuman iloji yo‘q. FORTRAN 77 tilida ham ushbu muammo mavjud, ammo 
FORTRAN 77 tilidagi tiplar muvofiqligini tekshirish hech qachon bajarilmaganligi 
uchun, bu unchalik ham muammo hisoblanmaydi. 
Agar qism dastur nomi ALGOL 68 tilida yoki Pascal tilining oxirgi versiyalarida 
parametr kabi yuborilsa, rasmiy parametrlar tiplari qism dasturlardan qabul 
qilinuvchi rasmiy parametrlar ro‘yxatiga qo‘shiladi, shuning uchun, real chaqiriqda 
qism dasturga yuboriluvchi parametrlar tiplari muvofiqligini statistik holda bajarish 
mumkin. Masalan, quyidagi kodni Pascal tilida ko‘rib chiqaylik: 
procedure integrate (function fun (x:real):real; 
lowerbd, upperbd:real; 
var result:real); 
… 
var funval; real; 
begin 
… 
funval := fun (lowerbd); 
… 
end; 
integrate protsedurasidagi fun funksiyasini chaqirishda faktli parametr statik 
tarzda integrate protsedurasining rasmiy parametrlari ro‘yxatidan fun funksiyasining 
rasmiy parametri tipi bilan muvofiqligini tekshirish mumkin. 
S va C++ tillarida funksiyalar parametrlar kabi yuborila olmaydi, ammo 
funksiya ko‘rsatkichlari yuborilishi mumkin. Funksiya ko‘rsatkichi tipi uning protokoli 
hisoblanadi. Protokol barcha parametrlar tiplariga ega bo‘lgani uchun, bunday 
parametrlar tiplar muvofiqligiga tekshirilishi mumkin. 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
234 
Modula-2 tilida protseduralar tiplari o‘zgaruvchilar kabi, ularni yuborish uchun 
qo‘llaniladi. Ushbu metod jo‘natilayotgan qism dasturlar parametrlari tiplari 
muvofiqligini tekshirishga imkon beradi, chunki parametrlar tiplari protsedura 
tipining bir bo‘lagi hisoblanadi. FORTRAN 90 tilida qism dasturlar parametrlari tiplari 
muvofiqligini tekshirishni tavsiflovchi mexanizm mavjud bo‘lib, ularning o‘zi 
parametrlar kabi yuboriladi. Ada tilida qism dasturlarni parametr kabi qo‘llab 
bo‘lmaydi. Buning o‘rniga, parametrlar kabi yuboriluvchi qism dasturlar ta’minlovchi 
funksional imkoniyatlar Ada tilida o‘rnatilgan funksiyalar yordamida egallaniladi va 
bu to‘liq tarzda 8-qismida ko‘rib chiqilgan. 
Qism dasturlar nomlarini qo‘llashning yanada qiziq tarafi yuborilayotgan qism 
dastur ssыlkalarning to‘g‘ri muhiti haqidagi muammolar bilan bog‘liq. Buning uchta 
imkoniyati bor: 
1. 
Chaqirish operatori muhiti, bu yuborilayotgan qism dasturni 
aktivlashtiradi (soyali bog‘lanish – shallow binding). 
2. 
Yuborilayotgan qism dasturni aniqlash muhiti (chuqur bog‘lanish – deep 
binding). 
3. 
Qism dasturni faktli parametr kabi yuboruvchi chaqirish operatori 
muhiti (alohida bog‘lanish − ad hoc binding). 
Quyidagi keltirilgan dastur ushbu imkoniyatlarni amalga oshiradi. SUB 3 
protsedurasi SUB 4 protsedurasini chaqira oladi deylik. 
procedure SUB1; 
var x : integer; 
procedure SUB2; 
begin 
write (‘x=’, x); 
end; {sub2} 
procedure SUB3; 
varx : integer; 
begin x : integer; 
x := 3; 
SUB4(SUB2) 
end; {SUB3} 
procedure SUB4(SUBX); 
varx : integer; 
begin 
x := 4; 
SUBX; 
end; {SUB4} 
begin {SUB1} 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
235 
x := 1; 
SUB3 
end; {SUB1} 
SUB 3 qism dasturini SUB 4 orqali chaqirishda nima kelib chiqishini ko‘rib 
chiqamiz. Soyali bog‘lanishda bunday bajarishning ssыlkalar muhiti SUB 4 qism 
dasturi ssыlkalar muhiti bilan mos keladi, shuning uchun, x o‘zgaruvchi ssыlkasi SUB 
2 muhitidagi mahalliy o‘zgaruvchi bilan muvofiq bo‘ladi. 

Download 6,33 Mb.
1   ...   117   118   119   120   121   122   123   124   ...   194




Download 6,33 Mb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr

Download 6,33 Mb.
Pdf ko'rish