MASSIVLAR
Reja:
1. Berilganlar massivi tushunchasi
2. Ko`p o`lchamli statik massivlar
3. Ko`p o`lchamli massivlarni initsializatsiyalash
4. Dinamik massivlar bilan ishlash
5. Funktsiya va massivlar
Berilganlar massivi tushunchasi: [1(260-263), 2(112), 3(87-90)]Xotirada ketma-ket (regular) joylashgan bir xil turdagi qiymatlarga massiv deyiladi.
Odatda massivlarga zarurat, katta hajmdagi, lekin cheklangan miqdordagi va tartiblangan qiymatlarni qayta ishlash bilan bog`liq masalalarni yechishda yuzaga keladi. Faraz qilaylik, talabalar guruhining reyting ballari bilan ishlash masalasi qo`yilgan. Unda guruhning o`rtacha reytingini aniqlash, reytinglarni kamayishi bo`yicha tartiblash, konkret talabaning reytingi haqida ma`lumot berish va boshqa masala ostilarini yechish zarur bo`lsin. Qayd etilgan masalalarni yechish uchun berilganlarning (reytinglarning) tartiblangan ketma-ketligi zarur bo`ladi. Bu yerda tartiblanganlik ma`nosi shundaki, ketma-ketlikning har bir qiymati o`z o`rniga ega bo`ladi (birinchi talabaning reytingi massivda birinchi o`rinda, ikkinchi talabaniki – ikkinchi o`rinda va hakoza). Berilganlar ketma-ketligini ikki xil usulda hosil qilish mumkin. Birinchi yo`l – har bir reyting uchun alohida o`zgaruvchi aniqlash: Reyting1, Reyting2,… ReytingN. Lekin ,guruhdagi talabalar soni yetarlicha katta bo`lganda, bu o`zgaruvchilar qatnashgan programmani tuzish katta qiyinchiliklarni yuzaga keltiradi. Ikkinchi yo`l – berilganlar ketma-ketligini yagona nom bilan aniqlab, uning qiymatlariga murojaatni, shu qiymatlarning ketma-ketlikda joylashgan o`rnining nomeri (indeksi) orqali amalga oshirishdir. Reytinglar ketma-ketligini Reyting deb nomlab, undagi qiymatlariga Reyting , Reyting ,… Reyting ko`rinishida murojaat qilish mumkin. Odatda berilganlarning bunday ko`rinishiga massivlar deyiladi. Massivlarni matematikadagi sonlar vektoriga o`xshatish mumkin, chunki vektor ham o`zining individual nomiga ega va u fiksirlangan miqdordagi bir turdagi qiymatlardan – sonlardan iboratdir.
Demak, massiv – bu fiksirlangan miqdordagi ayrim qiymatlarning (massiv elementlarining) tartiblangan majmuasidir. Barcha elementlar bir xil turda bo`lishi kerak va bu tur element turi yoki massiv uchun tayanch tur deb nomlanadi. Yuqoridagi keltirilgan misolda Reyting – haqiqiy turdagi vektor deb nomlanadi.
Programmada ishlatiladigan har bir konkret massiv o`zining individual nomiga ega bo`lishi kerak. Bu nomni to`liq o`zgaruvchi deyiladi, chunki uning qiymati to`liq bir massivning o`zi bo`ladi. Massivning har bir elementi massiv nomi, hamda kvadrat qavsga olingan va element selektori deb nomlanuvchi indeksni ko`rsatish orqali oshkor ravishda belgilanadi. Murojaat sintaksisi:
[]
Bu ko`rinishga xususiy o`zgaruvchi deyiladi, chunki uning qiymati massivning alohida elementidir, Bizning misolda Reyting massivining alohida komponentalariga Reyting[1], Reyting[2],..., Reyting[N] xususiy o`zgaruvchilar orqali murojaat qilish mumkin. Boshqacha bu o`zgaruvchilarni indeksli o`zgaruvchilar deyiladi.
Umuman olganda indeks sifatida ifoda ishlatilishi mumkin. Ifoda qiymati massiv elementi nomerini aniqlaydi. Ifoda sifatida o`zgaruvchi ham olinishi mumkinki, o`zgaruvchining qiymati o`zgarishi bilan murojaat qilinayotgan massiv elementini aniqlovchi indeks ham o`zgaradi. Shunday qilib, programmadagi bitta indeksli o`zgaruvchi orqali massivning barcha elementlarini belgilash (aniqlash) mumkin. Masalan, Reyting[1] o`zgaruvchisi orqali I o`zgaruvchining qiymatiga bog`liq ravishda Reyting massivining turli (barcha) elementlariga murojaat qilish imkoni mavjud. Shuni qayd qilish kerakki, massiv indeksi sifatida butun son qo`llaniladi.
Haqiqiy turdagi (float,double) qiymatlar to`plami cheksiz bo`lganligi sababli ular indeksi sifatida ishlatilmaydi.
CҚҚ tilida indeks doimo 0 dan boshlanadi, uning eng katta qiymati massiv e`lonidagi uzunlikdan bittaga kam bo`ladi.
Massiv e`loni quyidagicha bo`ladi:
[]қ{boshlang`ich qiymatlar}
Bu yerda - o`zgarmas ifoda. Misollar:
int m[6]қ{1,4,-5,2,10,3] ;
float a[4] ;
Massiv statik va dinamik bo`lishi mumkin, Statik massivning uzunligi oldindan ma`lum bo`lib, u xotirada ma`lum adresdan boshlab ketma-ket joylashadi. Dinamik massivni uzunligi programma bajarilish jarayonida aniqlanib, u dinamik xotiradagi ayni paytda bo`sh bo`lgan adreslarga joylashadi. Masalan,
int m[6] ;
ko`rinishida e`lon qilingan bir o`lchamli massiv elementlari xotirada quyidagicha joylashadi:
Adres Qiymatlar
m[0]
|
m[1]
|
m[2]
|
m[3]
|
m[4]
|
m[5]
|
|
|
|
|
|
|
7.1-rasm. Bir o`lchamli massivning xotiradagi joylashuvi
Massivning i- elementiga m[i] yoki *(mҚi) – vositali murojaat qilish mumkin. Massiv uzunligini sizeof(m) amali orqali aniqladi.
Massiv e`lonida uning elementlariga boshlang`ich qiymatlar olish (initsializatsiyalash) mumkin va uning bir nechta variantlari mavjud.
1)O`lchami ko`rsatilgan massiv elementlarini to`liq initsializatsiyalash:
int t[5]қ{-10,5,15,4,3};
Bunda 5 ta elementdan iborat bo`lgan t nomli bir o`lchamli massiv e`lon qilingan va uning barcha elementlariga boshlang`ich qiymatlar berilgan. Bu e`lon quyidagi e`lon bilan ekvivalent:
int t[5];
t[0]қ-10; t[1]қ5; t[2]қ15; t[3]қ4; t[4]қ3;
O`lchami ko`rsatilgan massiv elementlarini to`liqmas initsializatsiyalash:
int t[5]қ{-10,5,15};
Bu yerda faqat massiv boshidaga uchta elementga boshlang`ich qiymatlar berilgan. Shuni aytib o`tish kerakki, massivning boshidagi yoki o`rtadagi ementlariga qiymatlar bermasdan, uning oxiridagi elementlarga boshlang`ich qiymat berish mumkin emas. Agarda massiv elementlariga boshlang`ich qiymat berilmasa, unda kelishuv bo`yicha static va extern modifikatori bilan e`lon qilingan massiv uchun elementlarining qiymati 0 soniga teng deb, automatic massivlar elementlarining boshlang`ich qiymatlari noma`lum hisoblanadi.
3)O`lchami ko`rsatilmagan massiv elementlarini to`liq initsializatsiyalash:
int t[]қ{-10,5,15,4,3};
Bu misolda massivni barcha elementlariga qiymatlar berilgan hisoblanadi, massiv uzunligi kompilyator tomonidan boshlang`ich qiymatlar soniga qarab aniqlanadi. Agarda massivni uzunligi berilmasa, boshlang`ich qiymati berilishi shart.
}
Do'stlaringiz bilan baham: |