logo

Multimodulli programmalar yaratish usullari

Загружено в:

12.08.2023

Скачано:

0

Размер:

60.73046875 KB
Mavzu:Multimodulli programmalar yaratish usullari.
Reja:
1. Kirish
2.  Dasturlash tarixining bosqichma-bossqich rivojlanishi.
3. Multimodulli dasturlashning asosiy tushunchalari.
4. Multimodulli dasturlash haqida.
5. Xulosa. Kirish
Modulli   dasturlashda,   masalan,   Modula2   kabi   tilda   prosedurali   dasturlashda
topilgan   ayrim   kamchiliklarni   bartaraf   etishga   urinib   ko’rildi.   Modulli
dasturlash   dasturni   bir   necha   tarkibiy   bo’laklarga,   yoki,   boshqacha   qilib
aytganda,   modullarga   bo’lib   tashdlaydi.   Agar   prosedurali   dasturlash
ma’lumotlar   va   prosedsralarni   bo’lib   tashlasa,   modulli   dasturlash,   undan  farqli
o’laroq,   ularni   birlashtiradi.   Modul   ma’lumotlarning   o’zidan   hamda
ma’lumotlarga   ishlov   beradigan   proseduralardan   iborat.   Dasturning   boshqa
qismlariga   moduldan   foydalanish   kerak   bo’lib   qolsa,   ular   modul   interfeysiga
murojaat   etib   qo’yaqoladi.   Modullar   barcha   ichki   axborotni   dasturning   boshqa
qismlarida yashiradi.
Biroq   modulli   dasturlash   ham   kamchiliklardan   holi   emas.   Modullar
kengaymas   bo’ladi,   bu   degani   kodga   bevosita   kirishsiz   hamda   uni   to’g’ridan-
to’g’ri   o’zgartirmay  turib  modulni   qadamma-qadam   uzgartirish   mumkin   emas.
Bundan   tashqari,   bitta   modulni   ishlab   chiqishda,   uning   funksiyalarini
boshqasiga o’tkazmay (delegat qilmay) turib boshqasidan foydalanib bo’lmaydi.
Yana garchi modulda turni belgilab bo’lsa-da, bir modul boshqasida belgilangan
turdan foydalana olmaydi.
Modulli   va   prosedurali   dasturlash   tillarida   tuzilmalashtirilgan   va
tuzilmalashtirilmagan   ma’lumotlar   o’z   «tur»iga   ega.   Biroq   turni   kengaytirish
usuli,   agar   «agregatlash»   deb   ataluvchi   usul   yordamida   boshqa   turlarni
yaratishni hisobga olmaganda, mavjud emas.
Va,   nihoyat,   modulli   dasturlash   —   bu   yana   proseduraga   mo’ljallangan
gibridli   sxema   bo’lib,   unga   amal   qilishda   dastur   bir   necha   proseduralarga
bo’linadi.   Biroq   endilikda   proseduralar   ishlov   berilmagan   ma’lumotlar   ustida
amallarni bajarmaydi, balki modullarni boshqaradi.
Obyektga   mo’ljallangan   dasturlash   (OMD)   modulli   dasturlashdan   keyingi
mantiqiy pog’onani egallaydi, u modulga nasldan-naslga o’tishni va polimorfizmni
qo’shadi.   OMD   dan   foydalanr   ekan,   dasturchi   dasturni   bir   qator   oliy   darajali
obyektlarga bo’lish yo’li bilan tizimlashtiradi. bo’lib xizmat qiladi. Dasturlash — predmet va texnikaning nisbatan yosh va tez   г ivojlanayotgan
sohasi.   Mavjud   dasturiy   va   texnik   vositalarni   real   ishlab   chiqish   va
tarmoqlashtirishni olib borish tajribasi doimo qayta izlanishni talab etadi. Natijada
yangi usullar, uslublar va texnologiyalar paydo bo‘ladi, ular o‘z navbatida, dasturiy
ta’minlashni   ishlab   chiqishning   yanada   zamonaviy   vositalari   uchun   asos   bo'lib
xizmat qiladi. Yangi texnologiyalarni yaratish jarayonlarini tekshirish va ularning
asosiy   yo‘nalishlarini   aniqlash,   bu   texnologiyalarni   dasturlashning   rivojlanish
darajasi   hamda   dasturchilar   ixtiyoridagi   dasturiy   va   apparat   vositalarining
xususiyatlari bilan solishtirish maqsadga muvofiqdir.
XX asrning 60-yillari boshida «dasturlash inqirozi» yuz berdi. U operatsion
tizimlar   kabi   murakkab   dasturiy   ta’minotni   ishlab   chiqishga   uringan   firmalar
loyihalarni   tugallashning   barcha   muddatlaridan   kechikkan   edi.   Loyiha   joriy
etilishidan oldinroq eskirib qolar, uning qiymati ortib borar va, natijada, ko‘pgina
loyihalar shu tariqa tugallanmay qolib ketar edi.
Ikkinchi   bosqich   dasturlashga   tarkibiy   yondashish   (XX   asrning   60—70   -
yillari). Dasturlashga tarkibiy yondashish dasturiy ta’minlashni ishlab chiqishning
barcha bosqichlarining bajarilishini qamrab oluvchi tavsiya etilayotgan texnologik
usullar   majmuasidan   iborat.   Tarkibiy   yondashish   asosida   uncha   katta   bo‘lmagan
(40—50   operatorgacha)   alohida   kichik   dasturlar   ko‘rinishida   keyingi   amalga
oshirish   maqsadida   murakkab   tizimlar   dekompozitsiyasi   (qismlarga   bo'laklash)
yotadi.  Dekompozitsiya   boshqa  tamoyillari   (obyektli,  mantiqiy  va  h.)   ning  paydo
bo‘lishidan keyin ushbu usul protsedurali dekompozitsiya deb ataladi.
Ilgariroq foydalanilgan dekompozitsiyaga  protsedurali yondashishdan  farqli
ravishda   tarkibiy   yondashish   eng   sodda   tuzilishdagi   kichik   masalalar   iyerarxiyasi
ko‘rinishida   masalaning   taqdim   etilishini   talab   qilar   edi.   Loyihalashtirish,   shu
tariqa   «quyidan   yuqoriga»   amalga   oshirilib,   kichik   dasturlar   interfeyslarining
ishlab   chiqilishini   ta’m   inlagan   holda   umumiy   g‘oyaning   amalga   oshirilishini
ko‘zda   tutgan   edi.   Bir   vaqtning   o‘zida   algoritmlar   konstruksiyasiga   cheklashlar
kiritilar,   ular   ta’rifning   formal   modellari,   shuningdek,   algoritmlarni
loyihalashtirishning   maxsus   usuli—qadama   -   qadam   detallashtirish   usuli   tavsiya etilgan   edi.   Tarkibiy   dasturlash   tamoyillarini   ta’minlash   dasturlashning
protsedurali  tillari asosiga  kiritilgan. Qoidaga ko‘ra, ular boshqaruvni uzatishning
asosiy   «tarkibiy»   operatorlarini,   kichik   dasturlar   kiritilishi,   lokallashtirish   va
ma’lum   otlar   sohasining   «ko‘rinishliligi»ning   chegaralanishini   ta’minlar   edi.   Bu
guruhning   eng   ma’lum   tillaridan   PL/1,   ALGOL-68,   Pascal,   С   ni   misol   qilib
ko‘rsatish   mumkin.   Tarkibiy   dasturlash   bilan   bir   vaqtda   boshqa   konsepsiyalarga
asoslangan   ko‘p   miqdordagi   tillar   paydo   boldi,   ammo   ularning   ko‘pchiligi
raqobatga   bardosh   bera   olmadi.   Qaysidir   tillar   unutildi,   boshqa   tillarning
g‘oyalaridan,   rivojlanayotgan   tillarning   keyingi   versiyalaridan   keyinchalik
foydalanildi.Ishlab   chiqilayotgan   dasturiy   ta’minot   murakkabligi   va
o‘lchamlarining keyingi o'sishi ma’lum otlar tuzilishining rivojlanishini talab qildi.
Buning   oqibatida   tillarda   ma’lum   otlarning   foydalanish   turlarini   belgilash
imkoniyati   paydo   bo‘ldi.   Ayni   paytda   global   ma’lum   otlar   bilan   ishlashda   kelib
chiqadigan   xatolar   miqdorini   kam   aytirish   uchun   dasturning   global
ma’lumotlaridan   foydalanishni   chegaralashga   urinish   kuchaydi.   Natijada   modulli
dasturlash texnologiyasi paydo bo‘lib, rivojlana boshladi. 
Modulli   dasturlashdan   foydalanish   dasturiy   ta’minotning   bir   qancha
dasturchilar   tomonidan   ishlab   chiqilishini   ancha   osonlashtirdi.   Endilikda   ulardan
har   biri   modullar   o’zaro   ta’sirini   maxsus   aytib   o‘tilgan   modullararo   interfeyslar
orqali   ta’minlab,   o‘z   modullarini   mustaqil   ishlab   chiqishi   mumkin   edi.   Bundan
tashqari,   modullardan   keyinchalik   o‘zgarishlarsiz   boshqa   ishlab   chiqishlarda
foydalanish  mumkin bo'lgan. Bu  dasturchilarning mehnat  unumdorligini  oshiradi.
Amaliyot shuni ko‘rsatdiki, modulli dasturlash bilan birgalikda tarkibiy yondashish
o‘lchami   100   000   operatordan   oshmagan   yetarli   darajada   ishonchli   dasturlarni
yaratish   imkonini   beradi.   Kichik   dasturni   chaqirishda   interfeysdagi   xato   faqat
dastur   bajarilgandagina   aniqlanishi   (modullarning   ajratilgan   kompilyatsiyasi
tufayli   bu   xatolarni   ilgariroq   aniqlashning   iloji   yo‘q)   modulli   dasturlashning   tor
joyi   hisoblanadi.   Odatda   dastur   o‘lchami   kattalashganda   modullararo
interfeyslarning murakkabligi ortadi va qaysidir daqiqadan boshlab dastur alohida
qismlarining   o‘zaro   ta’sir   ko‘rsatishini   oldindan   bilishning   hech   ham   iloji   yo‘q. Katta ko‘lamdagi dasturiy ta’minotni ishlab chiqish uchun obyektli yondashishdan
foydalanish taklif etildi.
Uchinchi   bosqich   —   dasturlashga   obyektli   yondashuv   (XX   asrning   80-yillari
o‘rtasidan   90-yillar   oxirigacha).   Obyektga   mo‘ljallangan   dasturlash   har   biri
muayyan   turdagi   (klassdagi)   nusxa   bo‘lgan   obyektlar   majmuasi   ko‘rinishida
dasturning   taqdim   etilishiga   asoslangan   murakkab   dasturiy   ta’minlashni   yaratish
texnologiyasi   sifatida   aniqlanadi,   bunda   klasslar   xususiyatlarni   meros   qilib   olish
bilan   birga   iyerarxiyani   hosil   qiladi.   Bunday   tizimdagi   dasturiy   obyektlarning
o‘zaro   harakati   xabarlarni   uzatish   yo‘li   orqali   amalga   oshiriladi   (1.6-rasm).
Dasturning obyektli tuzilishidan ilk bor XX asrning 60-yillaridayoq paydo bo‘lgan
murakkab   tizimlarni   imitatsiyali   modellashtirish   tili   -   Simula   da   foydalanilgan.
Modellashtirish   tillari   uchun   tabiiy   hisoblangan   dasturni   taqdim   etish   usuli
modellashtirishning boshqa  ixtisoslashtirilgan  tili  — Smalltalk tilida rivojlanishni
davom ettirgan (XX asrning 70-yillari), keyin esa, Pascal, C++, Modula, Java kabi
dasturlashning   universal   tillariga   ko‘chirilgan.   Modulli   dasturlashga   nisbatan
obyektga   mo'ljallangan   dasturlashning   asosiy   yutug‘i   dasturiy   ta’minotni   ishlab
chiqishni   ancha   yengillashtiruvchi   dasturiy   ta’minotning   «yanada   tabiiyroq»
bo'laklanishi   hisoblanadi.   Bu   ma’lumotlarni   yanada   to‘liqroq   lokallashtirish   va
ularning ishlov berish kichik dasturlari bilan integratsiyalashishiga olib keladi. 0 ‘z
navbatida,   mazkur   holat   dasturning   alohida   qismlari   (obyektlar)ning   mustaqil
ishlab   chiqilishini   olib   borish   imkonini   beradi.   Bundan   tashqari,   obyektli
yondashish  merosiylik,  polimorfizm, kompozitsiyalash,   to‘ldirish  mexanizmlariga
asoslangan   dasturlarni   tashkil   etishning   yangi   usullarini   taklif   etadi.   Bu
mexanizmlar   nisbatan   oddiy   obyektlardan   murakkab   obyektlarni   qurish
imkoniyatini beradi. 
Shu   tariqa   vizual   dasturlashni   ta’minlovchi   muhitlar   yaratildi.   Masalan,
Delphi,   C++,   Builder,   Visual   C++   va   h.k.   Vizual   muhitdan   foydalanganda
dasturchida   maxsus   kutubxona   komponentlarini   qo‘shish   va   sozlash   vizual
vositalarini   qo‘llagan   holda   ba’zi   qismlarni   loyihalashtirish   imkoniyati   paydo
bo‘ladi.   Masalan,   bo‘lajak   mahsulot   interfeyslari   muvofiq   kodlar   kiritilgan loyihalashtirish natijasidir. Obyektli  yondashishdan  foydalanish ko‘p afzalliklarga
ega,   ammo   uning   Pascal   va   C   ++   kabi   dasturlashning   obyektli   mo‘ljallangan
tillarda aniq amalga oshirilishi sezilarli kamchiliklarga ega: 
•   dasturlashning   hatto   bir   tili   doirasida   obyektlar   kompilyatsiyasining   ikkilik
natijalarini   joylashtirish  standartlari  mavjud  cmas:   C++ ning  turli   kompilyatorlari
orqali   olingan   obyektlarning   joylashtirilishi   muammosidir.   Bu   yuqori   darajadagi
dasturlash   bitta   tilining   hamda,   bitta   kompilyatorning   vositalari   va
imkoniyatlaridan   foydalangan   holda   dasturiy   ta’minotni   ishlab   chiqish   zaruratiga
olib   keladi,   demak,   klasslarning   foydalaniladigan   kutubxonalari   boshlang‘ich
kodlarining bo‘linishini talab qiladi; 
•   dasturiy   obyektlardan   birining   amalga   oshirilishining   o‘zgartirilishi,   kamida,
tegishli  modulning qayta kompilyatsiyalanishi  va ushbu obyektdan foydalanuvchi
butun dasturiy ta’minlashni qayta joylashtirish bilan bog‘liq.
Shu   tariqa,   dasturlashning   bu   tillaridan   foydalanishda   dasluriy   ta’minot
modullarining   eksport   qilinayotgan   maydonlar   v,i   usullarning   manzillari,
shuningdek, ma’lumotlarning tarkibi va formatlariga bog'liqligi saqlanib qoladi. Bu
bog'liqlik   obyekliv.   Chunki,   modullar   bir-birlarining   resurslariga   murojaat   qilib
o‘zaro   ta’sir   ko‘rsatishlari   kerak.   Modullar   aloqasini   uzish   mumkin   emas,   ammo
ularning   o‘zaro   ta’sirini   standartlashtirishga   urinish   mumkin,   dasturlashga
komponentli yondashish ham shunga asoslangan.
To‘rtinchi   bosqich   —   komponentli   yondashuv   va   CASE   texnologiya   (XX
asrning   90-yillaridan   boshlab   to   hozirgi   paytgacha).   Komponentli   yondashish   —
standartlashtirilgan   ikkili   interfeyslar   orqali   o‘zaro   ta’sir   ko‘rsatuvchi   dasturiy
ta’minotning   fizik   jihatdan   alohida   mavjud   bo'lgan   qismlar   —   dasturiy
ta’minotning   alohida   komponentlaridan   qurilishini   ko‘zda   tutadi.   Oddiy
obyektlardan   farqli   ravishda   obyekt   komponentlarni   dinamik   chaqiriladigan
kutubxonalar   yoki   bajariladigan   fayllarga   yig'ish,   ikkili   ko‘rinishda   (boshlang‘ich
matnlarsiz)   tarqatish   va   muvofiq   texnologiyani   ta’minlovchi   dasturlashning   har
qanday   tilida   foydalanish   mumkin.   Bugungi   kunda   obyektlar   bozori   haqiqatga
aylandi,   chunki   Internetda   ko‘p   miqdordagi   komponentlarni   taqdim   etuvchi bog‘lamalar   mavjud,   jurnallar   komponentlar   reklamasi   bilan   to‘libtoshgan.   Bu
dasturchilarga   hech   boclmaganda   qisman   qayta   foydalanilgan   qismlardan   iborat
mahsulotlarni   yaratish,   ya’ni   apparaturani   loyihalashtirish   sohasida   o‘zini   ijobiy
tomondan ko'rsatgan texnologiyadan foydalanish imkonini beradi. 
Modullar   va   ularning   xususiyatlari   .   Yetarlicha   murakkab   dasturiy
ta’minotni   loyihalashtirishda   uning   umumiy   tuzilmasi   belgilangandan   so‘ng,
loyihachi   fikriga   ko‘ra,   keyingi   dekompozitsiyaga   muhtoj   bo‘lmagan   elementlar
olingunga   qadar   tanlangan   yondashuvga   muvofiq   holda   komponentlar
dekompozitsiyasi   bajariladi.   Avval   eslatib   o‘tilganidek,   hozirgi   paytda   ishlab
chiqilayotgan   dasturiy   ta’minot   dekompozitsiyasining   tegishli   yondashuv   bilan
bog’liq ikki usuli qo‘llaniladi: 
• protsedurali (yoki tuzulmaviy-yondashuv nomi bo‘yicha); 
• obyektli. 
Eslatma.   Ko‘rsatilgan   dekompozitsiya   usullaridan   tashqari   dasturlash
nazariyasida   dekompozitsiyasining   boshqa   usullari   ham   belgilanadi:   mahsulot
faktlari   va   qoidalariga   —   mantiqiy   dekompozitsiya   va   hokazo.   Mazkur
dekompozitsiya   usullari   sun’iy   intellekt   tillarida   qo'llaniladi,   shu   boisdan   ular
ushbu darslikda ko‘rib chiqilmaydi. 
Qaror   qabuli   bilan   bog‘liq   funksiyalar   yuqori   darajadagi   tagdasturlar,
bevosita   qayta   ishlash   esa   quyi   darajadagi   tagdasturlar   orqali'   ijobatlanadigan
tagdasturlar   iyerarxiyasi   protsedurali   dekompozitsiya   natijasi   hisoblanadi.   Bu
dasturlashga   tuzilmaviy   yondashuvning   boshqa   tavsiyalari   bilan   birgalikda
shakllantirilgan vertikal boshqaruv tamoyili bilan muvofiqlashadi. U, shuningdek,
har qanday tagdastur  o‘zining chaqirgan tagdastur boshqaruvini  qaytarishini  talab
qilgan   holda   boshqaruv   berilishining   ehtimolli   variantlarini   ham   chegaralaydi.
Obyektli   dekompozitsiya   natijasi   obyektlar   uyg‘unligi   bo‘lib,   tegishli   maydonlar
bilan   ishlovchi   ma’lumotlar   va   usullar   uyg‘unligini   ifodalagan   holda   keyinroq
ayrim maxsus ishlab chiqiluvchi namunalar (sinflar) sifatida aniqlanadi.  Shunday   qilib,   har   qanday   dekompozitsiya   usulida   amalga   oshirish
jarayonida   modullarga   aylantiriladigan   kichik   dasturlarning   tegishli   ma’lumotlari
bilan bog'liq majmua vujudga keltiriladi. 
Modullar.   Avtonom   kompilyatsiyalanuvchi   dasturiy   birlik   modul   deyiladi.
«Modul» atamasi an’anaviy ravishda ikki ma’noda qo‘llaniladi. Dastlab, dasturlar
o‘lchami   nisbatan   katta   bo'lmagan   va   barcha   tagdasturlar   alohida
kompilyatsiyalangan   paytda   kichik   dastur,   ya’ni   murojaat   nom   bo‘yicha
bajariladigan   dastur   fragmentlari   bog‘liqligining   davomiyligi   modul   deb
tushuniladi.   Vaqt   o‘tib,   dasturlar   o‘lchami   ancha   ortdi   va   resurslar:   konstantlar,
o‘zgaruvchilar, namunalar, sinflar va tagdasturlar bayonlari kutubxonasini yaratish
imkoniyati   paydo   bo‘lgach,   «modul»   atamasi   dasturiy   resurslarning   avtonom
kompilyatsiyalanuvchi majmui ma’nosida ham qo‘llana boshlandi.  
Modulli   dasturlash   -   bu   modullar   deb   ataladigan,   tuzilishi   va   xatti-harakatlari
ma'lum qoidalarga bo'ysunadigan kichik mustaqil bloklar to'plami sifatida dasturni
tashkil etish.
Modulli   dasturlashdan   foydalanish   dasturni   sinab   ko'rish   va   xatolarni
topishni osonlashtiradi.   Uskunaga bog'liq bo'lgan kichik vazifalarni boshqa kichik
vazifalardan   qat'iy   ravishda   ajratish   mumkin,   bu   esa   yaratilgan   dasturlarning
ko'chmaligini yaxshilaydi.
Modul   -     bu dasturning     alohida qismi sifatida tuzilgan mantiqiy bog'langan
fragmentlar   ketma-ketligi.   Ko'pgina   tillarda   (lekin   shart   emas)   u   manba   kodi   yoki
uning nomli uzluksiz qismi   bilan alohida   fayl sifatida chiqariladi..
Modulni   qurishda   kontseptsiya   qo'llaniladi:   "bitta   modul   -   bitta
funktsiya".   Shunday   qilib,   modul   bitta   mustaqil   vazifani   hal   qiladigan   dastur
elementidir.   Ba    '   zi        tillar        modullarni        paketlash      imkonini   beradi .
Modullik   printsipi   dasturiy   ta ' minotni   loyihalash  ( SW )  vazifasini   soddalashtirish   va
ishlab   chiqish   jarayonini   ishlab   chiqish   guruhlari   o ' rtasida   taqsimlash   vositasidir .
Bu   modulli   dasturlashning   paydo   bo ' lishiga   olib   kelgan   yirik   dasturiy   ta ' minot
tizimlarini   ishlab   chiqish   zarurati   edi ,   bunda   butun   dastur   ( aniqrog ' i ,   loyiha )
modullar   deb   ataladigan   tarkibiy   qismlarga   bo ' lingan   bo ' lib ,   ularning   har   biri o ' zining   boshqariladigan   o ' lchamiga ,   aniq   maqsadiga   ega .   tashqi   muhit   bilan
batafsil   interfeys .
Dasturiy   ta'minot   modullarga   bo'linganda   ,   har   biri   uchun   u   amalga   oshiradigan
funksionallik, shuningdek, boshqa modullar bilan bog'lanish ko'rsatiladi.
Modulli arxitekturadan foydalanish qulayligi   :
 kodni   yangilash   imkoniyati   -   mantiqiy   xatolarni   optimallashtirish   yoki   yo'q
qilish uchun ma'lum vaqtdan keyin kerak ;
 manba   kodiga   qo'shimcha   -   modulning   funksionalligini   kengaytirish   uchun
zarur;
 refaktoring      -   haddan   tashqari   murakkablikni   bartaraf   etish,   ravshanlikni
oshirish,  moslashuvchanlikni  oshirish  uchun  kodni  tahrirlash,   o'zgartirish  yoki
qayta ishlash, lekin uning xatti-harakatlarida o'zgarishlarsiz, bu har bir sinovdan
keyin qayta ishlash orqali tekshiriladi;
 modulni   boshqa   mantiq   bilan   almashtirish   -   tegishlilikni   yo'qotganda,
o'lchovsizlik yoki ushbu modulni olib tashlash zarurati tug'ilganda.
Bularning barchasi loyiha kodining qolgan qismini o'zgartirmasdan sodir bo'ladi.
Modulli dasturlashning asosiy tushunchalari:
 har bir modulda bitta kirish va chiqish nuqtasi mavjud;
 modul hajmini iloji boricha minimallashtirish kerak;
 butun tizim modullardan qurilgan;
 har bir modul boshqa modullar qanday amalga oshirilishidan mustaqil.
Modullarning   rolini   ma'lumotlar   tuzilmalari   ,   funktsiyalar
kutubxonalari   ,   sinflar   ,   xizmatlar   va   ba'zi   funktsiyalarni   amalga   oshiradigan
va   unga   interfeysni   ta'minlaydigan   boshqa   dasturiy   ta'minot   birliklari   o'ynashi
mumkin .
Dastur kodi ko'pincha bir nechta fayllarga bo'linadi, ularning har biri boshqalardan
alohida   tuzilgan   .   Dastur   kodining   bunday   modulligi   faqat   oz   sonli   manba fayllariga   kiritilgan   o'zgarishlarni   qayta   kompilyatsiya   qilish   vaqtini   sezilarli
darajada qisqartirishi mumkin, guruhni   ishlab chiqishni osonlashtiradi, shuningdek,
tasodifiy mantiqiy xatolik ehtimolini kamaytiradi.
Bu,   shuningdek,   yakuniy   dasturiy   mahsulotning   individual   komponentlarini
(masalan,   jar   fayllari   , so  yoki   DLL  kutubxonalari)  butun loyihani   qayta  qurishga
hojat   qoldirmasdan   almashtirish   qobiliyatidir   (masalan,   allaqachon   tugallangan
dastur uchun   plaginlarni ishlab chiqish).
Modulli   dasturlarni   yozish   usullaridan   biri   ob'ektga   yo'naltirilgan
dasturlashdir   .   OOP,   kapsülleme   ,   polimorfizm   va   kech   ulanish   kabi   xususiyatlar
orqali yuqori darajadagi modulyarlikni ta'minlaydi   .
Modullarning   modul   tizimi .  Modulli   dasturlash   ma ' lum   bir   tilning   tafsilotlari   bilan
bog ' liq   emasligiga   qaramay   ( va   hatto   til   tomonidan   aniq   qo ' llab - quvvatlanmagan
bo ' lsa   ham ,   dasturchilar   tomonidan   etarli   intizom   bilan   foydalanish   mumkin ),
aksariyat   tillar   o ' zlarining   modul   tizimini   kuchaytiradilar .  modul   tizimini   bir   tildan
ikkinchi   tilga   o ' tkazish   imkonsiz   bo ' lganidek ,  yuqori   darajaga   ko ' tarilishi   mumkin .
2000   yilda        Xavier        Leroy        modul        tizimlarini        modulli        qilishni        taklif        qildi    ,    ya    '   ni        o   '   ziga   
xos         turdagi         tizimga         ega        bo
    '
   lgan
      tilning   o ' ziga   xos   yadrosini   tavsiflash   orqali
parametrlangan   .   Misol  tariqasida, u   ML modul tilini   (hozirda ma'lum bo'lgan eng
rivojlangan   modullar   tizimi   sifatida)   umumlashtirilgan   amalga   oshirishni   va   uni
an'anaviy   ML   tiliga va   C   tiliga o'rnatish misollarini ko'rsatdi .
Leroy   amalga   oshirishning   o'zi   ML   modul   tilidan   foydalangan   holda   qurilgan   ,
ya'ni   tilning   yadrosi   haqidagi   ma'lumotlar   va   uning   turga   muvofiqligini   tekshirish
mexanizmining tavsifi bilan parametrlangan        funktor      sifatida .   Bu shuni anglatadiki,
ma'lum   bir   til   uchun   kompilyator   yozishda   tilning   yadrosini   tavsiflash   va   uni
berilgan   funktorga   (kutubxona   funktsiyasi   sifatida)   o'tkazish   kifoya   -   natijada
ma'lum tilni   tizim bilan kengaytirish uchun kompilyator bo'ladi.        ML modullari      .
Modul   kontseptsiya   tarixi . Kompilyatsiya birliklari sifatida modullar kontseptsiyasi
tarixi   Fortran   II   va   Kobolga   ,   ya'ni   1950-yillarning   oxiriga   borib   taqaladi.   1976
yilda   modullik   kontseptsiyasini   ishlab   chiqqan   nashr   paydo   bo'ldi   -   Xerox
PARC   da  ishlab   chiqilgan   Mesa   tili   (   ingliz  tili   )   haqida   .   1977  yilda   olim   Niklaus Virt   Xerox   PARC   ishlab   chiqaruvchilari   bilan   suhbatda   ushbu   kontseptsiya   bilan
batafsil   tanishdi.   Ushbu   g'oyalar   Wirth   tomonidan   1977   yilda   nashr
etilgan   Modula-2 tilini yaratish uchun ishlatilgan.
Dasturlashda   “modul”   atamasi   dasturlarni   yaratishda   modul   tamoyillarining   joriy
etilishi   munosabati   bilan   ishlatila   boshlandi.   1970-yillarda   modul   muayyan
qoidalarga muvofiq yozilgan protsedura yoki funksiya edi.   Masalan: "modul oddiy,
yopiq   (mustaqil),   ko'rinadigan   (50   dan   100   qatorgacha),   faqat   bitta   vazifa
funktsiyasini amalga oshiradigan, bitta kirish va bitta chiqish nuqtasiga ega bo'lishi
kerak."
D.   Parnas   (   Devid   Parnas   )   1972   yilda   birinchi   bo'lib   dastur   modulining   asosiy
xususiyatlarini ko'proq yoki kamroq aniq shakllantirdi   : "Bir modulni yozish uchun
boshqasining   matni   haqida   etarli   minimal   bilim   bo'lishi   kerak."   Shunday   qilib,
ta'rifga ko'ra, modul ierarxiyaning eng quyi darajasi  (amalga oshirish darajasi) va
eng yuqori darajadagi har qanday alohida protsedura (funktsiya) bo'lishi mumkin,
bunda faqat boshqa modul protseduralariga qo'ng'iroqlar amalga oshiriladi.
Shunday   qilib,   Parnas   birinchi   bo'lib   dasturlashda   ma'lumotlarni   yashirish
tushunchasini   ilgari   surdi   .         Biroq,   70-yillarning   tillarida   mavjud   bo'lgan   yagona
sintaktik   konstruktsiyalar,   masalan,   protsedura   va   funktsiya   global
o'zgaruvchilarning   keng   qo'llanilishi   tufayli   ishonchli   ma'lumotlarni   yashirishni
ta'minlay olmadi.
Bu   muammoni   faqat   global   o'zgaruvchilar   ta'sir   qilmaydigan   yangi   sintaktik
konstruktsiyani   ishlab   chiqish   orqali   hal   qilish   mumkin   edi.   Bunday   dizayn
yaratilgan   va   modul   deb   nomlangan.   Dastlab,   murakkab   dasturiy   ta'minot
tizimlarini   amalga   oshirishda   moduldan   protseduralar   va   funktsiyalar   bilan   bir
qatorda ma'lum bir kichik vazifani amalga oshirish tafsilotlarini birlashtiruvchi va
ishonchli   tarzda   yashiradigan   qurilish   sifatida   foydalanish   kerak   deb   taxmin
qilingan.
Shunday qilib, kompleksdagi modullar soni mustaqil kichik vazifalarga o'rnatilgan
topshiriqning   parchalanishi   bilan   aniqlanishi   kerak.   Haddan   tashqari   holatda,
moduldan   faqat   bitta   protsedurani   qo'shish   uchun   foydalanish   mumkin,   agar   u amalga   oshiradigan   mahalliy   harakat   har   qanday   o'zgarishlar   ostida   dasturning
boshqa qismlari ta'siridan mustaqil bo'lishi kafolatlangan bo'lsa.
Birinchi   marta   modulning   ixtisoslashtirilgan   sintaktik   konstruktsiyasi   1975   yilda
N.Virt   tomonidan   taklif   qilingan   va   uning   yangi   tili   Modulaga   kiritilgan.   Modul
mexanizmi   joriy   etilganda   tilning   xossalari   qanchalik   kuchli   o‘zgarishini
N.Virtning   keyingi   Modula-2   tili   haqida   aytgan   quyidagi   fikri   tasdiqlaydi:
“Modullar   Modula-2   ni   ajratib   turuvchi   eng   muhim   xususiyatdir.   o'zidan   oldingi
Paskal tilidan olingan til."
Dasturlash   tillarida   amalga   oshirish.   Modullar   kontseptsiyasini   rasmiy   ravishda
qo'llab-quvvatlaydigan   tillar:   IBM
S/360        Assembler      ,   Cobol   ,   RPG   ,   PL/1   ,   Ada   ,   D   ,   F          (inglizcha)   ,   Fortran   ,   Haskell  
,   Blitz   BASIC   ,   OCaml   ,   Paskal   ,   ML   ,   Modula-2   ,   Oberon   ,   Komponent
Paskal   ,   Zonnon   ,   Erlang   ,   Perl   ,   Python   va   Ruby   . .   IBM   tizimi   ILE   muhitida
dasturlashtirilganda   RPG   ,   Cobol   va   CL tillaridagi "modullardan" foydalangan.
Modulli   dasturlash   dasturlash   tilining   sintaksisi   modullarning   aniq   nomlanishini
qo‘llab-quvvatlamasa ham amalga oshirilishi mumkin.
Dasturiy ta'minot vositalari bog'lovchi   dastur bilan tuzilgan guruhlarning qismlari -
kutubxona   komponentlari   sifatida   taqdim   etilgan   manba   kodining   modullarini
yaratishi mumkin   .
Standart  Paskalda  dastur  qismlarini  bajarishdan   oldin  ularni   keyingi   yig'ish
bilan   alohida   kompilyatsiya   qilish   mexanizmlari   mavjud   emas.   Tijoriy   Paskal
kompilyatorlarini   ishlab   chiquvchilar   tilga   uning   modulligini   oshiradigan
vositalarni kiritishni xohlashlari juda tushunarli. 
Paskal   tilidagi  modul  o'z-o'zidan  tuzilgan  dastur   birligi  bo'lib,  u  e'lon bo'limining
turli   komponentlarini   (turlar,   doimiylar,   o'zgaruvchilar,   protseduralar   va
funktsiyalar) va, ehtimol, boshlash qismining ba'zi bajariladigan operatorlarini o'z
ichiga oladi.
O'zining   tashkil   etilishi   va   dasturda   qo'llanish   xarakteriga   ko'ra   Paskal
modullari Ada dasturlash tilining paketli modullariga (PACKAGE) yaqin.   Ularda,
shuningdek,   Ada   paketlarida   ba'zi   "ko'rinadigan"   interfeys   qismi   aniq   ajratilgan bo'lib,   unda   global   tiplar,   konstantalar,   o'zgaruvchilarning   tavsiflari   jamlangan,
shuningdek,   protseduralar   va   funktsiyalarning   nomlari   berilgan.   Interfeys
qismidagi   ob'ektlarning   ko'rinishi   ularni   boshqa   modullar   va   asosiy   dastur   uchun
mavjud   qiladi.   Protseduralar   va   funksiyalar   tanasi   modulning   foydalanuvchidan
yashirilishi mumkin bo'lgan bajariladigan qismida joylashgan.
Modullar   ilovalar   kutubxonalarini   ishlab   chiqish   uchun   ajoyib   vosita   va   modulli
dasturlash   uchun   kuchli   vositadir.   Modullarning   muhim   xususiyati   shundaki,
kompilyator   o'z   dastur   kodini   alohida   xotira   segmentiga   joylashtiradi.   Segment
uzunligi   64   KB   dan   oshmasligi   kerak,   lekin   bir   vaqtning   o'zida   ishlatiladigan
modullar   soni   faqat   mavjud   xotira   bilan   cheklangan,   bu   sizga   katta   dasturlarni
yaratishga imkon beradi.
Modul   tushunchasi .   Modul   -   bu   boshqa   dasturlarda   foydalanish   uchun
mo'ljallangan,   manba   kodi   bilan   alohida   fayl   sifatida   yaratilgan,   funktsional
ravishda   tugallangan   dastur   fragmenti.   Modullar   murakkab   vazifalarni   kichikroq
qismlarga ajratish imkonini beradi.
Modul ko'p qiymatli tushunchadir.   Quyidagi ta'riflar mumkin: 
1)   boshqa   modullarni   ulashi   va   boshqa   modullar   tomonidan   ishlatilishi
mumkin bo'lgan protseduralar kutubxonasi;  
2) diskdagi fayl;  
3) kompilyatsiya birligi;  
4) ishlab chiqish birligi.
Modullarga   nisbatan   kengaytiriladigan   dasturlashning   asosiy
talablari: yaratilgan va tuzatilgan modul endi o'zgarmaydi.
Modulli dasturlash. Modulli dasturlash   - bu dasturni tuzilishi  va xatti-
harakati ma'lum qoidalarga bo'ysunadigan kichik mustaqil bloklar (modullar)
to'plami sifatida tashkil etishdir.  
Modulli dasturlashning asosiy tushunchalari:
-har bir modul bitta kirish va chiqish nuqtasiga ega;
- modulning o'lchamini iloji bo'lsa, minimallashtirish kerak;
- butun tizim modullardan qurilgan; - Har bir modul boshqa modullar qanday amalga oshirilishidan mustaqil.
Modulli dasturlashning asosiy tamoyili “bo‘l va zabt et”.
  Modulli   dasturlashdan   foydalanish   dasturni   sinab   ko'rish   va   xatolarni
topishni   osonlashtiradi.   Uskunaga   bog'liq   bo'lgan   kichik   vazifalarni   boshqa
kichik   vazifalardan   qat'iy   ravishda   ajratish   mumkin,   bu   esa   yaratilgan
dasturlarning ko'chmaligini yaxshilaydi.
Dasturlashda   “modul”   atamasi   dasturlarni   yaratishda   modul
tamoyillarining joriy etilishi munosabati bilan ishlatila boshlandi.   70-yillarda
modul   deganda   ma'lum   qoidalarga   muvofiq   yozilgan   har   qanday   protsedura
yoki   funksiya   tushunilgan.   Masalan:   "Modul   oddiy,   yopiq   (mustaqil),
ko'rinadigan (50 dan 100 qatorgacha), faqat bitta vazifa funktsiyasini amalga
oshiradigan, bitta kirish va bitta chiqish nuqtasiga ega bo'lishi kerak."
Parnas   birinchi   bo'lib   dastur   modulining   asosiy   xususiyatlarini   ko'proq
yoki   kamroq   aniq   shakllantirdi:   "Bir   modulni   yozish   uchun
boshqasining   matni   haqida   minimal   bilim   etarli   bo'lishi   kerak."   Shunday
qilib,   Parnas   dasturlashda   birinchi   bo'lib   axborotni   yashirish   tushunchasini
ilgari   surdi.   Biroq,   1970-yillarning   tillarida   mavjud   bo'lgan   yagona   sintaktik
konstruktsiyalar,   masalan,   protsedura   va   funktsiya,   ishonchli   ma'lumotlarni
yashirishni   ta'minlay   olmadi,   chunki   ular   global   o'zgaruvchilar   ta'siriga
duchor   bo'lib,   ularning   xatti-harakatlari   murakkab   dasturlarda   bo'lishi
mumkin.   bashorat   qilish   qiyin.   Bu   muammoni   faqat   global   o'zgaruvchilar
ta'sir   qilmaydigan   yangi   sintaktik   konstruktsiyani   ishlab   chiqish   orqali   hal
qilish mumkin edi.   Bunday dizayn yaratilgan va modul deb nomlangan.
Kompleksdagi   modullar   soni   mustaqil   kichik   vazifalarga   o'rnatilgan
topshiriqning parchalanishi  bilan aniqlanishi  kerak.   Haddan tashqari holatda,
moduldan faqat bitta protsedurani qo'shish uchun foydalanish mumkin, agar u
amalga   oshiradigan   mahalliy   harakat   har   qanday   o'zgarishlar   ostida
dasturning boshqa qismlari ta'siridan mustaqil bo'lishi kafolatlangan bo'lsa.
Birinchi   marta   modulning   ixtisoslashtirilgan   sintaktik   konstruktsiyasi
1975   yilda   N.Virt   tomonidan   taklif   qilingan   va   uning   yangi   tili   Modulaga kiritilgan.   Modullar   mexanizmi   joriy   etilganda   tilning   xossalari   qanchalik
kuchli o‘zgarishini  N.Virtning keyingi  Modula-2 tili haqida aytgan quyidagi
fikri   tasdiqlaydi:   “Modullar   Modula-2   tilini   ajratib   turuvchi   eng   muhim
xususiyatdir. O'zidan oldingi Paskal tilidan 2 ta til."
O'zining   tashkil   etilishi   va   dasturda   qo'llanish   xarakteriga   ko'ra   Paskal
modullari   Ada   dasturlash   tilining   paketli   modullariga   (PACKAGE)
yaqin.   Ularda,   shuningdek,   Ada   paketlarida   ba'zi   "ko'rinadigan"   interfeys
qismi   aniq   ajratilgan   bo'lib,   ularda   global   tiplar,   konstantalar,
o'zgaruvchilarning   tavsiflari   jamlangan,   shuningdek,   protseduralar   va
funktsiyalarning nomlari berilgan.   Interfeys qismidagi ob'ektlarning ko'rinishi
ularni   boshqa   modullar   va   asosiy   dastur   uchun   mavjud   qiladi.   Protseduralar
va   funksiyalar   tanasi   modulning   foydalanuvchidan   yashirilishi   mumkin
bo'lgan bajariladigan qismida joylashgan.
Delphi dastur modulining umumiy tuzilishi:
Modul sarlavhasi birligi<modul nomi>;
Kompilyator direktivalari {$<direktivalar>}
interfeys qismi
Modullarni ulashda<name>, ..., <name> ishlatiladi;
Konstantalar const... ;
Ma'lumotlar turlari turi... ;
o'zgaruvchilar var... ;
Protsedura sarlavhalari protsedurasi<nom> (<parametrlar>);
Funksiya sarlavhalari funksiyasi<nom> (<parametrlar>): <turi>;
Amalga oshirish qismi Modullarni ulashda<name>, ..., <name> ishlatiladi;
Konstantalar const... ;
Ma'lumotlar turlari turi... ;
o'zgaruvchilar var... ;
Protseduralarni amalga oshirish<nom>;   boshlash... tugash;
Funktsiyani amalga oshirish funktsiyasi<nom>;   boshlash... tugash;
Initializatsiya kodini ishga tushirish<statements>
yakunlash<statements> tugatish kodi
oxiri .
Modul   nomi   birlik   so'zidan   keyin   yoziladi.   U   modulning   manba   kodini   o'z
ichiga   olgan   fayl   nomiga   mos   kelishi   kerak.   Modul   sarlavhasi   fayl   diskda
saqlanganida   avtomatik   ravishda   yaratiladi,   shuning   uchun   uni   qo'lda
o'zgartirmaslik kerak.   Modulga boshqa  nom berish uchun uni  diskda boshqa
nom ostida saqlash kifoya.
Interfeys   -   asosiy   dastur   va   boshqa   modullarda   foydalanish   uchun   mavjud
bo'lgan global ma'lumotlar, protseduralar va funktsiyalar.
Amalga   oshirish   -   global   protseduralar   va   funktsiyalarning   dastur   kodi   va
asosiy dastur va boshqa modullarda mavjud bo'lmagan mahalliy ma'lumotlar,
protseduralar va funktsiyalarni tavsiflaydi.
Boshlash   bloki   ixtiyoriy.   U   operatorlardan   iborat   va   asosiy   dastur
boshlanishidan   oldin   avtomatik   ravishda   bajariladi.   Dasturga   ulangan
modullarni   ishga   tushirish   bloklari   foydalanish   bo'limida   aytib   o'tilgan
tartibda bajariladi.
Yakuniylashtirish   bloki   ham   ixtiyoriydir.   U   bayonotlardan   iborat   bo'lib,
asosiy dastur tugagandan so'ng darhol avtomatik ravishda bajariladi.   Dasturga ulangan   modullarning   tugallanish   bloklari   foydalanish   bo'limida   modullarni
ulashning teskari tartibida bajariladi.
Barcha   standart   Delphi   modullarini   ikki   guruhga   bo'lish   mumkin:   tizim
modullari va vizual komponent modullari.
Tizim   modullari   orasida   System   ,   SysUtils   ,   ShareMem   ,   Math   .   Ular
dasturlarda,   konstantalarda,   o'zgaruvchilarda,   protseduralarda   va
funktsiyalarda   eng   ko'p   ishlatiladigan   ma'lumotlar   turlarini   o'z   ichiga
oladi.   Tizim   moduli   Delphi   muhitining   yuragi;   undagi   kichik   dasturlar
tizimning   barcha   boshqa   modullarining   ishlashini   ta'minlaydi.   Tizim   moduli
avtomatik ravishda har bir dasturga kiritiladi  va   uses   bayonotida ko'rsatilishi
shart emas.
Vizual   komponent   modullari   (   VCL   -   Visual   Component   Library)   to'liq
xususiyatli   GUI   ilovalarini   vizual   ishlab   chiqish   uchun   ishlatiladi.   Ushbu
modullar   yuqori   darajadagi   ob'ektga   yo'naltirilgan   kutubxona   bo'lib,
foydalanuvchi   interfeysining   barcha   turlarini   o'z   ichiga   oladi:   tugmalar,
teglar,   menyular,   panellar   va   boshqalar.   +   ma'lumotlar   bazalariga   kirish
vositalari.   Komponentlarni formaga joylashtirishda ushbu modullar avtomatik
ravishda ulanadi.
Dasturchiga assembler tilida yoki C tilida yozilgan alohida kompilyatsiya
qilingan   protseduralar   va   funksiyalarni   dastur   yoki   modulga   bog'lash
imkoniyati   beriladi.Buning   uchun   $LINK   kompilyator   direktivasi
va   tashqi   zahira   so'zidan   foydalaning   .   {$LINK   <filename>}   direktivasi
bog'lanishi kerak bo'lgan obyekt modulini belgilaydi va tashqi kompilyatorga
quyi dastur tashqi ekanligini bildiradi.
Faraz   qilaylik,   Min   va   Max   funksiyalari   assemblerda   yozilgan   va
kompilyatsiya qilingan, ularning obyekt kodi MINMAX.OBJ faylida.   Min va
Max funksiyalarini Delphi dasturiga ulash quyidagicha ko‘rinadi:
funktsiya Min(X, Y: Integer): Integer;   tashqi;
funksiya Max(X, Y: Integer): Integer;   tashqi; {$LINKMINMAX.OBJ}
Modullarda tashqi tartiblar amalga oshirish bo'limiga kiritilgan.
Turbo   Pascal   tizimida   juda   ko‘p   maxsus   tayyor   protsedura   va   funksiyalar
mavjudki,   ularning   har   qaysisi   o‘z   vazifasiga   ega   bo‘lib.   unga   biblioteka
modullari   deyiladi.   Har   bir   biblioteka   funksiya   va   protseduralardan   tashkil
topgan bo‘lib. ma’lum bir turdagi masalani yechishga moljallangan. Modul deb
protsedura   va   funksiyaning   alohida   kompilyatsiya   qilinib,   maxsus   .tpu
kengaytmali   fayl   shaklida   ifodalangan   dasturiga   aytiladi.   Moduldan   ixtiyoriy
dastur   ichida   foydalanish   mumkin.   Moduldan   foydalanish,   ya’ni,   uni
aktivlashtirish uchun dasturning bosh qismiga quyidagilarni keltirish zarur: 
Uses <Modul 1 nomi, modul 2 nomi, …….., modul n nomi>;
Misol: 
Program SS; 
Uses Crt,Graph; 
Turbo   Pascal   tizimida   har   bir   foydalanuvchi   o‘z   modulini   yaratishi   uchun
yaratiladigan modul tuzilmasini quyidagicha tashkil qilishi zarur. 
Unit <modul nomi>;
Interface 
………………
{Interfeys qism— ochiq (yozuvlar) qismi} 
Implementation 
…………………
{Yopiq (yozuvlar) qismi} 
Begin 
…………………..
{Modulning asosiy qismi} 
End. 
Bu yerda 
Unit — modulning sarlavhasi;  Interface   —   modulning   interfeysi,   ya’ni,   dastur   va   boshqa   modullar   uchun   ochiq
(ko‘rinarli)   qismining   boshlanishinibildiradi.   Bu   qismda   o‘zgarmaslar.   kattaliklar
tiplari, protsedura va funksiyalar aniqlanib ko‘rsatilgan boladi. lekin ulaming butun
ko‘rinishi keyingi yopiq qismda beriladi. 
Implementation   —   modulning   dastur   va   modullar   uchun   yopiq,   ya’ni
ko‘rinmaydigan   qismining   boshlanishini   bildiradi.   Bu   yerda   interfeys   qismida
aniqlangan   protsedura   va   funksiyalar   yana   bir   marta   ko‘   rsatilishi   shart   (ularning
sarlavhalari bir xil bolishi kerak).
Initsializatsiya   qismi   Begin   yozuvidan   keyin   boshlanadi,   agar   bu   qism
mavjud   bolmasa   Begin   ham   bolmaydi.   Bu   qismda   boshqaruvni   asosiy
programmaga   o‘tkazishga   qadar   bajarilishi   kerak   bolgan   operatorlar   ro‘yxati
joylashadi.   Misol   tariqasida   ikki   sonning   eng   katta   va   eng   kichigini   topish
modulini   yaratish   dasturini   qaraymiz.   Quyidagi   dastur   Min(x,y)   va   Max(x,y)
funksiyalarini o‘z ichiga olgan.
Unit Study;
Interface {Interfeys qism}
Function Min(x,y:Integer):Integer;
Function Max(x,y: Integer): Integer;
Implementation {Yopiq qism}
Function Min(x,y: Integer): Integer;
Begin
If x < = \ Then Min:=x Else Min:=y;
End;
Function Max(x,y: Integer): Integer;
Begin
If x > = \ Then M ax:=x Else Max:=y;
End;
{Initsializatsiya qismi mavjud emas}
End. Bu   modul   kompilatsiya   qilinib   Study.tpu   fayl   nomiga   ega   bolishi   kerak.
Undan dasturda foydalanish uchun dastur bosh qismida Uses Study qatorini yozish
kerak bo‘ladi. 
Turbo Pascal tizimida quyidagi biblioteka modullari mavjud: 
System   —   standart   protsedura   va   funksiyalami   o‘z   ichiga   olgan   bo‘lib.   bu
modul avtomatik ravishda aktivlashtirilgan bo‘ladi. 
Dos — Ms Dos operatsion tizim imkoniyatlaridan foyda-lanuvchi protsedura
va funksiyalarni o‘z ichiga olgan. 
Crt   —   monitor   ekrani   va   klaviatura   bilan   ishlash   imkoniyatini   yaratuvchi
protseduralar to‘plamini o‘z ichiga olgan. 
Graph   —   har   xil   m   onitor   videoadapterlarini   qollagan   holda   kompyuter
grafik imkoniyatlaridan foydalanuvchi ko‘plab protseduralar to‘plamini o‘z ichiga
oladi. 
Printer — printer bilan ishlovchi kichik modul. Xulosa   qilib   aytadigan   bo’lsak   biz   Obyektga   yo’naltirilgan   dasturlash
mavzusini   o’rganish   davomida   muhim   eng   asosiy   ma’lumotlarga   ega
bo’ldik.Obyektga   yo’naltirilgan   dasturlashning   tarixiga   nazar   soladigan   bo’lsak
1970 yillar oxirida ko plab loyihalar S strukturaviy dasturlash tili yordamida qaytaʻ
ishlash   uchun   oson   bo lgan   eng   yuqori   hajmga   erishgan.   Endi   bularga   yangicha
ʻ
munosabat   talab   qilina   boshlandi   va   ushbu   muammoni   hal   etish   uchun   dastur
tuzuvchiga   katta   hajmdagi   dasturlar   bilan   ishlash   imkonini   beruvchi   ob ektga	
ʼ
yo naltirilgan dasturlash (OYD) yaratildi. Hamonki, o sha vaqtda S eng ommabop	
ʻ ʻ
til   bo lishiga   qaramasdan   OYD   ni   qo llab-quvvatlamadi,   uning   ob ektga	
ʻ ʻ ʼ
yo naltirilgan (keyinchalik C++ deb atalgan)  versiyasini  yaratish zarurati  tug ildi.	
ʻ ʻ
Bu   versiya   o sha   Bell   Laboratories   kompaniyasining   xodimi   Brian   Straustrup	
ʻ
tomonidan   1979   yil   boshida   ishlab   chiqilgan.   Dastlab   yangi   til   „C   sinflar   bilan“
degan nom oldi, lekin 1983 yilda C++ deb qayta nomlangan. U o zida C tilini to la	
ʻ ʻ
qamrab   oladi   (ya ni,   C   C++   uchun   poydevor   bo lib   xizmat   qiladi)   va   ob ektga	
ʼ ʻ ʼ
yo naltirilgan   dasturlashni   qo llab-quvvatlash   uchun   mo ljallangan   yangi	
ʻ ʻ ʻ
imkoniyatlarni   namoyon   qiladi.   Aslida   C++   C   tilining   ob ektga   yo naltirilgan	
ʼ ʻ
versiyasi  hisoblanadi  shuning uchun C ni biluvchi dastur  tuzuvchi  uchun C++ da
dasturlashga   o tishda   yangi   tilni   emas,   balki   faqatgina   OYD   ning   yangi	
ʻ
konsepsiyasini o rganish kifoya qiladi. C++ tili uzoq vaqt mobaynida sifatga etibor
ʻ
bermay,   faqat   miqdor   oshirish,   hajmni   kengaytirish   jihatidan   rivojlandi   va   soya
ostida qolib ketdi. 1990 yillar boshida u ommaviy ravishda qo llanila boshlandi va	
ʻ
katta   yutuqlarga   erishdi,   o n   yillikning   oxirida   esa   dasturiy   ta minotni   qayta	
ʻ ʼ
ishlashda   eng   keng   foydalaniladigan   va   bugungi   kunda   ham   peshqadamlik
qilayotgan   tilga   aylandi.   Shuni   anglash   muhimki,   C++   ni   ishlab   chiqilishi   yangi
dasturlash   tilini   yaratishga   intilish   hisoblanmaydi,   balki   faqatgina   etarli   darajada
muvaffaqiyatli   tilni   takomillashtirayapti   va   to ldirayapti.   Bunday   qarash,   hozirda	
ʻ
ham kompyuter tillarini rivojlantirishning yangi yo nalishlarida qo llanilayapti.	
ʻ ʻ Foydalanilgan adabiyotlar va saytlar.
1.Obyektga mo’ljallangan dasturlash (SH.A.Nazirov, R.V.Qobulov)
2.Dasturlash texnologiyasi (SH.A.Nazirov, G.S.Ivanova, S.M.Gaynazarov)
3.   https://telegra.ph/Obyektga-mojalangan-dasturlash-tarixi-08-23
4.   https://codelabs.rocks/blog/detailed-guide-for-modular-programming-
concept
5.   https://www.geeksforgeeks.org/modular-approach-in-programming

Mavzu:Multimodulli programmalar yaratish usullari. Reja: 1. Kirish 2. Dasturlash tarixining bosqichma-bossqich rivojlanishi. 3. Multimodulli dasturlashning asosiy tushunchalari. 4. Multimodulli dasturlash haqida. 5. Xulosa.

Kirish Modulli dasturlashda, masalan, Modula2 kabi tilda prosedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko’rildi. Modulli dasturlash dasturni bir necha tarkibiy bo’laklarga, yoki, boshqacha qilib aytganda, modullarga bo’lib tashdlaydi. Agar prosedurali dasturlash ma’lumotlar va prosedsralarni bo’lib tashlasa, modulli dasturlash, undan farqli o’laroq, ularni birlashtiradi. Modul ma’lumotlarning o’zidan hamda ma’lumotlarga ishlov beradigan proseduralardan iborat. Dasturning boshqa qismlariga moduldan foydalanish kerak bo’lib qolsa, ular modul interfeysiga murojaat etib qo’yaqoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi. Biroq modulli dasturlash ham kamchiliklardan holi emas. Modullar kengaymas bo’ladi, bu degani kodga bevosita kirishsiz hamda uni to’g’ridan- to’g’ri o’zgartirmay turib modulni qadamma-qadam uzgartirish mumkin emas. Bundan tashqari, bitta modulni ishlab chiqishda, uning funksiyalarini boshqasiga o’tkazmay (delegat qilmay) turib boshqasidan foydalanib bo’lmaydi. Yana garchi modulda turni belgilab bo’lsa-da, bir modul boshqasida belgilangan turdan foydalana olmaydi. Modulli va prosedurali dasturlash tillarida tuzilmalashtirilgan va tuzilmalashtirilmagan ma’lumotlar o’z «tur»iga ega. Biroq turni kengaytirish usuli, agar «agregatlash» deb ataluvchi usul yordamida boshqa turlarni yaratishni hisobga olmaganda, mavjud emas. Va, nihoyat, modulli dasturlash — bu yana proseduraga mo’ljallangan gibridli sxema bo’lib, unga amal qilishda dastur bir necha proseduralarga bo’linadi. Biroq endilikda proseduralar ishlov berilmagan ma’lumotlar ustida amallarni bajarmaydi, balki modullarni boshqaradi. Obyektga mo’ljallangan dasturlash (OMD) modulli dasturlashdan keyingi mantiqiy pog’onani egallaydi, u modulga nasldan-naslga o’tishni va polimorfizmni qo’shadi. OMD dan foydalanr ekan, dasturchi dasturni bir qator oliy darajali obyektlarga bo’lish yo’li bilan tizimlashtiradi. bo’lib xizmat qiladi.

Dasturlash — predmet va texnikaning nisbatan yosh va tez г ivojlanayotgan sohasi. Mavjud dasturiy va texnik vositalarni real ishlab chiqish va tarmoqlashtirishni olib borish tajribasi doimo qayta izlanishni talab etadi. Natijada yangi usullar, uslublar va texnologiyalar paydo bo‘ladi, ular o‘z navbatida, dasturiy ta’minlashni ishlab chiqishning yanada zamonaviy vositalari uchun asos bo'lib xizmat qiladi. Yangi texnologiyalarni yaratish jarayonlarini tekshirish va ularning asosiy yo‘nalishlarini aniqlash, bu texnologiyalarni dasturlashning rivojlanish darajasi hamda dasturchilar ixtiyoridagi dasturiy va apparat vositalarining xususiyatlari bilan solishtirish maqsadga muvofiqdir. XX asrning 60-yillari boshida «dasturlash inqirozi» yuz berdi. U operatsion tizimlar kabi murakkab dasturiy ta’minotni ishlab chiqishga uringan firmalar loyihalarni tugallashning barcha muddatlaridan kechikkan edi. Loyiha joriy etilishidan oldinroq eskirib qolar, uning qiymati ortib borar va, natijada, ko‘pgina loyihalar shu tariqa tugallanmay qolib ketar edi. Ikkinchi bosqich dasturlashga tarkibiy yondashish (XX asrning 60—70 - yillari). Dasturlashga tarkibiy yondashish dasturiy ta’minlashni ishlab chiqishning barcha bosqichlarining bajarilishini qamrab oluvchi tavsiya etilayotgan texnologik usullar majmuasidan iborat. Tarkibiy yondashish asosida uncha katta bo‘lmagan (40—50 operatorgacha) alohida kichik dasturlar ko‘rinishida keyingi amalga oshirish maqsadida murakkab tizimlar dekompozitsiyasi (qismlarga bo'laklash) yotadi. Dekompozitsiya boshqa tamoyillari (obyektli, mantiqiy va h.) ning paydo bo‘lishidan keyin ushbu usul protsedurali dekompozitsiya deb ataladi. Ilgariroq foydalanilgan dekompozitsiyaga protsedurali yondashishdan farqli ravishda tarkibiy yondashish eng sodda tuzilishdagi kichik masalalar iyerarxiyasi ko‘rinishida masalaning taqdim etilishini talab qilar edi. Loyihalashtirish, shu tariqa «quyidan yuqoriga» amalga oshirilib, kichik dasturlar interfeyslarining ishlab chiqilishini ta’m inlagan holda umumiy g‘oyaning amalga oshirilishini ko‘zda tutgan edi. Bir vaqtning o‘zida algoritmlar konstruksiyasiga cheklashlar kiritilar, ular ta’rifning formal modellari, shuningdek, algoritmlarni loyihalashtirishning maxsus usuli—qadama - qadam detallashtirish usuli tavsiya

etilgan edi. Tarkibiy dasturlash tamoyillarini ta’minlash dasturlashning protsedurali tillari asosiga kiritilgan. Qoidaga ko‘ra, ular boshqaruvni uzatishning asosiy «tarkibiy» operatorlarini, kichik dasturlar kiritilishi, lokallashtirish va ma’lum otlar sohasining «ko‘rinishliligi»ning chegaralanishini ta’minlar edi. Bu guruhning eng ma’lum tillaridan PL/1, ALGOL-68, Pascal, С ni misol qilib ko‘rsatish mumkin. Tarkibiy dasturlash bilan bir vaqtda boshqa konsepsiyalarga asoslangan ko‘p miqdordagi tillar paydo boldi, ammo ularning ko‘pchiligi raqobatga bardosh bera olmadi. Qaysidir tillar unutildi, boshqa tillarning g‘oyalaridan, rivojlanayotgan tillarning keyingi versiyalaridan keyinchalik foydalanildi.Ishlab chiqilayotgan dasturiy ta’minot murakkabligi va o‘lchamlarining keyingi o'sishi ma’lum otlar tuzilishining rivojlanishini talab qildi. Buning oqibatida tillarda ma’lum otlarning foydalanish turlarini belgilash imkoniyati paydo bo‘ldi. Ayni paytda global ma’lum otlar bilan ishlashda kelib chiqadigan xatolar miqdorini kam aytirish uchun dasturning global ma’lumotlaridan foydalanishni chegaralashga urinish kuchaydi. Natijada modulli dasturlash texnologiyasi paydo bo‘lib, rivojlana boshladi. Modulli dasturlashdan foydalanish dasturiy ta’minotning bir qancha dasturchilar tomonidan ishlab chiqilishini ancha osonlashtirdi. Endilikda ulardan har biri modullar o’zaro ta’sirini maxsus aytib o‘tilgan modullararo interfeyslar orqali ta’minlab, o‘z modullarini mustaqil ishlab chiqishi mumkin edi. Bundan tashqari, modullardan keyinchalik o‘zgarishlarsiz boshqa ishlab chiqishlarda foydalanish mumkin bo'lgan. Bu dasturchilarning mehnat unumdorligini oshiradi. Amaliyot shuni ko‘rsatdiki, modulli dasturlash bilan birgalikda tarkibiy yondashish o‘lchami 100 000 operatordan oshmagan yetarli darajada ishonchli dasturlarni yaratish imkonini beradi. Kichik dasturni chaqirishda interfeysdagi xato faqat dastur bajarilgandagina aniqlanishi (modullarning ajratilgan kompilyatsiyasi tufayli bu xatolarni ilgariroq aniqlashning iloji yo‘q) modulli dasturlashning tor joyi hisoblanadi. Odatda dastur o‘lchami kattalashganda modullararo interfeyslarning murakkabligi ortadi va qaysidir daqiqadan boshlab dastur alohida qismlarining o‘zaro ta’sir ko‘rsatishini oldindan bilishning hech ham iloji yo‘q.

Katta ko‘lamdagi dasturiy ta’minotni ishlab chiqish uchun obyektli yondashishdan foydalanish taklif etildi. Uchinchi bosqich — dasturlashga obyektli yondashuv (XX asrning 80-yillari o‘rtasidan 90-yillar oxirigacha). Obyektga mo‘ljallangan dasturlash har biri muayyan turdagi (klassdagi) nusxa bo‘lgan obyektlar majmuasi ko‘rinishida dasturning taqdim etilishiga asoslangan murakkab dasturiy ta’minlashni yaratish texnologiyasi sifatida aniqlanadi, bunda klasslar xususiyatlarni meros qilib olish bilan birga iyerarxiyani hosil qiladi. Bunday tizimdagi dasturiy obyektlarning o‘zaro harakati xabarlarni uzatish yo‘li orqali amalga oshiriladi (1.6-rasm). Dasturning obyektli tuzilishidan ilk bor XX asrning 60-yillaridayoq paydo bo‘lgan murakkab tizimlarni imitatsiyali modellashtirish tili - Simula da foydalanilgan. Modellashtirish tillari uchun tabiiy hisoblangan dasturni taqdim etish usuli modellashtirishning boshqa ixtisoslashtirilgan tili — Smalltalk tilida rivojlanishni davom ettirgan (XX asrning 70-yillari), keyin esa, Pascal, C++, Modula, Java kabi dasturlashning universal tillariga ko‘chirilgan. Modulli dasturlashga nisbatan obyektga mo'ljallangan dasturlashning asosiy yutug‘i dasturiy ta’minotni ishlab chiqishni ancha yengillashtiruvchi dasturiy ta’minotning «yanada tabiiyroq» bo'laklanishi hisoblanadi. Bu ma’lumotlarni yanada to‘liqroq lokallashtirish va ularning ishlov berish kichik dasturlari bilan integratsiyalashishiga olib keladi. 0 ‘z navbatida, mazkur holat dasturning alohida qismlari (obyektlar)ning mustaqil ishlab chiqilishini olib borish imkonini beradi. Bundan tashqari, obyektli yondashish merosiylik, polimorfizm, kompozitsiyalash, to‘ldirish mexanizmlariga asoslangan dasturlarni tashkil etishning yangi usullarini taklif etadi. Bu mexanizmlar nisbatan oddiy obyektlardan murakkab obyektlarni qurish imkoniyatini beradi. Shu tariqa vizual dasturlashni ta’minlovchi muhitlar yaratildi. Masalan, Delphi, C++, Builder, Visual C++ va h.k. Vizual muhitdan foydalanganda dasturchida maxsus kutubxona komponentlarini qo‘shish va sozlash vizual vositalarini qo‘llagan holda ba’zi qismlarni loyihalashtirish imkoniyati paydo bo‘ladi. Masalan, bo‘lajak mahsulot interfeyslari muvofiq kodlar kiritilgan