1 Bob. C++ dasturlash tilining zamonaviy dasturlash tili sifatida C++ dasturlash tilining ishchi muhiti


Download 0.81 Mb.
bet9/28
Sana21.01.2023
Hajmi0.81 Mb.
#1106185
1   ...   5   6   7   8   9   10   11   12   ...   28
Bog'liq
C

C++ dasturlash tilida massivlar


Xotirada ketma-ket joylashgan bir xil turdagi qiymatlaga massiv deyiladi.


Odatda massivlarga zarurat, katta hajimdagi; lekin cheklangan miqdordagi va tartiblangan qiymatlarini qayta ishlash bilan bog’liq masaslarni yechishda o’ziga keladi.
Faraz qilaylik, o’quvchilar guruhining reyting ballari bilan ishalash masalasi berilgan bo’lsin.Unda guruhning o’rtacha reytingini aniqlash reytinigini kamayishi bo’yicha tartiblash, konkiret o’quvchilarning reytingi haqida ma’lumot berish va boshqa masala ostilarini yechish zarur bo’lsin. Qayd etilgan masalarni yechish uchun belgilarninmg tartiblangan ketma-ketligi zarur bo’ladi. Bu tartiblaganidek ma’naosi shundaki,ketma ketlikning har bir qiymati o’z o’rniga ega bo’ladi ( birinchi o’quvchining retingi massivda birinchi o’rinda ikkinchi o’quvchniki-ikinchi o’rinda va hokazo). Berilganlar ketma-ketligini ikki xil usulda hosil qilishimiz mumikn. Birinchi yo’l-har bir reyting uchun alohida o’zgaruvchi aniqlash: Reyting1,…, ReytingN. Guruhdagi o’quvchilar soni yetarlicha katta bo’lganda, bu o’zgaruvchilar qatnashgan programmani tuzush katta qiyinchiliklarni yuzaga keltiradi. Ikkinchi yo’l- berilganlar ketma-ketligini yagaona nom bilan aniqlab, uning qiymatlariga murojatni shu qiymatlarning ketma-ketlikda joylashgan o’rning nomeri orqali oshiramiz. Reytinglar ketma-ketligini Reyting deb nomlab, undagi qiymatlarga Reyting1,…,Reyting N ko’rinishida kiritamiz. Odatda belgilarning bunday ko’rinishiga massivlar deyiladi. Massivlarni matematikadagi sonlar vektoriga o’xshatish mumkin, chunki vektor ham o’zining individual nomiga ega va u fiksirlangan miqtordagi bir turdagi qiymatlardan-sonlardan iborat bo’ladi.
Massiv –b fiksirlangan miqtordagi ayrim qiymatlarni (massiv elemetlarning) tartiblangan majmuasidir. Barecha elemetlar bir xil turga bo’lishi kerak bu tur element turi yoki massiv uchun tayanch turi deb nomlanadi.
Programmasa ishlatiladigan konkret massiv o’zining individual nomiga ega bo’lishi kerak. Bu nomni to’liq o’zgaruvchi deyiladi, chunki qiymati massivning o’zi bo’ladi. Massivning har bir elementi massiv nomi, hamda kvadrat qvusga olingan va element selektori deb nomlanuvchi indeksni ko’rsatish orqali oshkor ravishda bergilaymiz.
Agar struktura bir hil kattalikdagi tiplardan tuzilgan bo'lsa, uning nomi massiv (array) deyiladi. Massivlar dasturlashda eng ko'p qo'laniladigan ma'lumot tiplaridir. Bundan tashqari strukturalar bir necha farqli tipdagi o'zgaruvchilardan tashkil topgan bo'lishi mumkin. Buni biz klas (Pascalda record) deymiz. Masalan bunday strukturamiz ichida odam ismi va yoshi bo'lishi mumkin.

Massivlar hotirada ketma-ket joylashgan, bir tipdagi o'zgaruvchilar guruhidir. Alohida bir o'zgaruvchini ko'rsatish uchun massiv nomi va kerakli o'zgaruvchi indeksini yozamiz. C++ dagi massivning elementlar indeksi har doim noldan boshlanadi. Bizda char tipidagi m nomli massiv bor bo'lsin va uning 4 dona elementi mavjud bo'lsin.


m[0] -> 4
m[1] -> -44
m[2] -> 109
m[3] -> 23
Ko'rib turganimizdek, elementga murojaat qilish uchun massiv nomi va [] qavslar ichida element indeksi yoziladi. Bu yerda birinchi element qiymati 4, ikkinchi element - 1 nomerli indeksda -44 qiymatlari bor ekan. Ohirgi element indeksi n-1 bo'ladi (n - massiv elementlari soni).
[] qavslar ichidagi indeks butun son yoki butun songa olib keluvchi ifoda bo’lishi kerak.
Masalan:
...
int k = 4, l = 2;
m[ k-l ] = 77; // m[2] = 77
m[3] *= 2; // m[3] = 46
double d = m[0] * 6; // d = 24
cout << m[1]; // Ekranda: -44
...
Massiv static va dinamik bo’lishi mumkin. Statik massivning uzunligi oldindan ma’lum bo’lib, u xotirada ma’lum adresdan boshlab ketma ket boshlaanad. Dinamik massivning uzunligi programma bajarilishi davomida u dinamik xotiradan ayni paytda bo’sh bo’lgan adreslarga joylashadi. Masala,
Int m[6];
Ko’rinishida e’lon qilingan bir o’lchamli massiv elementlari xotirada quydagicha joylashadi.

Adres Qiymatlar



m




m[0]

m[1]

m[2]

m[3]

m[4]

m[5]

Massiv bir xil turdagi bir nechta o’zgaruvchilarning to’plamidan tashkil topadi (ba’zi adabiyotlarda ular jadvallar deb ham nomlanadi). Nomi a bo’lgan LENGTH elementdan iborat TYPE turidagi massiv quyidagicha e’lon qilinadi:
type a[length];
Bu buyruqda type turiga tegishli maxsus a[0], a[1], ..., a[length-1] nomli o’zgaruvchilar e’lon qilinadi. Massivning har bir elementi o’z nomeri - indeksga ega bo’ladi. Massivning x - elementiga murojat qilish indeksatsiya amali yordamida amalga oshiriladi:
int x = ... ; // Butun qiymatli indeks
TYPE value = a[x]; // x - elementni o’qish
a[x] = value; // x- elementga yozish

Indeks sifatida butun turdagi qiymat beruvchi ixtiyoriy ifodani ishlatish mumkin: char, short, int, long. C tilida massiv elementlarining indeksi 0 dan (1 dan emas) boshlanadi, LENGTH uzunlikdagi massivning oxirgi elementining indeksi esa LENGTH-1 (LENGTH emas). Shuning uchun ham massivning barcha elementlari bo’yicha sikl quyidagicha yoziladi:


TYPE a[LENGTH]; int indx;
for(indx=0; indx < LENGTH; indx++)
...a[indx]...;
Bu erda indx < LENGTH sharti indx <= LENGTH-1 ga teng kuchli. Massiv chegarasidan chiqish (mavjud bo’lmagan elementni o’qish/yozish) kutilmagan natijalarga va dastur ishida ham kutilmagan holatlarga olib kelishi mumkin. Bunday xatolar massivlar bilan ishlashdagi eng ko’p yo’l qo’yiladigan xatolar hisoblanadi.
Statik massivlarni uning elementlari qiymatlarini {} ichida vergul bilan ajratib yozish, ya’ni initsializatsiya qilish yo’li bilan ham e’lon qilish mumkin. Agar massiv uzunligidan kam elementlar berilgan bo’lsa, u holda qolgan elementlari nol deb hisoblanadi:
int a10[10] = { 1, 2, 3, 4 }; // va 6 ta nol
Agar massivlarni initsializatsiya qilishda uning o’lchovi berilmasa u kompilyator tomonidan hisoblanadi:
int a3[] = { 1, 2, 3 }; // Xuddi a3[3] kabi.
Masala. Bir oy ichidagi kundalik haroratlar berilgan .Oy uchun o’rtacha haroratni hisoblash programmasini tuzamiz
Programma matni :
Void main ()
{const int n=30;
int temp [n];
int I,s,temp_o’rtacha;
cout <<” Kundalik haroratni kiriting:\n”
for (i=0;{cout <<”\n temp [“<cin >> temp[i];}
for (i=0,s=0;itemp_o’rtacha=s/n;
cout <<”Kunlik harorat :\n”;
For (i=0;iCout <<”Oydagi o’rtacha harorat=”<Return;
}

Download 0.81 Mb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   ...   28




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