Toshkent axborot texnologiyalari
universiteti Farg’ona filiali
TT va KT fakulteti
651-19 guruh talabasi
Mashrabov Mashhurbekning
Malumotlar tuzilmasi va Algoritmlari fanidan
Mustaqil ishi
2020-2021
Mavzu: Ma'lumotlar tuzilmalarida ishlash.
Reja:
1.Ma’lumotlar tuzilmasi va algoritmlar kirish ma’lumotlari.
2.Malumotlar tuzilmasi haqida asosiy tushunchalar.
3.Ma’lumot va uning xotirada tasvirlanishi.
4.Ma’lumotlarni saqlash.
5.Ma’lumotlar turi, ma’lumotlarning abstrakt (mavhum) turlari va
ma’lumotlar tuzilmasi.
6.Xotirani adreslash.
7.Ma’lumotlar va algoritmlarni strukturalashtirish.
Ma’lumot - bu biror bir ob’ekt, jarayon, hodisa yoki voqelikni ifodalab (tasniflab) beruvchi belgi yoki belgilar majmuasidir.
Berilgan ma’lumot (belgi)lar qanday qiymat qabul qilishiga qarab ma’lumotlarni bir qancha turlarga ajratish mumkin.
Ma’lumotlar tuzilmasi va algoritmlar dastur tuzish uchun zarur bo’lgan tushunchalar sifatida qaraladi. O’rnatilgan ma’lumotlar tuzilmasi ikkilik miqdor (kodlangan ma’lumot)lar saqlanadigan registrlar va xotira so’zlarini ifodalab beradi. Qurilmani loyihalash uchun ishlab chiqilgan algoritm – bu elektron mantiqiy qurilmalarda qat’iy amalga oshiriladigan qoidalar bo’lib, xotirada saqlangan ma’lumot bajarilishi lozim bo’lgan komanda sifatida bo’ladi.
Dasturlash – bu nafaqat aqliy faoliyatni avtomatlashtirish, balki, ilmiy tadqiqot predmeti hisoblanadi.
Qandaydir amaliy masalani yechish uchun dastur tuzish jarayoni quyidagi bir nechta bosqichlardan tashkil topgan:
1. Masalaning qo’yilishi (qo’yilgan masalaga texnik topshiriqni ishlab chiqish);
2. Rasmiylashtirish – formallashtirish (masalaning matematik qo’yilishi);
3. Masalani yechish usulini tanlash (yoki ishlab chiqish);
4. Algoritmni ishlab chiqish (algoritmlash);
5. Dastur tuzish (dasturlash);
6. Dasturni testlash va otladka qilish;
7. Natijalarni hisoblash va qayta ishlash hamda dasturni hujjatlashtirish (foydalanuvchi yo’riqnomasini ishlab chiqish).
Dasturlashga endi kirib keldingiz va sizni "10 yildan keyin qaysi dasturlash tili eng topda bo'ladi?", "Agar falon dasturlash tilini o'rgansam keyin ish topa olamanmi?", "Hozir mana bu dasturlash tilini o'rganishni ko'pchilik maslahat beryapti ekan" kabi o'y va savollar qiynayotgan va dasturlashni o'rganishni nimadan boshlashni bilmayotgan bo'lsangiz, vaqt yo'qotmang istalgan dasturlash tilini tanlangda ishni algoritmlar va ma'lumotlar tuzilmalarini o'rganishdan boshlang.
Dasturlash bu 80% o'ylashdan va 20% kod yozishdan iborat va eslab qoling har qanday dasturlash tili bu shunchaki vosita. Eng muhimi bu siz, uni ishlatayotgan dasturchi. Agar siz o'zingizga mustahkam poydevor quya olsangiz, uning ustiga istalgan ko'rinishdagi va balandlikdagi binoni qura olasiz. Dasturlashda ham huddi shunday agar siz biror dasturlash tilida dasturlash asosini chuqur tushuna olsangiz boshqa tilni bir necha hafta, balki kunlarda o'rganish sizga qiyinchilik tug'dirmaydi. Menimcha, aynan algoritmlar va ma'lumotlar tuzilmalari - bu dasturlashning asosi.
2. Algoritmik masalalar mantiqiy fikrlashni oshiradi.
Ba'zi dasturlash masalalari ko'rinishidan juda oddiy tuyuladi, lekin ularni yechish amalda juda qiyin bo'lib chiqishi mumkin. Bunday masalarni ishlash orqali, siz o'zingizda muammoga noodatiy va optimal yechim topish ko'nikmasini shakllantirasiz. Bundan tashqari siz koddagi mantiqiy xatoni oson topishni o'rganasiz. Bu narsa dasturlashda Debugging deb ataladi. Bu narsa kelajakda nafaqat o'zingiz yozgan kodni, balki boshqalar yozgan kodlarni ham o'qib tushuna olishda va undagi kamchilik va xatolarni topishda katta yordam beradi.
3. Frameworklar asosini tushuna olish
Albatta, haqiqiy loyihalar ustida ishlayotgan paytda hamma narsa noldan yozib chiqilmaydi. Chunki bu ortiqcha xarajat va vaqt sarflash bo'ladi. Buning ustiga siz yozgan kodning ishonchliligi va to'g'riligi yetarlicha sinovdan o'tmagan bo'ladi. Shuning uchun bunday loyihalarda, odatda, tayyor frameworklar va kutubxonalardan foydalaniladi. Lekin, ular ichi qanday tuzilganini his qila olish ham muhim, chunki kelajakda siz ham shunday tayyor komponentalar yaratishda ishtirok etishingiz mumkin, bunda siz yozadigan metod, kutubxona yoki frameworklar talabga javob berishi juda muhim.
4. Noodatiy masalalar yechimini topa olish
Yuqorida aytib o'tilgan frameworklar borligi yaxshi albatta, ammo shunday paytlar bo'lishi mumkinki siz duch kelgan muammo yoki masalaga tayyor yechim bo'lmasligi mumkin. Bunda barchasini o'zingiz noldan qilib chiqishga majbur bo'lasiz. Shu joyda sizning algoritmlar va ma'lumotlar tuzilmalari haqidagi bilimlaringiz juda ham asqotadi.
5. Algoritmlar - dasturlash kelajagi.
Menimcha hozirda Sun'iy Intellekt (Artificial Intelligence) haqida eshitmagan odam juda kam, ayniqsa dasturchilar orasida. Agar siz ham bu sohaga qiziqib qolgan yoki kelajakda Sun'iy intellektning biror yo'nalishida ish qilmoqchi bo'lsangiz, demak siz shubhasiz to'g'ri yo'ldasiz. Sun'iy intellekt va Machine Learning - bu dasturlash kelajagi. Hozirda eng yirik IT kompaniyalari bo'lgan Google, Facebook, Amazon, Yandex o'z e'tiborini shu sohaga qaratgan va uning rivoji uchun milliardlab dollar pul sarflashmoqda.
Lekin, tabiiyki bu sohalarga kirib borish va ularni tushunish oson bo'lmaydi. Chunki Sun'iy intellekt murakkab algoritmlar ustiga qurilgan. Shunday ekan, avval oson algoritmlarni tushunmasdan turib, bunday murakkab sohalarga o'tish mantiqsizlik bo'ladi menimcha.
6. Dasturlash olimpiadalari - bu manfaatli hobby.
Dasturlash olimpiadalariga qatnashib turish vaqti kelib moddiy tomondan yaxshigina manfaatli hobbyga aylanishi mumkin. Bor yog'i 4-5 soat davom etadigan contestlarda o'zingizni ko'rsatib, yaxshigina pul ishlab olishingiz mumkin. Masalan, yaqinda o'tkazilgan TUIT Open musobaqasi 3 kishidan iborat g'olib jamoasi 9 000 000 so'm (!) yutuqqa ega bo'lishdi. 6 soatda 1 ta odamga 3 mln so'm, yomon emas to'g'rimi. Yana bir misol, shu yil 18-oktabrda o'tkazilgan Codeforces dagi MailRu olimpiadasi birinchi o'rin sohibi yangi MacBook egasiga aylandi. Albatta, buning uchun yaxshigina mehnat qilish talab qilinadi.
7. Dunyo ko'rish va yangi do'stlar orttirish.
Dunyo kezish juda ham yoqimli, yana bu o'zingizning hisobingizdan bo'lmasa. Dasturlash bo'yicha musobaqa finallari turli xil rivojlangan davlatlarda o'tkaziladi. Agar siz o'z universitetingiz yoki litseyingizdan final bosqichlariga o'ta olsangiz, sizda chet davlatlarini ko'rib kelish uchun ajoyib imkoniyat paydo bo'ladi. Ko'p hollarda sizning xarajatlaringiz universitetingiz yoki mezbon tarafdan qoplanadi. Qo'shimchasiga ko'plab do'stlar va tanishlar orttirasiz va bular barining kelajakda, albatta, foydasi tegadi.
1. Ma'lumotlarning ko'p o'lchovli kontseptual namoyishi (Ko'p o'lchovli kontseptual ko'rinish). OLAP mahsulotida kategorik ma'lumotlar atributlarini o'lchov sifatida, miqdoriy ma'lumotlar atributlarini fakt sifatida ko'rib chiqadigan ko'p o'lchovli ma'lumotlarni taqdim etish modeli qo'llaniladi.
2. Shaffoflik (Shaffoflik). Ko'p o'lchovli model qanday amalga oshirilayotganligi, ma'lumotlarni saqlash va qayta ishlash uchun qanday aniq vositalardan foydalanilganligi, ma'lumotlar qanday tashkil etilganligi va qayerdan kelib chiqqanligi foydalanuvchidan yashirin bo'lishi kerak.
3. Mavjudligi (Mavjudlik). OLAP asboblari foydalanuvchiga ularning joylashuvi va saqlash uslubidan qat'i nazar ma'lumotlarga kirishni ta'minlashi kerak. Shu bilan birga, yagona, izchil va yaxlit ma'lumotlar modeli saqlanishi kerak.
4. Barqaror ishlash (Doimiy hisobot faoliyati). OLAP ishlashi ko'p o'lchovli modelning o'lchamlari sonidan va ma'lumotlar bazasi hajmidan qat'i nazar ta'minlanishi kerak.
5. Mijoz-server arxitekturasi (Mijoz-server arxitekturasi). Tarqatilgan ma'lumotlarning tezkor analitik qayta ishlashini ta'minlash uchun OLAP mahsuloti mijoz-server arxitekturasi asosida ishlashi kerak. Jismoniy jihatdan ajratilgan turli xil korporativ ma'lumotlar bazalaridan ma'lumotlarni umumlashtirish va konsolidatsiya qilish uchun vosita umumiy kontseptual ma'lumotlar sxemasini tuzishni qo'llab-quvvatlashi kerak.
6. O'lchov tengligi (Umumiy o'lchov). Ko'p o'lchovli kubdagi barcha o'lchamlar uchun bir xil funktsiyalar to'plami mavjud bo'lishi kerak. Zarur bo'lganda har qanday o'lchovga qo'shimcha xususiyatlar qo'shilishi mumkin. Ma'lumotlarning asosiy tuzilishi, hisoblash formulalari va hisobot formatlari bir o'lchov bilan bog'lanmasligi kerak.
7... Kam matritsalarni dinamik qayta ishlash (Dinamik siyrak matritsali ishlov berish). OLAP vositasi tomonidan yaratilgan o'zaro faoliyat jadvallar tez-tez siyrak bo'lganligi sababli, ular bilan eng yaxshi ishlov berish kerak. Asbob ma'lumotlar katakchalari joylashuvidan, kubdagi o'lchamlar sonidan va ma'lumotlarning siyrakligidan qat'iy nazar yuqori ishlov berish tezligini ta'minlashi kerak.
8. Ko'p o'yinchini qo'llab-quvvatlash (Ko'p foydalanuvchilarni qo'llab-quvvatlash). OLAP vositasi bir nechta foydalanuvchiga bir vaqtning o'zida bir xil ma'lumotlar bilan ishlashga imkon berishi kerak, shu bilan birga ma'lumotlar yaxlitligi va himoyasini ta'minlaydi.
9. Cheksiz o'lchovli qo'llab-quvvatlash (Cheklanmagan o'lchovli operatsiyalar). Ma'lumotlarni manipulyatsiya qilishda (tilim operatsiyalari, aylanish, konsolidatsiya, detallashtirish), formulalar yordamida tavsiflangan ko'p o'lchovli kub hujayralari orasidagi funktsional aloqalarning saqlanishi ta'minlanishi kerak. O'rnatilgan munosabatlarni o'zgartirishi foydalanuvchi tomonidan ularni qayta aniqlashga hojat qoldirmasdan tizim tomonidan mustaqil ravishda amalga oshirilishi kerak.
10. Ma'lumotlarni intuitiv ravishda manipulyatsiya qilish (Ma'lumotlarni intuitiv ravishda boshqarish). Ma'lumotlar bilan ishlashni amalga oshirish uchun foydalanuvchi interfeysi iloji boricha qulay, tabiiy va qulay bo'lishi kerak.
Hisoblash mashinalari yordamida har qanday masalani yechish ma’lumotlarni xotiraga yozish, xotiradan o’qish va uni qayta ishlashni hisobga olgan holda bajariladi.
Nazariy jihatdan ma’lumot noaniqliklarni aniqlovchi vosita sifatida qaraladi. Faraz qilaylik, biror bir tizimning N ta mumkin bo’lgan holati mavjud bo’lsin, har bir holat paydo bo’lishi mustaqil P ehtimolga ega bo’lsin. U holda bu tizimning noaniqligi quyidagi ko’rinishda aniqlanadi:
∑=(P(i)*log2 P(i))
Tizimning noaniqligini o’lchash uchun bit deb ataluvchi maxsus birlik qabul qilingan. Bit hech bo’lmaganda ikkita mumkin bo’lgan holatga bog’liq noaniqlik (yoki ma’lumot)ning o’lchovi hisoblanadi, masalan rost-yolg’on yoki bor-yo’q holatlar. Bit noaniqlik va axborotning o’lchovi sifatida qo’llaniladi, ya’ni olingan axborotlar soni axborotlarni olish natijasida yo’qotilgan noaniqliklar soniga teng.
Ma’lumotlarni saqlash
Kompyuterda eslab qoluvchi qurilmalarni asosiy uchta ko’rinishi mavjud: o’ta tezkor, tezkor va tashqi xotira. Odatda o’ta tezkor xotira registrlardan tashkil topgan bo’ladi. Registrlar ma’lumotlarni vaqtincha saqlab turish va akslantirish uchun qo’llaniladi.
Juda muhim registrlardan ba’zilari komp’yuterning markaziy protsessorida joylashgan. Markaziy protsessor arifmetik amallarning argumentlari (ya’ni operandlar) joylashadigan (vaqtincha saqlanadigan) registrlardan tashkil topgan. Registrga yuborilagan ma’lumotlarni qo’shish, ayirish, ko’paytirish va bo’lish amallar juda murakkab mantiqiy sxema orqali bajariladi. Bundan tashqari, registrlarda boshqaruv ketma-ketligini to’g’ri bajarilishini tekshirish zaruriyatidan kelib chiqqan holda alohida bitlarda tahlil qilinadi. Arifmetik amallardagi operandlar va natijalarni vaqtincha saqlashdan tashqari, registrlar dastur komandalarini va keyingi bajariladigan komandaning tartib raqami haqidagi boshqaruv ma’lumotlarini ham vaqtincha saqlash vazifasini bajaradi.
Ma’lumotlar turi, ma’lumotlarning abstrakt (mavhum) turlari va ma’lumotlar tuzilmasi
Ushbu tushunchalar, o’xshash bo’lishi mumkin, lekin ularning ma’nosi har xil hisoblanadi.
Dasturlash tillarida o’zgaruvchining ma’lumot turi, ushbu o’zgaruvchi qabul qilishi mumkin bo’lgan qiymatlar to’plamini anglatadi. Ma’lumotlar turi natural va butun sonlar, haqiqiy (o’nlik kasr ko’rinishidagi) sonlar, satrlar, belgilar va boshqalarni o’z ichiga oladi.
Ba’zi dasturlash tillarida har bir konstanta yoki o’zgaruvchilarning turini unga ta’minlangan qiymatning yozilishiga qarab kompilyator aniqlaydi. Masalan, o’nlik sonda qo’llaniladigan nuqta, haqiqiy son belgisi sifatida qabul qilinadi. Boshqa dasturlash tillarida esa, dasturchi tomonidan kirtilayotgan har bir o’zgaruvchining turi aniq ko’rsatilishi talab etiladi, va bu muhim vazifalardan biri hisoblanadi. Dastur bajarilishi davomida o’zgaruvchining qiymati bir necha marta almashishi mumkin, lekin uning turi o’zgarmasligi kerak. Bu kompilyator o’zgaruvchi ustida bajariladigan amallarni uning tavsiflanishiga mos ravishda tekshirib chiqadi. Bu tekshirish to’liq dastur matni bo’yicha amalga oshiriladi va natijada dastur bajaradigan barcha amallar aniqlab olinadi.
Dasturlash tilining maqsadiga qarab, kompilyatsiya jarayonida ma’lumotlarning turi himoyalanganlik darajasi mavjud. Masalan, Pascal dasturlash tilida ma’lumotlarning turi qat’iy himoyalangan bo’lib, dasturning sarlavha qismidayoq dasturda qo’llaniladigan barcha o’zgaruvchilar va konstantalarning turlari aniqlab berilishi talab qilinadi. C dasturlash tilida esa buning teskarisi bo’lib, ma’lumotlarning turini aniqlash dastur bajarilishi vaqtida dasturchi tomonidan aniqlanishi ham mumkin. Bu esa C dasturlash tilida ma’lumotlarning turi kuchsiz himoyalanganligini bildiradi. Shu bilan birgalikda ma’lumotlarning turi qat’iy himoyalanmagan dasturlash tillarida dasturning to’g’ri ishlashiga javobgarlik dasturchining o’ziga yuklatilgan.
Ma’lumotlarning abstrakt (mavhum) turlari – bu matematik model va shu model doirasida aniqlangan turli xil operatorlardir. Abstrakt ma’lumotlar turi bilan algoritmlarni ishlab chiqish mumkin, lekin ma’lum bir dasturlash tilida algoritmlarni qo’llash uchun ma’lumotlarning abstrakt turlarini ushbu dasturlash tiliga mos ma’lumotlar turi va operatorlar yordamida ishlab chiqiladi.
Ma’lumotlarning abstrakt turlarini tavsiflash uchun o’zida o’zgaruvchilarning aniq to’plamini, mumkin bo’lgan ma’lumotlar turini mujassamlashtirgan ma’lumotlar tuzilmasidan foydalaniladi.
Algoritmlarda qo’llaniladigan ma’lumotlar tuzilmasi juda murakkab bo’lishi mumkin. Ma’lumotlarni to’g’ri taqdim etish natijasi muvaffaqiyatli dasturlash kaliti sifatida xizmat qiladi. Ma’lumotlar tuzilmasining qurilish materiali tayanch yoki tarkibli ma’lumotlar turini saqlashga mo’ljallangan yacheykalar hisoblanadi. Ma’lumotlar tuzilmasi yacheykalar majmuasiga boshqa yacheykalar vakili (ya’ni ko’rsatkichlar) sifatida nom berish orqali ishlab chiqiladi.
Ma’lumotlar tuzilmasi klassifikatsiyasi
Fizik ma’lumotlar tuzilmasi deganda ma’lumotlarning mashina xotirasida tasvirlanishini tushinish kerak va bu tushuncha ba’zan saqlash tuzilmasi, ichki tuzilma yoki xotira tuzilmasi kabi nomlar bilan ham yuritiladi.
Ma’lumotlarning mashina xotirasida tasvirlanishini hisobga olmasdan hosil qilingan tuzilmalari abstrakt (mavhum) yoki mantiqiy tuzilma deb ataladi. Umumiy holda mantiqiy tuzilma bilan uning mos fizik tuzilmasi orasida farq mavjud bo’lib, bu ma’lumot taqdim etiladigan muhitning tuzilishi va xususiyatlariga bog’liq bo’lgan farqlar hisoblanadi. Shuning uchun ham mantiqiy tuzilmani fizik tuzilmaga va aksincha, fizik tuzilmani mantiqiy tuzilmaga aylantiruvchi (aklantiruvchi) protseduralar ishlab chiqilgan. Bu protseduralar, fizik tuzilmalarga kirish (murojaat) va fizik tuzilmalar ustida turli xil amallarni bajarishni ta’minlab beradi, bajariladigan har bir amal mantiqiy yoki fizik tuzilmada qo’llanilayotganligiga bog’liq holda o’rganiladi.
Ma’lumotlar tuzilmasi oddiy (tayanch, sodda) va integrallashgan (tarkibli, murakkab) tuzilmalarga (turlarga) bo’linadi. Oddiy tuzilma deganda, bitdan boshqa qismlarga ajralmaydigan ma’lumotlar tuzilmasi tushiniladi. Fizik tuzilma nuqtai nazaridan olib qaralganda, komp’yuter arxitekturasi va dasturlash tizimlarida oddiy turning qanday o’lchamga ega bo’lishi va xotiraga joylashish tuzilishi qanday ko’rinishga ega ekanligini oldindan aytib bera olishimiz kerak. Mantiqiy nuqtai nazardan esa, oddiy ma’lumotlar bo’linmas birlik hisoblanadi.
Integrallashgan tuzilma deganda uni tashkil etuvchilar boshqa ma’lumotlar tuzilmasi – oddiy yoki o’z navbatida tarkibili tuzilmalar bo’lgan ma’lumotlar tuzilmasi tushiniladi. Integrallashgan ma’lumotlar tuzilmalari dasturchilar tomomnidan dasturlash tizimlari taqdim etadigan vositalardan foydalangan holda yaratiladi.
Tuzilma elementlari orasidagi bog’liqlikning mavjudligi yoki mavjud emasligiga qarab bog’lanmagan (vektor, massiv, satr, stek, navbat) va bog’langan (bog’langan ro’yxatlar) tuzilmalarga ajratiladi.
Ma’lumotlar tuzilmasining eng muhim belgilaridan biri – bu uning o’zgaruvchanligi, ya’ni elementlar sonining o’zgarishi yoki elementlar orasidagi bog’lanishning o’zgarishi hisoblanadi. Tuzilmaning o’zgaruvchanligi deganda elementlari qiymatining o’zgarishi tushinilmasligi kerak, ya’ni bunday holda barcha tuzilmagan o’zgaruvchan tuzilma hisoblanib qoladi.
Tuzilmalarning o’zgaruvchanlik xususiyatlariga qarab statik, yarimstatik va dinamik shakllari mavjud. Tayanch, statik, yarimstatik va dinamik tuzilmalar tezkor xotira uchun ahamiyatli hisoblanadi va ba’zan bu tuzilmalar tezkor tuzilmalar deb ham ataladi. Fayl tuzilmalari tashqi xotira uchun mos ma’lumotlar tuzilmasi hisoblanadi.
Ma’lumotlar tuzilmasining yana bir muhim belgisi uni tashkil etuvchi elementlarning tartiblanganlik xususiyati hisoblanadi. Ushbu belgisi bo’yicha chiziqli va nochiziqli tuzilmalarga ajratish mumkin.
Chiziqli tuzilma elementlarining xotirada o’zaro joylashish xususiyatlariga qarab xotirada elementlari ketma-ket taqsimlangan (vektor, satr, massiv, stek, navbat) va xotirada elementlari erkin bog’langan ko’rinishda taqsimlangan (bir bog’lamli, ikki bog’lamli ro’yxatlar) kabi turlarga ajratish mumkin.
Dasturlash tillarida “ma’lumotlar tuzilmasi” tushunchasi “ma’lumotlar turi” tushunchasi bilan chambarchas bog’liq. Ixtiyoriy ma’lumot, ya’ni konstanta, o’zgaruvchi, funktsiya yoki ifodaning qiymati o’zining turi bilan ajralib turadi.
Har bir tur bo’yicha axborot bir qiymatli aniqlanadi:
1) ko’rsatilgan turdagi ma’lumotni saqlash tuzilmasi, ya’ni birinchidan unga xotira ajratish va xotiradagi ma’lumotni taqdim etish, ikkinchidan ma’lumotning ikkilik kodda tasvirlanishi;
2) tavsiflangan turdagi u yoki bu ob’ektning qabul qilishi mumkin bo’lgan qiymatlari to’plami;
3) tavsiflangan turdagi ob’ekt ustida bajarish mumkin bo’lgan amallar to’plami.
Ma’lumotlar va algoritmlarni strukturalashtirish (tuzilmalashtirish)
Ma’lumotlar tuzilmalarini bilish, ularni saqlash va qayta ishlash xotirani tejash va protsessor vaqti sarfini kamaytirish nuqtai nazaridan eng samarali usullarni qo’llash imkonni beradi. Yana bir afzalligi, ma’lumotlarga tuzilmaviy yondoshuv murakkab dasturiy mahsulotlarni yaratish imkoniyati hisoblanadi. Zamonaviy dasturiy paketlar juda murakkab mahsulotlar hisoblanib, bunda minglab, millionlab satrli kodlarni hisoblashga to’g’ri keladi. Tabiiyki, bunday dasturiy mahsulotlarni “birdaniga (bir vaqtning o’zida)” ishlab chiqish imkoniyati yo’q, bular ba’zi bir tuzilmalar, ya’ni ularning tashkil etuvchi qismlari va ular orasidagi bog’liqliklar ko’rinishida ishlab chiqilishi mumkin. To’g’ri tuzilmaga keltirilgan mahsulotni ishlab chiqishning har bir bosqichida ishlab chiquvchining diqqatini mahsulotning alohida qismlariga qaratilishini talab etadi.
Katta dasturiy mahsulotlarni tuzilmalashtirishda mumkin bo’lgan yondoshuvlar mavjud. Bulardan biri algoritmlarni tuzilmalashtirishda “yuqoridan quyiga” loyihalash yoki “yuqoridan quyiga dasturlash” yondoshuvi bo’lsa, ikkinchisi, ma’lumotlarni tuzilmalashtirishda esa, “quyidan yuqoriga” loyihalash yoki “quyidan yuoriga dasturlash” yondoshuvlari hisoblanadi.
Birinchi holatda (yondoshuvda) dastur bajarishi kerak bo’lgan harakatlar tuzilmalashtiriladi. Ishlab chiqilishi ko’zda tutilgan katta va murakkab dasturni loyihalash kichik hajmdagi bir nechta qism masalalarning yechimlari ko’rinishida hal qilinadi. Shunday qilib, qo’yilgan masalaning to’liq yechimini taqdim etuvchi eng yuqorida turuvchi dasturiy modul, qismmasalalarni yechimini beruvchi modullarga murojaatni amalga oshiradigan yetarli darajada juda oddiy bo’lib chiqadi. Loyihalashning birinchi bosqichida qismmasalalarning dasturiy modullari “qopqoq” ko’rinishda amalga oshiriladi. Shundan so’ng har bir qismmasala o’z navbatida yuqoridagi qoida bo’yicha dekompozitsiya (qismlarga ajratish) qilinadi. Qism masalalarga ajratish jarayoni dekompoziyaning keyingi bosqichida aniq bir masalaning yechimini beradigan holatga kelgunga qadar davom ettiriladi. Dekompozitsiyaning eng quyi holati eng kichik instrumental vosita darajasigacha keltirilishi (masalan, tanlab olingan dasturlash tilidagi bitta operatorgacha dekompozitsiyalash) mumkin.
Ikkinchi yondoshuvda tuzilmalashtirish ma’lumotlarga asoslanadi. Har bir dasturiy mahsulot uchun hamma vaqt Buyurtmachi mavjud. Buyurtmachida esa kiruvchi ma’lumotlar bo’lib, ishlab chiqiladigan dasturiy mahsulot ushbu kiruvchi ma’lumotlarni chiquvchi ma’lumotlarga akslantirish xususiyatlarini o’z ichiga olgan bo’lishi kerak. Dasturlashning instrumental vositalari esa faqat tayanch (oddiy, sodda) ma’lumotlar turi va ular ustida bajariladigan amallarni taqdim etadi. Tayanch ma’lumotlar turini qayta ishlash uchun yoki buyurtmachining kiruvchi ma’lumotlariga moslashtirish uchun dasturchilar juda murakkab ma’lumotlar turlari va ular ustida bajariladigan yangi amallarni yaratishi kerak bo’ladi. Ma’lumotlar turini kompozitsiya (birlashtirish) qilishning oxirgi bosqichida masalaning to’liq yechimini beruvchi mos ravishda kiruvchi va chiquvchi ma’lumotlar va ular ustida bajariladigan amallarni tadbiq etishladi.
Do'stlaringiz bilan baham: |