Xotirani adreslash Ixtiyoriy mashina komandasi – kodi ikkita maydon: amallar va adreslardan tashkil topgan.
Komandaning adres maydonida adres kodi saqlanadi. Ko’p hollarda ma’lumotlarga murojaat fizik adres bo’yicha amalga oshiriladi. Odatda fizik adres komandaning adres maydoniga mos kelmaydi, lekin unga bog’liq bo’ladi. Umumiy holda kodning adresini fizik adresga akslantirish – adreslash deyiladi.
Hozirgi vaqtda o’ndan ziyod adreslash usullari va ularning modifikatsiyalari mavjud. Ma’lumotlarni adreslash mavjud barcha usullarini ikkita asosiy guruhga ajratiladi: to’g’ridan-to’g’ri (bevosita) va bilvosita.
Bevosita adreslash usulida operandning joylashgan adresi yoki operandning o’zi bevosita adres kodida joylashgan bo’ladi. Bilvosita adreslash usulida esa, adres kodi bo’yicha fizik adresni shakllantirish protsedurasi bajarilishi kerak, buning uchun hisoblash mashinalarida maxsus adreslash muxanizmi qo’llaniladi.
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.
Ixtiyoriy loyihani amalga oshirishda qarama-qarshi amallar, ya’ni ma’lumotlar tuzilmalarini ishlab chiqish natijalari bo’yicha algoritmning tuzilishini doimiy ravishda tuzatib borish va aksincha, algoritmlarga mos ravishda ma’lumotlar tuzilmasida tuzatishlar kiritish ishlari bajarib boriladi.