O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI
VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT
TEXNOLOGIYALARI UNIVERSITETI QARSHI FILIALI
Kompyuter injiniringi
FAKULTETI
III-BOSQICH KI-13-20
GURUH TALABASI
ASLANOV SHOHJAHON UZOQOVICH
NING
2-LABORATORIYA ISHI
Qabul qildi:
2-laboratoriya mashg’uloti
Statik ma’lumotlar tuzilmasini o’rganish.
Ishdan maqsad: Statik ma’lumotlar tuzilmasini o‘rganish va ularni tadqiq qilish.
Qo‘yilgan masala: C++ tilida statik toifadagi ma’lumotlar tuzilmalarini yaratish va
ularga doir misollarning dasturini ishlab chiqish.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.
Nazariy qism.
Massiv va uni aniqlash. Massiv elementlariga murojaat qilish.
Bir hil tipdagi
miqdorlar ustida biror amalni (amallar ketma-ketligini)
bajarish talab etilganda
massivlardan foydalaniladi. Shuni aytish kerakki agar ushbu miqdorlarning har
biriga dastur ishi davomida faqat bir marta murojaat qilinsa,
unda bunday
masalalarni massivlardan foydalanmasdan ham ishlab chiqish mumkin. Masalan
sonlar ketma-ketligning maksimumi, minimumi, yig‘indisi yoki o‘rta arifmetigini
topish talab etilsa, massivdan foydalanish shart emas, chunki bunjay masalalarda har
bir miqdorga bir marta murojaat kilish yetarli. Lekin berilgan miqdorlar ketma-
ketligida nechta miqdor ularning o‘rta arifmetik qiymatidan katta ekanligini aniqlash
uchun
massivdan foydalanish zarur, chunki o‘rta arifmetik miqdor hisoblab
topilgandan so‘ng o‘rta arifmetik miqdordan katta sonlarni aniqlash uchun
miqdorlarga yana bir marta murojaat qilish zarur.
Massiv – bir tipga tegishli miqdorlarning nomerlangan ketma-ketligi bo‘lib,
massivning har bir elementiga murojaat
qilish uchun massivning nomi, shu
elementning ketma-ketlikdagi nomeri (indeksdan) foydalaniladi. Massiv elementlari
kompilyator tomonidan xotirada ketma-ket joylashtiriladi va shu sababli uning biror
elementiga murojaat qilishda, massivning boshlanish adresi va element nomerini
bilish yetarli. C++ tilida massiv quyidagicha e’lon qilinadi
Yuqoridagi misolda 10 butun tipdagi sondan tashkil topgan massiv e’lon qilingan.
C++ tilida massiv elementlari 0 dan boshlab indekslanadi. Demak massivda 10
element mavjud bo‘lsa, birinchi elementning nomeri 0 va oxirgi elementning nomeri
9 ga teng bo‘ladi.
XOTIRA
…
1620
1624
1628
1632
1636
1640
1644
1648
1652
1656
1660
1664
1672
1676
…
Massiv indeksi
0
1
2
3
4
5
6
7
8
9
Massiv qiymati
8
13
24
6
-8
19
31
-13
66
105
Keltirilgan rasmda A massivning xotirada joylashishining mumkin bo‘lgan
holatlaridan biri keltirilgan. Massiv elementlarini joylashtirish 1624 –
adresdan
boshlanadi, har bir element butun tipda bo‘lgani uchun xotirada 4 baytdan joy
egallaydi, shu sababli butun massiv 40 bayt joyni band qiladi. 0 – indeksli element
1624, 1625, 1626, 1627 baytlarni egallaydi, 1 – element 1628 baytdan boshlab 4 ta
ketma-ket baytni egallaydi va xakozo. Eng oxirgi 9 – indeksli element xotirada
1660 baytdan boshlab joylashtiriladi va 1660, 1661, 1662 hamda 1663
baytlarni
egallaydi. 1664 baytdan boshlab xotida boshqa o‘zgaruvchilar uchun ajratilishi
mumkin. Kompilyator massivning ixtiyoriy element adresini quyidagi formula
asosida aniqlaydi:
𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴[𝑖]) = 𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴) + 𝑠𝑖𝑧𝑒𝑜𝑓(𝑖𝑛𝑡) ∗ 𝑖
Bu yerda
= 𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴)
massining boshlanish adresi keltirilgan misolda 1624 ga
teng,
shuning
𝑠𝑖𝑧𝑒𝑜𝑓
funksiyasi tipning uzunligini (aniqrog‘i shu tipga tegishli
qiymatlarning xotirada egallaydigan joyini) aniqlaydi, int tipi uchun bu 4
baytni
tashkil etadi. Masalan 7 elementning adresi yuqoridagi formulaga ko‘ra
𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴[7]) = 𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴) + 𝑠𝑖𝑧𝑒𝑜𝑓(𝑖𝑛𝑡) ∗ 7 = 1624 + 4 ∗ 7 = 1624 +
28 = 1652
Umumiy holda agar A massiv
int A[10];
yuqoridagi formula quyidagicha yoziladi:
𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴[𝑖]) = 𝑎𝑑𝑑𝑟𝑒𝑠𝑠(𝐴) + 𝑠𝑖𝑧𝑒𝑜𝑓(𝑎𝑛𝑦𝑡𝑦𝑝𝑒) ∗ 𝑖,
𝑖 = 0 … 𝑁 − 1
Keltirilgan xususiyatlar massivni bir hil tipdagi va bir hir tarzda qayta ishlanadigan
ma’lumotlarni saqlash uchun ajoyib vositaga aylantiriladi.
Massiv elementiga murojaat qilish uchun indeks qiymati sifatida istalgan manfiy
bo‘lmagan (ishorasiz) butun tipdagi miqdordan (hususan, sondan, butun tipdagi
o‘zgaruvchidan, butun tipdagi qiymatni qaytaruvchi
arifmetik ifoda yoki
funksiyadan) foydalanish mumkin.