Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr




Download 6,33 Mb.
Pdf ko'rish
bet123/194
Sana20.02.2024
Hajmi6,33 Mb.
#159185
1   ...   119   120   121   122   123   124   125   126   ...   194
8. O‘rnatilgan qism dasturlar 
Kodni qayta qo‘llash dasturiy ta’minotning ishlab chiqaruvchilanligini sezilarli 
tarzda oshiradi. Masalan, bu holda o‘z elementlari tiplari bilangina farq qiluvchi 
to‘rtta massivni to‘g‘rilash uchun dasturchiga sozlashning turli xil to‘rtta qism 
dasturlarni yozib o‘tirishga zaruriyat tug‘ilmaydi. 
O‘rnatilgan (generic) yoki polimorf (polymorphic subprogram) qism dastur 
turli chaqiruvlarda turli tipli parametrlarni qabul qiladi. O‘rnatilgan qism dasturlar 
o‘zi bilan polimorfizmning turliligini taqdim etib, bu alohida polimorfizm deb ataladi. 
APL tili funksiyalari polimorfizmning yanada to‘liqroq ko‘rinishini ta’minlaydi. APL 
tilida dinamik bog‘lanish qo‘llangani uchun, parametrlar tiplarini kiritishga hojat 
yo‘q, ular bir­biri bilan shunchaki mos faktli parametrlar bilan bog‘lanadi. 
Parametrli polimorfizm o‘rnatilgan parametrli qism dasturlar orqali 
ta’minlanadi. Ular qism dasturlar parametrlari tiplarini tavsiflash uchun qo‘llaniladi. 
Ada tilida ham, C++ tilida ham kompilyatsiya jarayonida parametrli polimorfizm 
turliligi qo‘llaniladi. 
 
8.1. Ada tilida o‘rnatilgan qism dasturlar 
Ada tilida parametrli polimorfizm konstruksiyalar orqali ta’minlanib, ular 
dastur birliklarining turli versiyalarini yaratishga imkon beradi. Foydalanuvchi dasturi 
so‘roviga ko‘ra qism dasturlarning turli versiyalari nusxalarini yaratadi yoki tuzatadi. 
Qism dasturning barcha versiyalari bir xil nomga ega bo‘lgani uchun turli 
chaqiruvlardagi bir qism dastur turli tipdagi ma’lumotlarni qayta ishlashi mumkin 
degan tasavvur uyg‘onadi. Turli xildagi dastur birliklari o‘rnatiluvchan bo‘lgani uchun, 
ularni ba’zida o‘rnatiluvchi komponentlar deb ataladi. 
Ushbu mexanizmdan chaqiriluvchi qism dasturga turli holatlarda o‘rnatilgan 
qism dasturning turli nusxalarini chaqirish imkoniyatini berishi uchun ham 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
237 
foydalanish mumkin. Bunday usul qism dasturlar funksionalligini ta’minlashda zarur 
bo‘lib, ular parametrlar kabi yuboriladi. 
Quyida keltirilgan misol uchta o‘rnatilgan parametrga ega protsedurani 
tasavvur qilishga imkon beradi. Bu esa qism dasturga parametr sifatida o‘rnatilgan 
massivni qabul qilish imkoniyatini beradi. Protsedura almashinuv sortirovkasi 
algoritmini amalga oshiradi va har qanday massiv bilan ishlashi mumkin. Ushbu 
massiv elementlari ro‘yxatli tip indeksi diapazonini qo‘llagan holda raqamli tipga ega: 
generic 
type INDEX_TYPE is (<>); 
type ELEMENT_TYPE is private; 
type VECTOR is array (INTEGER_TYPE range <>) of ELEMENT_TYPE; 
procedure GENERIC_SORT (LIST : in out VECTOR); 
procedure GENERIC_SORT (LIST : in out VECTOR) is TEMP : ELEMENT_TYPE; 
begin 
for TOP in LIST’FIRTS..INDEX_TYPE’PRED(LIST’LAST) loop 
for BOTTOM in INDEX_TYPE’SUCC(TOP)..LIST’LAST loop 
if LIST (TOP) > LIST (BOTTOM) then 
TEMP := LIST(TOP); 
LIST := LIST (BOTTOM); 
LIST (BOTTOM) := TEMP; 
end if; 
end loop; -- for BOTTOM … 
Ushbu o‘rnatilgan protseduraning ba’zi bo‘laklari g‘alati ko‘rinishi mumkin, bu 
siz Ada tili bilan tanish bo‘lmasangizgina yuzaga keladi. Ammo, ushbu holatda 
sintaksisning barcha detallarini tushunish shart emas. Massiv tiplari va uning 
elementlari ushbu protseduraning ikkita o‘rnatilgan parametri orqali ishga 
tushiriladi, bunda indeks o‘zgarishining har qanday diapazoni va tipi qo‘llanilishi 
mumkin. 
O‘rnatilgan sortirovka, protsedura shablonidan boshqa narsa emas. 
Kompilyator ushbu protsedura uchun hech qanday kodni generatsiyalamaydi. Va bu 
qandaydir aniq tip uchun protsedura nusxasi yaratilmagunigacha dastur ishlashiga 
halal bermaydi. Protsedura nusxasi operator yordamida yaratilib, u quyidagi 
ko‘rinishda bo‘lishi mumkin: 
procedure INTEGER_SORT is new GENERIC_SORT ( 
INDEX_TYPE => INTEGER; 
ELEMENT_TYPE => INTEGER; 
VECTOR => INT_ARRAY); 


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
238 
Ushbu operatorga javob tarzida kompilyator INTEGER_SORT nomi bilan 
GENERIC_SORT protsedurasi versiyasini yaratib, u INTEGER tipi indeksili INTEGER tipi 
elementlariga ega bo‘lgan INT_ARRAY tipi massivini sortirovkalaydi. 
GENERIC_SORT protsedurasida > operatori sortirovkalanayotgan massiv 
elementlari uchun aniqlangan. GENERIC_SORT protsedurasining universalligini 
oshirish mumkin. Bunda unga o‘rnatilgan parametrli taqqoslash funksiyasi 
o‘rnatiladi. 
Ada tilida qism dasturlarni boshqa qism dasturlarning parametrlari kabi 
yuborish yo‘lga qo‘yilmaydi. Ushbu imkoniyatga ega bo‘lish uchun, Ada tilida 
o‘rnatilgan rasmiy qism dasturlar qo‘llaniladi. Pascal dasturlash tilida qism dasturlar 
parametrlar kabi yuborilishi mumkin, shuning uchun aniq chaqiruvda yuborilayotgan 
qism dasturdan qism dastur natijasini chiqarish uchun foydalanish mumkin. Ada 
tilida xuddi shunday natijaga turli mavjud qism dasturlar bilan foydalanuvchiga 
o‘rnatilgan qism dasturning cheklangan sonda nusxa yaratish imkoniyatini berish 
orqali hal qilinadi. Masalan, 8.6. bo‘limda yozilgan integrate protsedurasini Ada tilida 
quyidagi ko‘rinishda yozish mumkin: 
generic 
with function FUN (X: FLOAT) return FLOAT; 
procedure INTEGRATE (LOWERBD : in FLOAT; 
UPPERBD : in FLOAT; 
RESULT : out FLOAT) is 
FUNVAL : FLOAT; 
begin 
… 
FUNVAL:= FUN (LOWERBD); 
… 
end; 
Foydalanuvchi tomonidan FUN1 funksiyasini integratsiyalash uchun ushbu 
protsedura nusxasini yaratishda quyidagi operatorni qo‘llash mumkin: 
procedure INTEGRATE_FUN is new INTEGRATE (FUN=>FUN1); 
Endi INTEGER_FUN1 protsedurasi FUN1 funksiyasini integratsiyalashga 
qaratilgan. 

Download 6,33 Mb.
1   ...   119   120   121   122   123   124   125   126   ...   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