Ma‘lumotlar tuzilmasi va algoritmlar

Muhammad Al-Xorazmiy nomidagi
Toshkent axborot texnologiyalari universiteti
Ma‘lumotlar tuzilmasi va algoritmlar
Mustaqil ish
Bajardi:
Mavzu: Ma'lumotlar , tuzilmalar va obyektga yo'naltirilgan dasturlash
Reja:
Kirish qism
Asosiy qism:
1.Ma’lumotlar tuzilmasi
2. OYD nima?
3. Ma’lumotlarni abstraktsiyalash.
4. Sinf,sinf maydonlari va obyektlari
5. Vorislik va polimorfizm tushunchalari
Foydalanilgan adabiyotlar
Xulosa
Barcha dastur yoki dasturiy mahsulotning asosida ikkita birlik yotadi: ma’lumotlar va ular ustida qandaydir amallar bajaradigan algoritmlar. Algoritmlar ma’lumotlarni biz yoki dastur uchun foydali bo’lgan axborot ko’rinishiga keltirib beradi. Algoritmlar shu ma’lumotlar ustida amallarni (o’qish, yozish, yangilash, o’chirish) samarali va tez bajara olishi uchun biz shu ma’lumotlarni ma’lum bir strukturaga solgan holda saqlashimiz kerak bo’ladi. Demak shunday qilib,
Ma’lumotlar tuzilmasi — bu ma’lumotlarni samarali o’qish va o’zgartirish imkonini beruvchi, ma’lumotlarni saqlash va boshqarishning bir formatga solingan shaklidir. (Manba: Wikipidia)
Soddaroq qilib aytganda, ma’lumotlar tuzilmasi — bu ma’lumotlarning ma’lum bir strukturaga solingan, ular o’rtasida ma’lum bir bog’lanishlar yaratilgan va ular ustida ma’lum amallar bajaruvchi funksiyalardan tashkil topgan guruh. Eng sodda ma’lumotlar tuzilmasiga misol qilib massiv (array)ni ko’rsatishimiz mumkin
Quyida keltirilgan ma’lumotlar tuzilmalari dasturlashda eng ko’p qo’llaniladigan tuzilmalardir. Ularga:
1. Massiv (Array)
2. Bog’langan ro’yhat (Linked List)
3. Navbat (Queue)
4. Stek (Stack)
5. Hash jadvallar (Hash tables)
6. Daraxtlar (Trees)
7. Graflar (Graph)
kiradi. Biz bu bo’limda boshidagi 5 ta tuzilma bilan yaqindan tanishib, ularning kuchli va kuchsiz tomonlari va ularni qanday holatlarda ishlatish ma’qulligi haqida gaplashib o’tamiz. Qolgan ikkita tuzilma murakkabroq bo’lib ular o’z ichida yana ko’plab turlarga bo’linib ketadi. Shuning uchun ularni keyinroqqa qoldiramiz.
Bundan tashqari barcha tuzilmalarning hamma joyda ingliz tilidagi nomi ishlatilgani va ularning nomi odatda tarjima qilinmaganligi sababli keyingi o’rinlarda men ularning asosan ingliz tilidagi nomlarini ishlataman.
Turli xildagi ma’lumotlar tuzilmalari nima uchun kerak?
Ma’lumotlar tuzilmalari nimaligi haqida qisman tasavvurga ega bo’ldingiz va ularning asosiy turlari bilan ham tanishib oldingiz. Lekin, shu joyga kelib agar sizda “Nima uchun ma’lumotlarning turli xil tuzilmalari kerak?” “Nima uchun bir turdagi universal ma’lumotlar tuzilmalaridan foydalanib qo’ya qolsa bo’lmaydi?” degan savol tug’ilmagan bo’lsa, bu yaxshi emas.) Keling endi shu savolga javob topishga harakat qilamiz.
Undan oldin ma’lumotlar tuzilmalari ustida asosiy bajarilishi mumkin bo’lgan amallarni ko’rib chiqaylik. Bularga ma’lumotlarni
Ko’rib chiqish (Traversing)
O’qib olish (Retrieving)
Kiritish (Insertion)
O’chirish (Deletion)
Qidirish (Search)
Saralash (Sorting)
Birlashtirish (Merging)lar kiradi.
Turli xildagi ma’lumotlar tuzilmalarida esa yuqoridagi amallar turlicha tezlikda amalga oshadi.
Masalan oddiyroq misol olaylik, array uchun ma’lumotni o’qib olish uchun O(1) vaqt sarflansa, uni kiritish yoki o’chirish uchun O(n) vaqt sarflanadi. Linked listda esa bular aksincha. Shuning uchun, masalan, sizning dasturingizda ma’lumotlar ko’p kiritilib, o’chirilsayu lekin kam o’qilsa, bunda ma’lumotlarni saqlashda arraydan foydalangandan ko’ra linked list qulayroq hisoblanadi. Lekin, ko’pincha holatda bir necha ma’lumotlar tuzilmalarini o’zini birlashtirgan gibrid ma’lumotlar tuzilmalaridan ham foydalaniladi
Ma’lumotlar toifalari
Ko’plab dasturlash tillarida ma’lumotlar bazaviy va keltirilgan toifalarga ajratiladi.
Ma’lumotlarning ixtiyoriy toifasi qiymatlar sohasi va ular ustida bajarilishi
mumkin bo’lgan amallar orqali tavsiflanadi. void kalit so’zi hech qanday toifaga
ega emaslikni anglatadi. Bunday toifadagi funksiyalar hech qanday qiymatni
qaytarmaydi. Lekin asosiy dastur tanasi, ya’ni main() funksiyasi void toifasiga ega
bo’lolmaydi, u int toifasida bo’lishi kerak.
|