Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr


 Ada tilida o‘rnatilgan qism dasturlar



Download 5,36 Mb.
Pdf ko'rish
bet221/335
Sana02.08.2021
Hajmi5,36 Mb.
#136132
1   ...   217   218   219   220   221   222   223   224   ...   335
Bog'liq
Dasturlash asoslari(O'zbekcha)

 
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 5,36 Mb.

Do'stlaringiz bilan baham:
1   ...   217   218   219   220   221   222   223   224   ...   335




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish