Bajardi: Ahmadjonov Ibrohim Tekshirdi: Rahmonov Asqar


Download 376.25 Kb.
Pdf ko'rish
Sana18.06.2023
Hajmi376.25 Kb.
#1586033


OʻZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA
KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
MA`LUMOTLAR TUZILMASI VA ALGORITMLASH
Mustaqil ish
Bajardi: Ahmadjonov Ibrohim
Tekshirdi: 
Rahmonov Asqar
Toshkent-2022


Mavzu: Ma’lumotlarning sozlangan turlari:
massivlar ,vektorlar,yozuvlar,to’plamlar,ko’rsatkichli
turlar .
Reja:
I Kirish
II Asosiy qism
1.Ma’lumotlar turlari
2.Ma’lumotlarning sozlangan turlari:
2.1 Massivlar
2.2 Vektorlar
2.3 To’plamlar
2.4 Yozuvlar 
2.5 Ko’rsatkichli turlar
III Xulosa
Hayotimizda biz turli muammolarni hal qilish uchun 


turli xil turdagi ma’lumotlar turidan foydalanishimizga 
to’g’ri keladi . Turli holatlarga nazar tashlasak , 
ma’lumotlar turi har bir ishlatilish jarayonida turli xil 
prinsip bilan ishlaydi . Misol uchun , kutish holatidagi 
navbat bilan idish yuvish jarayonida tarelkalarni olib 
qayta taxlash holatlari . Bu ikki ma’lumotlar turlari bir-
biridan mantiqiy qurilishiga ko’ra farq qiladi . Bu kundalik 
hayotimizda ko’rishimiz mumkin sodda ma’lumotlar 
turiga misol bo’ladi . Turli murakkabroq ish sohalarida 
bundan ancha murakkabroq ma’lumotlar turlari 
ishlatiladi . Qisqa qilib aytganda ma’lumotlar turlari 
obyektlarni yoki obyektlar orasidagi bog’liqlikni 
ifodalagani uchun deyarli barcha hayot jarayonlarida 
ishlatiladi .
Ma’lumotlar turlari asosan sodda va keltirilgan 
turlarga bo’linadi:


Quyidagi artikl sodda ma’lumotlar turlarini 
tavsiflaydi:
Integer: Butun ma’lumotlar turini ifodalash uchun 
ishlatiladigan ma’lumotlar turi bu – integer . Butun sonlar
turi yana 3 turga bo’linadi : short int , int , long int. 
Short int turi odatda xotiradan 2 bayt joy egallaydi va bu 
turdagi sonlar manfiy qiymatlar ham qabul qilish mumkin
bo’lsa qabul qilish oralig’i : -32768 dan 32767 gacha 
bo’lgan sonlarni , nomanfiy sonlar bilan chegaralanadigan
bo’lsa, oralig’i : 0 dan 65535 gacha bo’ladi .
Int turi odatda xotiradan 4 bayt joy egallaydi va bu 
turdagi sonlar manfiy qiymatlar ham qabul qilish mumkin
bo’lsa qabul qilish oralig’i: -2147483648 dan 2147483647
gacha bo’lgan sonlarni , nomanfiy sonlar bilan 
chegaralanadigan bo’lsa, oralig’i : 0 ... 4294967295
gacha bo’ladi .
Long int turi odatda xotiradan 2 bayt joy egallaydi va bu 
turdagi sonlar manfiy qiymatlar ham qabul qilish mumkin
bo’lsa qabul qilish oralig’I : -32768 dan 32767 gacha 
bo’lgan sonlarni , nomanfiy sonlar bilan chegaralanadigan
bo’lsa, oralig’i : 0 dan 65535 gacha bo’ladi .
Long long int: Bu ma’lumotlar turi int ning kengaytirilgan 
shakli bo’lib, -2^63 dan 2^63-1 gacha bo’lgan qiymatlarni 
qabul qiladi va xotiradan 8 bayt joy egallaydi .
Char : Turli xil simvollarni ifodalash uchun char 
ma’lumotlar turidan foydalaniladi . Xotiradan 1 bayt joy 


olib, -127 dan 127 yoki 0 dan 255 gacha bo’lgan 
qiymatlarni qabul qiladi .
String : Bu ma’lumotlar turi simvollar ketma-ketligi bilan 
ishlash uchun ishlatiladi . Xotiradan 4 bayt joy egallab ,
o’lchami esa maksimal 4294967294 bo’la oladi . Buni
string s;
cout<dasturi orqali ishonch hosil qilishimiz mumkin .
Float: Bu ma’lumotlar turi o’nli kasr ko’rinishidagi haqiqiy
sonlarni ifodalash uchun qo’llaniladi . Xotiradan 4 bayt 
joy egallaydi hamda ±1.18 x 10
-38
dan ±3.4 x 10
38 
gacha 
bo’lgan oraliqlardagi sonlarni qabul qila oladi . Aniq 
yaxlitlash xususiyati 6-9 raqamgacha ,odatda esa 7 ta 
raqamgacha aniq hisoblay oladi .
Double: Bu ma’lumotlar turi ham turli o’nli kasr 
ko’rinishidagi haqiqiy sonlarni ifodalash uchun ishlatiladi .
Xotiradan 8 bayt joy egallaydi hamda ±1.18973 x 10
-4932
dan ±1.18973 x 10
4932 
oraliqdagi sonlarni 1.0842*
10

19
aniqlik bilan hisoblaydi .
Keltirilgan ma’lumotlar turlari deb , ko’plab sodda 
ma’lumotlar turlari ning mantiqiy bog’liqlik asosida 
bog’langan ketma-ketligiga aytiladi .
Massiv bu – 1 turdagi sodda ma’lumotlar 
xususiyatidagi ma’lumotlar ketma-ketligiga aytiladi .


Massivni ishlatishda ma’lum bir xususiyatlari va shartlari 
mavjud:
*E’lon qilish jarayonida aniq o’lchami aytib ketilishi lozim
*Elementlar massiv indeksi ko’rsatilgan joyga borib 
joylashadi .
*Massivlar ko’p o’lchovli bo’ladi(ya’ni 2+ o’lchovli)
*Massiv doimo 0 indeksdan boshlanadi(Dasturlashdagi 
ko’plab jarayonlar deyarli hamma holda 1 bilan emas,0 
bilan boshlanadi)
*Elementlar soni massivni o’lchamidan oshib keta 
olmaydi 
* Agar elementlar soni massiv o’lchamidan kichik bo’lsa ,
Qolgan elementlari 0 qilib e’lon qilinishi ma’qul , aks 
holda , o’sha elementlar kompyuter xotirasida qolib 
ketgan “chiqindi qiymat” li miqdorlarga ega bo’ladi .
*Biz massivni effektiv yo’l bilan saralay olamiz
*Biz massivni har qanday indeksini o’zgarmas vaqt ichida 
Bila olishimiz mumkin .
*Massivning aniq bir xotira chegarasi kamchiligi bo’lib 
xizmat qilishi mumkin .
Masala: Berilgan massivni c++ ning o’zi tayyor qurilgan 
funksiyasi yordamida saralash dasturi:


Masala:Berilgan massivni insertion sort va selection sort 
yordamida saralash va nechta operatsiya bajarilganini 
hisoblovchi dastur:
Vektorlar tuzilishi va xususiyati jihatidan massivning 
yaxshilangan holati hisoblanadi . Vektor- bu dinamik 
massiv bo’lib, element qo’shilganda yoki o’chirilganda 
o’lchami avtomatik tarzda o’zgaradi , hamda konteyner 
tomonidan xotirasi avtomatik boshqariladi . Vektorning 
ixtiyoriy elementlariga iterator yoki indeks yordamida 
murojaat qilish uchun vektor elementlari xotirada ketma-
ket joylashadi . Vektorga element qo’shish yoki o’chirish 
chiziqli vaqt talab qiladi , chunki bu amallar bajarish 
jarayonida har xil holatlar mavjud bo’ladi , eng yaxshi 


holatda 1 ta operatsiya bajarilsa, eng yomon holatda 
n(vektor elementlari soni) vaqt talab qiladi . 
Vektorning oddiy massivdan bir qancha ustunliklarini 
keltirib o’tamiz:
*Elementlar soni oldindan talab qilinmaydi.
*Elementlarini e’lon qilish vaqtida bir vaqtning o’zida 
ortiqcha sikl dasturini tuzmasdan , elementlar sonini 
berish va har bir elementga bir xil ma’lum bir qiymat 
bersih mumkin .
*Element qo’shish yoki o’chirishda vektor o’zini o’zi qayta
to’g’irlaydi .
*Bir qancha ichki qurilgan maxsus iterator qaytaruvchi va
foydali funksiyalari mavjud .
Masala:Vektor implementatsiyasi va uning ayrim 
funksiyalarini ishlatish
To’plam deb shunday ma’lumotlar tuzilmasiga 
aytiladiki,undagi elementlar noyob bo’ladi(ya’ni biror 
elementga teng boshqa bir element to’plamda mavjud 
emas .) va elementlari odatda o’sish tartibida bo’ladi .


C++ dasturlash tilida to’plam odatda set kalit so’zi bilan 
keladi . Lekin boshqa to’plamlar turi ham mavjud,bular –
multiset va unordered_set lardir . Multiset ning set dan 
farqi shundaki, undagi elementlari noyob bo’lmaydi .
unordered_set ning set bilan farqi esa , undagi 
elementlar saralanmagan bo’ladi . 
To’plamning massivdan ustunlik tomoni shundaki , ba’zi 
bir muammolarni yechish jarayonida aynan setning 
xususiyati juda qo’l keladi(ya’ni avtomatik tarzda 
elementlarning noyob elementlarga aylanishi va 
saralanishi),lekin setning elementlariga massiv kabi 
indekslar bilan murojaat qilishning iloji yo’q, faqatgina 
iteratorlar bilan murojaat qilish mumkin .
Setdan unumli foydalanishning yana bir yo’llaridan biri bu
muammoni hal qilish jarayonida uni massiv yoki vektor 
dan biri bilan uyg’unlikda ishlatib samarali natijaga 
erishish mumkin . 
Setning bir qancha metod(biror bir klass yoki struktura 
tegishli funksiyalarga aytiladi)larini keltirib o’tamiz:
*Setda ham massiv kabi insert(ya’ni element qo’shish) 
funksiyasi ham mavjud .
*find metodi mavjud bo’lib, bunda nomi>.find() amali elementning kompyuter 
o’rnidagi xotirasidagi o’rnini qaytaradi .


*lower_bound() metodi elementdan katta yoki unga teng
bo’lgan eng yaqin bo’lgan elementning o’rnini qaytaradi
*upper_bound() metodi elementdan katta bo’lgan eng 
yaqin bo’lgan elementning o’rnini qaytaradi .
Masala:Yuqoridagi keltirilgan funksiyalardan foydalanib ,
Set elementlari ustida ushbu funksiyalarni ishlatish 
dasturini tuzish:


Ba’zida biz shunday holatlarga duch kelamizki, unda 
bizga bir – biriga o’xshamagan(tur jihatidan) 
ma’lumotlarni xotirada saqlash muammosiga duch 


kelamiz . Biz yuqorida bir xil turdagi ma’lumotlarni massiv
yordamida ketma-ket tarzda xotirada saqlanishini 
ko’rgandik . Massivlardan farqli ravishda, C++ da yozuvlar
bir xil turda bo’lmagan lekin bitta katta tushunchani 
ifodalash uchun ishlatiladi .
Yozuv deb shunday katta turga aytiladiki , buncha xilam-
xil turga mansub ma’lumotlar yaxlit bir turni tavsiflaydi .
Misol uchun kompyuterni olaylik . Uning juda ham 
ko’plab xususiyatlari bor ,lekin biz hozir hammaga iloji 
boricha tanishroq xususiyatini keltiramiz; RAM xotirasi,
HDD/SDD(doimiy xotira),protsessor. Bu 3 turdagi 
ma’lumot yaxlit birgalikda katta turni , kompyuterni 
tavsiflaydi . Hayotimizda yozuvga juda ham ko’plab 
misollar keltirishimiz mumin . Yozuvlar C++ da Struct kalit
so’zi yordamida yaratiladi . 
Biz bu yozuvlar bilan birgalikda massivni uyg’unlashtirimiz
mumkin , shunda bizda jadval hosil bo’ladi , sababi 
ma’lumotlar bazasini misol qilib olsak , har bir odam 
yozuv;katta bir tushuncha, odamlardan esa bir qancha .
Yozuv ichidagi joylashgan o’zgaruvchilar maydoni , 
funksiyalari esa metodlari deyiladi .
Masala:Yozuvga doir dastur tuzish


Masala:Jadval tuzish



Ko’rsatkichli turlar – kompyuter adreslari bilan 
ishlaydigan ma’lumotlar turi . Bu turlar dasturlarga 
havola orqali murojaat qilish orqali ma’lumotlar 
tuzilmasini yaratishga va boshqarishga imkon beradi .
Massivning yoki boshqa ma’lumotlarning barcha 
elementlari bo’ylab iteratsiyalash jarayoni ham aslida 
ko’rsatkichlardan foydalanishning bir qo’llanilishidir .
Ko’rsatkich ma’lum bir ma’lumotni ko’rsatib turadi , 
o’zining qiymati esa shu ma’lumotning adresini qiymatini 
o’zlashtiradi . 


int var=20;
int *ptr=&var; //ptr ko’rsatkich var elementning 
o’rnini //yo’naladi
*ptr=9; // ptr ko’rsatib turayotgan element qiymati 9
ga //aylandi
Ko’rsatkich yordamida dinamik massiv tuzish mumkin 
hamda xotiradan yutishda foydalanish mumkin .
Masala: Dinamik massiv tuzish orqali elementlari 
yig’indisni topuvchi dastur tuzish:


Xulosa o’rnida shuni aytmoqchimanki, ma’lumotlar 
turidan xabardor bo’lish dastur tuzish jarayonida 
xotiradan yutishda hamda aniq bir muammoni tezroq 
hamda qulayroq yechish uchun juda samarali bo’ladi.


Download 376.25 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling