Ўзбекистон республикаси ахборот технологиялари ва коммуникацияларини ривожлантириш вазирлиги

Mavzu: С++ дастурлаш тилида маълумотлар турлари, уларни эълон қилиш ва тасвирлаш тушунчалари. Массивлар, уларнинг хоссалари. Массивларни қўшиш ва кўпайтириш амалларини бажариш дастурини тузинг
ЎЗБЕКИСТОН РЕСПУБЛИКАСИ АХБОРОТ ТЕХНОЛОГИЯЛАРИ ВА КОММУНИКАЦИЯЛАРИНИ РИВОЖЛАНТИРИШ ВАЗИРЛИГИ
МУХАММАД АЛ-ХОРАЗМИЙ НОМИДАГИ ТОШКЕНТ АХБОРОТ ТЕХНОЛОГИЯЛАРИ УНИВЕРСИТЕТИ
Mustaqil ish
Mavzu: С++ дастурлаш тилида маълумотлар турлари, уларни эълон қилиш ва тасвирлаш тушунчалари. Массивлар, уларнинг хоссалари. Массивларни қўшиш ва кўпайтириш амалларини бажариш дастурини тузинг.
Guruh:319-21 guruh talabasi
Bajardi : Abduxoliqov Asadulla
Tekshirdi: : Bo’riyev Yusuf Absamatovich
Toshkent 2023
REJA:
1. Dasturlashda ma’lumotlar tuzilmasining o’rni va axamiyati.
2.Ma’lumotlar tuzilmalari o’zi nima va nima uchun ular muhim.
3.Ma’lumotlar turlari, ularni e’lon qilish va tasvirlash tushunchalari.
4. Ma’lumotlar tuzilmasini asosiy ko‘rinishlari (turlari)
5. Asosiy tushuncha va ta’riflar
6.Xulosa
Dasturlashda ma’lumotlar tuzilmasining o’rni va axamiyati.
Ma'lumotlar tuzilmalarining bir nechta asosiy va ilg'or turlari mavjud bo'lib, ularning barchasi ma'lum bir maqsadga muvofiq ravishda ma'lumotlarni tartibga solish uchun mo'ljallangan. Ma'lumotlar tuzilmalari foydalanuvchilarga kerakli ma'lumotlarga kirish va ular bilan ishlashni osonlashtiradi. Eng muhimi, ma'lumotlar tuzilmalari ma'lumotlarning tashkil etilishini mashinalar va odamlar yaxshiroq tushunishlari uchun tuzadi.
Ko'pgina kompyuter fanlari talabalari va ishlaydigan mutaxassislar DSA ni o'rganishni o'tkazib yuborishadi , ayniqsa Hindistonda, chunki ular buni juda murakkab deb bilishadi va shuningdek, uning afzalliklarini to'liq tushunmaydilar. Ular tushunolmagan narsa shundaki, DSA nafaqat dasturni samaraliroq qilishda, balki hayotning turli jabhalarida chuqur foydalanishga ega.
IOI (Informatika bo'yicha Xalqaro Olimpiada) va ICPC (International Collegiate Programming Contest) kabi mashhur dasturlash musobaqalarida turli sabablarga ko'ra Hindistondan ko'plab g'oliblar bo'lmadi. Masalan, hindistonlik talabalar o'rta maktablarda asosiy dasturlash ko'nikmalari yoki DSA tushunchalariga duchor bo'lmasligi hammaga ma'lum. Buning o'rniga ular tanlov imtihonlariga tayyorgarlik ko'rishga majbur. Bu shuni anglatadiki, bu talabalar Hindistonni IOI yoki ICPCda vakillik qilsalar, ular hindistonlik hamkasblariga qaraganda deyarli 4-5 yil dasturlash va DSA tajribasiga ega bo'lgan boshqa mamlakatlardan kelgan ishtirokchilarga qarshi qo'yiladi.
Go for Gold – bu CodeChef tashabbusi bo‘lib, u hind dasturchilariga kelajakda jahon darajasida bo‘lishga yordam beruvchi notijorat tashkilotdir. Ushbu tashabbus Hindistonning bunday global musobaqalardagi shubhali rekordini o'zgartirishga qaratilgan harakatdir. Ushbu tashabbus orqali CodeChef hind dasturchilariga stipendiyalar, imtiyozlar, reklama aktsiyalari va treninglar taqdim etish orqali yordam beradi. CodeChef-ning sa'y-harakatlari 2012 yilda ikki hind jamoasi CodeChef-dan o'qigan treninglar yordamida ICPC kodlash tanlovining finalida eng yaxshi 20 talikka kirishganda munosib taqdirlandi. Bu ilgari hech bir hindistonlik erishmagan muvaffaqiyat edi.
Biroq, dasturchilar nafaqat yaxshi dasturchi bo'lish, balki o'z muammolarini hal qilish orqali kompaniyangizga sezilarli hissa qo'shish uchun o'z kareralarida DSA muhimligini imkon qadar erta anglab olishlari kerak.
Ma’lumki, ixtiyoriy ob’ekt, xodisa yoki biror bir jarayon tadqiq qilinayotganda uning modeli qurib olinadi. Model turlicha bo‘lishi mumkin, masalan, matematik model, fizik model va boshqa modellar. Ob’ekt, xodisa yoki biror bir jarayonni matematik model qurildi degani o‘sha qaralayotgan tizimni ma’lum bir matematik qonuniyatlar orqali, ya’ni matematik formulalar orqali ifodalanishidir.
Mantiqiy bosqichda ma’lumotlar tuzilmasini biror bir dasturlash tilida ifodalanishi tushuniladi.
Fizik(jismoniy) bosqichda esa informatsion ob’ektni mantiqiy tavsiflanishiga mos ravishda EXM xotirasida akslantirilish tushiniladi. EXM xotirasi chekli bo‘lganligi sababli, xotirani taqsimlash va uni boshqari muammosi yuzaga keladi.
Ma’lumotlar tuzilmalari o’zi nima va nima uchun ular muhim.
“Yomon dasturchilar o’zlarining kodlari haqida qayg’urishadi, yaxshi dasturchilar esa ma’lumotlar tuzilmalari va ularning bog’lanishlari haqida bosh qotirishadi.” — Linus Torvalds
Ma’lumotlar tuzilmalari o’zi nima?
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.
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.
Asosiy ma’lumotlar tuzilmalari:
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.
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
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.
|