|
Kirish Massiv tushunchasi. Statik massivlar
|
bet | 1/5 | Sana | 20.05.2024 | Hajmi | 208,13 Kb. | | #244829 |
Bog'liq 21- lectures Basic prog Massiv
Kirish
Massiv tushunchasi. Statik massivlar.
Bir va ikki o‘lchovli massivlar.
Dinamik massivlar.
KIRISH
MASSIV so'zi dasturlash tillariga ham bog'liq.C# dasturlash tilida kompyuter xotirasiga bir o’zgaruvchi yordamida bir nechta qiymatlarda foydalanishga to’g’ri keladi. Bir o’zgaruvchi bilan bir nechta qiymat ustida amallar bajarish uchun berilgan ma’lumotlar bir turga mansub bo’lishi kerak. C# dasturlash tilida bir o’zgaruvchi yordamida bir nechta qiymatlardan foydalanish uchun massiv degan turdan foydalaniladi. Dasturlash tillarida ro’yxat yoki jadval ko’rinishidagi ma’lumotlarni massiv deb atashadi. Massiv so’zining ma’nosi o’lcham, o’lchov demakdir. Massivning barcha elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va bir-birlaridan nomerlari (indekslari) bilan farq qiladi.
Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir tipdagi o’zgaruvchilar guruhidir. Alohida bir o’zgaruvchini ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi1.
C# dasturlash tilida kompyuter xotirasiga bir o’zgaruvchi yordamida bir nechta qiymatlarda foydalanishga to’g’ri keladi. Bir o’zgaruvchi bilan bir nechta qiymat ustida amallar bajarish uchun berilgan ma’lumotlar bir turga mansub bo’lishi kerak. C# dasturlash tilida bir o’zgaruvchi yordamida bir nechta qiymatlardan foydalanish uchun massiv degan turdan foydalaniladi. Dasturlash tillarida ro’yxat yoki jadval ko’rinishidagi ma’lumotlarni massiv deb atashadi. Massiv so’zining ma’nosi o’lcham, o’lchov demakdir. Massivning barcha elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va bir-birlaridan nomerlari (indekslari) bilan farq qiladi.
Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir tipdagi o’zgaruvchilar guruhidir.
Massivlar yagona o’zgaruvchi bilan kompyuter xotirasiga saqlanadi, uning elementlari ma’lum bir indekslar bilan tartiblab joylashtiriladi. Massivlar yagona nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari bir turga mansub va tartiblangan bo’ladi2.
Kompyuter xotirasida ketma-ket (regulyar) joylashgan bir xil turdagi qiymatlarga massiv deyiladi.Katta hajmdagi cheklangan va tartiblangan qiymatlarni qayta ishlash bilan bog’liq masalalarni echishda massivlardan foydalanishga zarurat tug’iladi. Massivlarni matematikadagi sonlar vektoriga o’xshatish mumkin, chunki vektor ham o’zining individual nomiga ega va u chekli miqdordagi bir turdagi qiymatlardan, ya’ni sonlardan iborat.
Demak, massiv – bu chekli miqdordagi bir turdagi qiymatlar (massiv elementlari)ning tartiblangan majmuasidir. Ya’ni massivdagi barcha elementlar bir xil turga tegishli bo’lishi lozim. Bunday tur massiv elementining turi yoki massiv uchun tayanch tur deb ataladi. Dasturda ishlatiladigan har bir massiv o’zining individual nomiga ega bo’lishi kerak. Bu nom massiv o’zgaruvchisi deyiladi. Massivning har bir elementi massiv nomi, hamda kvadrat qavsga olingan va element selektori deb nomlanuvchi indeksni ko’rsatish orqali oshkor ravishda belgilanadi. Unga murojaat sintaksisi quyidagicha:
[];
Bu ko’rinishga xususiy o’zgaruvchi deyiladi, chunki uning qiymati massivning alohida elementidir.
Umuman olganda indeks sifatida ifoda ishlatilishi mumkin. Ifoda qiymati massiv elementi nomerini aniqlaydi. Ifoda sifatida o’zgaruvchi ham olinishi mumkin, bunda o’zgaruvchining qiymati o’zgarishi bilan murojaat qilinayotgan massiv elementini aniqlovchi indeks ham o’zgaradi. Shunday qilib, dasturdagi bitta indeksli o’zgaruvchi orqali massivning barcha elementlarini aniqlash mumkin. Haqiqiy turdagi (float, double) qiymatlar to’plami cheksiz bo’lganligi sababli ular massiv indeksi sifatida ishlatilmaydi.
Bu bo’limda bir o’lchovli statik va dinamik massivlar bilan tanishamiz.
C++ tilida massiv indeksi doimo 0(nol) dan boshlanadi, uning eng katta qiymati massiv e’lonidagi uzunlikdan bittaga kam bo’ladi.
Massiv quyidagicha e’lon qilinadi:
[] ={};
Bu erda <o’lcham> - butun son ko’rinishidagi o’zgarmas ifoda. Bir o’lchovli massivlarni e’lon qilishga doir misollar:
int a[5]={4,-5,2,10,3};
float n[4];
Massiv statik yoki dinamik turda bo’lishi mumkin. Statik massivning uzunligi oldindan ma’lum bo’ladi va uning elementlari xotirada aniq bir adresdan boshlab ketma-ket joylashadi. Dinamik massivning uzunligi dastur bajarilishi jarayonida aniqlanadi va uning elementlari dinamik xotirada ayni paytda bo’sh bo’lgan adreslarga joylashadi. Masalan,
int a[5]; ko’rinishida e’lon qilingan bir o’lchovli massiv elementlari xotirada quyidagicha joylashadi:
|
| |