Massivlar

Massivlar ko‘plab qiymatlarni birgalikda saqlash uchun mo‘ljallangan.

ULASHISH

Massiv nima?

Massiv — bu qiymatlar to‘plami.

Quyidagi rasmda myFruits nomli, ichida 'banana', 'apple' va 'orange' qiymatlari saqlangan massivni qanday tasavvur qilishimiz mumkinligi ko‘rsatilgan.

'apple' 'orange' 'banana' Values Array Name myFruits Indexes 0 1 2

Massivdagi har bir qiymatning o‘z o‘rni bor, u indeks deb ataladi va 0 dan boshlanadi.

Quyida myFruits massivi Python kodi yordamida qanday yaratilishi ko‘rsatilgan:

myFruits = Name ['banana', 'apple', 'orange'] Values Indexes 0 1 2

Birinchi qiymat 'banana' massivda 0 indeksida joylashgan.



Massiv bilan nima qila olaman?

Massivlar har bir qiymat uchun alohida o‘zgaruvchi ishlatishga qaraganda qiymatlar guruhi bilan ishlashni osonlashtiradi.

Shunday qilib, 3 ta o‘zgaruvchi yaratish o‘rniga:

fruit1 = 'banana'
fruit2 = 'apple'
fruit3 = 'orange'

Shunchaki bitta massiv yaratishimiz mumkin:

myFruits = ['banana','apple','orange']

Massiv yordamida siz:

  • Sonlar, so‘zlar yoki obyektlar to‘plamini saqlashingiz mumkin.
  • Istalgan qiymatga uning indeksi (o‘rni) orqali murojaat qilishingiz mumkin.
  • Massivdagi istalgan qiymatni o‘qishingiz, yangilashingiz, qo‘shishingiz yoki o‘chirishingiz mumkin.

Massivni qanday yaratish va undan qanday foydalanishni quyidagi bo‘limlarda ko‘ring.


Massiv yaratish

Massiv yaratishda massiv nomini va uning ichidagi qiymatlarni ko‘rsatishimiz kerak.

myFruits massivini turli dasturlash tillarida quyidagicha yaratish mumkin:


myFruits = ['banana','apple','orange']
const myFruits = ['banana','apple','orange'];
String[] myFruits = {"banana","apple","orange"};
string myFruits[] = {"banana","apple","orange"};
Misolni ishga tushirish »

Yuqoridagi Python kodida:

  • myFruits — massiv nomi.
  • = tenglik belgisi o‘ng tomondagi qiymatlarni massivga saqlaydi.
  • [ ] kvadrat qavslar massiv yaratayotganimizni bildiradi.
  • 'banana','apple','orange' — massiv ichidagi, vergul bilan ajratilgan qiymatlar.

Eslatma: C/C++ va Java kabi dasturlash tillarida massiv yaratishda massiv ichidagi qiymatlarning ma’lumot tipi ko‘rsatilishi shart.


Massiv amallari

Massivlarni ko‘plab turli usullarda o‘qish va o‘zgartirish mumkin. Quyida massiv bilan bajarish mumkin bo‘lgan keng tarqalgan amallar keltirilgan:

Amal Tavsif
o‘qish Massivdagi indeksdan qiymatni o‘qiydi.
yangilash Massivning indeks o‘rnidagi mavjud qiymatni yangilaydi.
qo‘shish Mavjud qiymatlarga qo‘shimcha ravishda massivga yangi qiymat qo‘shadi.
o‘chirish Berilgan indeks o‘rnidagi qiymatni massivdan o‘chiradi.
uzunlik Massivdagi qiymatlar sonini beradi. Qiymatlar soni massivning uzunligi hisoblanadi.
sikl Sikl yordamida massivdagi har bir qiymatni ko‘rib chiqadi.

Bu massiv amallari uchun kod turli dasturlash tillarida qanday ko‘rinishini ko‘rish uchun quyidagi bo‘limlarga o‘ting.


Massiv qiymatini o‘qish

Massiv qiymatini o‘qish uchun massiv nomidan va qavs ichida o‘qimoqchi bo‘lgan qiymatning indeksidan foydalanamiz, masalan: myFruits[0].

{{ i }} '{{ el.value }}'

Natija: '{{ result }}'

Natijani haqiqatan ko‘rishimiz uchun myFruits[0] ni konsol/terminalga yozadigan buyruqdan ham foydalanishimiz kerak; bu dasturlash tiliga qarab biroz boshqacha bajariladi.


myFruits = ['banana','apple','orange']

print(myFruits[0])
const myFruits = ['banana','apple','orange'];

console.log(myFruits[0]);
String[] myFruits = {"banana","apple","orange"};

System.out.println(myFruits[0]);
string myFruits[] = {"banana","apple","orange"};

cout << myFruits[0];
Misolni ishga tushirish »

Massiv qiymatini yangilash

Massivdagi qiymatni yangilash uchun massiv nomidan va yangilamoqchi bo‘lgan qiymatning indeks o‘rnidan foydalanamiz, masalan: myFruits[0], so‘ngra u yerga yangi qiymat saqlash uchun = tenglik belgisidan foydalanamiz.

{{ i }} '{{ el.value }}'

 

Turli dasturlash tillarida 0-indeksdagi massiv qiymatini quyidagicha yangilash mumkin:


myFruits = ['banana','apple','orange']

myFruits[0] = 'kiwi'
const myFruits = ['banana','apple','orange'];

myFruits[0] = 'kiwi';
String[] myFruits = {"banana","apple","orange"};

myFruits[0] = "kiwi";
string myFruits[] = {"banana","apple","orange"};

myFruits[0] = "kiwi";
Misolni ishga tushirish »

Massivga qiymat qo‘shish

Mavjud qiymatlarga qo‘shimcha ravishda massivga qiymat qo‘shish uchun bizga quyidagilar kerak:

  • massiv nomi
  • qo‘shish amalini bajaradigan buyruq
  • qo‘shiladigan qiymat
{{ i }} '{{ el.value }}'

 

Qiymat shu tarzda qo‘shilganda, yangi qiymat massiv oxiriga qo‘shiladi.

Massivga qiymat qo‘shish buyrug‘i dasturlash tillarida biroz farq qiladi.


myFruits = ['banana','apple','orange']

myFruits.append('kiwi')
const myFruits = ['banana','apple','orange'];

myFruits.push('kiwi');
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.add("kiwi");
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.push_back("kiwi");
Misolni ishga tushirish »

Dinamik massiv — bu o‘lchamini o‘zgartira oladigan massiv; qo‘shish va o‘chirish amallari uchun massiv shunday bo‘lishi kerak. Massiv o‘lchami o‘zgaradigan bunday holatlarda Java tilida ArrayList, C++ tilida esa vectordan foydalanamiz.

Qiymatni indeks yordamida massivning muayyan o‘rniga ham qo‘shish mumkin, masalan:


myFruits = ['banana','apple','orange']

myFruits.insert(1,'kiwi')
const myFruits = ['banana','apple','orange'];

myFruits.splice(1,0,'kiwi');
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.add(1,"kiwi");
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.insert(myFruits.begin() + 1, "kiwi");
Misolni ishga tushirish »

Massiv qiymatini o‘chirish

Massiv qiymati qaysi indeksdan o‘chirilishi kerakligini ko‘rsatish orqali o‘chiriladi.

{{ i }} '{{ el.value }}'

 

Turli dasturlash tillarida 1-indeksda joylashgan massiv qiymatini quyidagicha o‘chirish mumkin:


myFruits = ['banana','apple','orange']

myFruits.pop(1)
const myFruits = ['banana','apple','orange'];

myFruits.splice(1,1);
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.remove(1);
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.erase(myFruits.begin() + 1);
Misolni ishga tushirish »

Qiymatni massiv oxiridan indeks ishlatmasdan ham (Java bundan mustasno) o‘chirish mumkin, masalan:


myFruits = ['banana','apple','orange']

myFruits.pop()
const myFruits = ['banana','apple','orange'];

myFruits.pop();
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.remove(myFruits.size()-1);
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.pop_back();
Misolni ishga tushirish »

Massiv uzunligini aniqlash

Massiv uzunligini har doim tekshirishingiz mumkin:

{{ i }} '{{ el.value }}'

Natija: {{ result }}

Turli dasturlash tillarida massiv uzunligi quyidagicha aniqlanadi:


myFruits = ['banana','apple','orange']

print(len(myFruits))
const myFruits = ['banana','apple','orange'];

console.log(myFruits.length);
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

System.out.println(myFruits.size());
vector<string> myFruits = {"banana", "apple", "orange"};

cout << myFruits.size();
Misolni ishga tushirish »

Massiv bo‘ylab sikl

Sikl nima ekanligi haqidagi tushuntirishni ushbu sahifada ko‘ring.

Massiv bo‘ylab sikl o‘tkazish massivdagi har bir qiymatni ko‘rib chiqishni anglatadi.

myFruits massivi bo‘ylab for sikli yordamida o‘tib, har bir qiymatni quyidagicha chiqarishimiz mumkin:

{{ i }} '{{ el.value }}'

Natija:

Massiv bo‘ylab sikl o‘tkazishning bir nechta usuli bor, lekin for siklidan foydalanish, ehtimol, eng oddiy usul bo‘lib, u barcha dasturlash tillarida qo‘llab-quvvatlanadi, masalan:


myFruits = ['banana','apple','orange']

for fruit in myFruits:
  print(fruit)
const myFruits = ['banana','apple','orange'];

for (let fruit of myFruits) {
  console.log(fruit);
}
String[] myFruits = {"banana", "apple", "orange"};

for (String fruit : myFruits) {
  System.out.println(fruit);
}
string myFruits[] = {"banana", "apple", "orange"};

for (auto fruit : myFruits) {
  cout << fruit + "\n";
}
Misolni ishga tushirish »

Massiv bo‘ylab sikl o‘tkazishning yana bir usuli — indekslar uchun sanovchi o‘zgaruvchili for siklidan foydalanish, masalan:


myFruits = ['banana','apple','orange']

for i in range(len(myFruits)):
  print(myFruits[i])
const myFruits = ['banana','apple','orange'];

for (let i = 0; i < myFruits.length; i++) {
  console.log(myFruits[i]);
}
String[] myFruits = {"banana", "apple", "orange"};

for (int i = 0; i < myFruits.length; i++) {
  System.out.println(myFruits[i]);
}
string myFruits[] = {"banana", "apple", "orange"};
int size = sizeof(myFruits) / sizeof(myFruits[0]);

for (int i = 0; i < size; i++) {
  cout << myFruits[i] + "\n";
}
Misolni ishga tushirish »

Massivlar bo‘ylab sikl o‘tkazib bajarishimiz mumkin bo‘lgan boshqa ishlar: masalan, ismlar massivida "Bob" bor-yo‘qligini aniqlash yoki oziq-ovqat mahsulotlari massivi bo‘ylab sikl o‘tkazib, ular uchun to‘lashimiz kerak bo‘lgan umumiy summani topish.

Quyida ismlar massivi bo‘ylab sikl o‘tkazib, "Bob"ni qidirish misoli keltirilgan.


listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice']

for i in range(len(listOfNames)):
  print(listOfNames[i])
  if listOfNames[i] == 'Bob':
    print('Found Bob!')
    break
let listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice'];

for (let i = 0; i < listOfNames.length; i++) {
  console.log(listOfNames[i]);
  if (listOfNames[i] === 'Bob') {
    console.log('Found Bob!');
     break;
  }
}
String[] listOfNames = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};

for (int i = 0; i < listOfNames.length; i++) {
  System.out.println(listOfNames[i]);
  if (listOfNames[i] == "Bob") {
    System.out.println("Found Bob!");
    break;
  }
}
string listOfNames[] = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
int size = sizeof(listOfNames) / sizeof(listOfNames[0]);

for (int i = 0; i < size; i++) {
  cout << listOfNames[i] + "\n";
  if (listOfNames[i] == "Bob") {
    cout << "Found Bob!\n";
    break;
  }
}
Misolni ishga tushirish »

Yuqoridagi kodda break operatori "Bob" topilishi bilanoq siklni to‘xtatadi. Shuning uchun "Alice" chiqarilmaydi.


Massivning qat’iy ta’rifi

Python yoki JavaScript kabi zamonaviy tillardagi massivlar moslashuvchan, ya’ni massivlar kattalashishi, kichrayishi va turli tipdagi qiymatlarni saqlashi mumkin. C va Java kabi boshqa dasturlash tillari esa massivlarning qat’iyroq aniqlanishini talab qiladi.

Massivning qat’iyroq ta’rifiga ko‘ra, massiv qiymatlar to‘plami bo‘lishidan tashqari, yana:

  • o‘zgarmas uzunlikka ega
  • barcha qiymatlari bir xil ma’lumot tipida bo‘ladi
  • xotirada uzluksiz (ketma-ket) saqlanadi

O‘zgarmas uzunlik massiv uzunligini (massiv ichidagi qiymatlar sonini) o‘zgartirib bo‘lmasligini anglatadi.

Masalan, C dasturlash tilida 4 ta qiymatdan iborat massiv yaratgan bo‘lsangiz, massiv uzunligi (4) o‘zgarmas va uni o‘zgartirib bo‘lmaydi. Shuning uchun massivingiz oxiriga 5-qiymatni qo‘shmoqchi bo‘lsangiz, 5 ta qiymatlik yangi massiv yaratishingiz, unga dastlabki 4 ta qiymatni joylashtirishingiz va 5-qiymatni yangi massivning endi bo‘sh joy bor oxirgi o‘rniga qo‘yishingiz kerak.

Bir xil ma’lumot tipi massivdagi barcha qiymatlar bir xil tipda bo‘lishi kerakligini anglatadi: masalan, ularning hammasi butun sonlar, yoki o‘nli kasr sonlar, yoki belgilar, yoki stringlar, yoki boshqa biror ma’lumot tipida bo‘lishi kerak.

Massivning xotirada uzluksiz saqlanishi qiymatlar bitta xotira blokida birin-ketin, xuddi bir ko‘chada yonma-yon yashaydigan do‘stlar guruhi kabi saqlanishini anglatadi. Massivlar xotirada qanday saqlanishi haqida bu yerda batafsil o‘qing.

Massivlardan qat’iy shaklda foydalanish foydalanuvchiga dastur aslida qanday bajarilishi ustidan to‘liq nazorat beradi, lekin ayrim ishlarni bajarishni qiyinlashtiradi va xatolarga ko‘proq yo‘l ochadi.

C yoki Java kabi tillarda moslashuvchanroq/dinamik massiv imkoniyatlari kerak bo‘lganda, dasturchilar o‘zlari izlayotgan kengaytirilgan dinamik massiv imkoniyatlarini olish uchun ko‘pincha kutubxonalardan foydalanadi.

Bu sahifadagi kod misollarida qiymatlarni qo‘shish va o‘chirish uchun massiv uzunligini dinamik qilish maqsadida Python ro‘yxatlari (List), JavaScript massivlari, Java ArrayList va C++ vektorlaridan foydalandik.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!