k butun son va nol bo‘lmagan butun sonlar ketma ketligi berilgan. Uning tugaganlik simvoli nol soni. Ketma ketlikdagi k dan katta birinchi uchragan son, agar bunday son bo‘lmasa nol chiqarilsin
23.06.2022
Mavzu: Bir o’lchovli massivlar
Dasturlash tillarida 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. 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 xotirada ketma-ket joylashgan, bir tipdagi o‘zgaruvchilar guruhidir. Alohida bir o‘zgaruvchini ko‘rsatish uchun massiv nomi va kerakli o‘zgaruvchi indeksini yoziladi.
Ta’rif: Bir turga mansub bo‘lgan yagona nom bilan saqlanuvchi tartiblangan ma’lumotlar majmuasi massiv deyiladi. 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‘ladi. Bir o‘lchovli massivlar Odatda massivlar zarurat, katta hajmdagi tartiblangan, lekin chekli elementlarga oid masalalarni hal etishda yuzaga keladi. Dastur ishlatilishi davomida massivlar aniq nomga ega bo‘lishi va uning elementlari ma’lum bir turda bo‘lishi kerak. Bir o‘lchovli massivlar kompyuter xotirasiga quyidagi shaklda saqlanadi Massiv tarkibida elementlar mavjud bo‘ladi. Massivning eng ko‘pi bilan ketishi mumkin bo‘lgan elementlar soni uning o‘lchamini bildiradi. Massivning elementi turgan o‘rni uning indeksi deyiladi. Massivning elementiga uning indeksi orqali murojaat qilinadi. Massivning indeksi sifatida butun sonlar xizmat qiladi. Har bir massiv o‘zining individual nomiga ega bo‘lishi kerak, ya’ni bir xil nomdagi massivlar bo‘lmaydi. Ularning nomi oldin e’lon qilingan oddiy o‘zgaruvchi nomi bilan ustma-ust tushmasligi kerak.
Statik massivlarni e’lon qilishning umumiy ko‘rinishi quyidagicha:
[]={boshlang‘ich qiymatlar} Bunda {boshlang‘ich qiymatlar} albatta bo‘lishi kerak. Misollar:
int []A={1,4,3,1};
string[] B = { “olma”, “gilos”, “anor”};
double[] C = { 0.005, 1.234, 12.5, 13.5, 10.6 };
Yuqoridagi massivlarda massivning o‘lchami uning initsializatsiya qismida qatnashgan elementlar soni bilan aniqlanadi. C# tilida xuddi C++ da bo‘lgani kabi element indeksi 0 dan boshlanadi. A[0] indeksli element 1 ga teng, B[1] indeksli element esa “gilos” ga teng va h.k.
Aytib o‘tganimizdek, C# tilida massivlar xotiradan unumli foydalanish maqsadida massivlarni dinamik tarzda e’lon qilishga kelishib olingan.
Dinamik tarzda massivni e’lon qilishning umumiy ko‘rinishi quyidagicha: [] =new [o‘lcham]
Bu yerda tur-massiv elementining muayyan turini bildiradi. Element turi massiv tashkil etuvchi har bir elementning ma’lumot turini belgilaydi. Tur bilan birga kvadrat qavslar ham ishlatiladi. Ular bir o‘lchamli massiv e’lon qilinganligini ko‘rsatadi. massiv elementlari sonini belgilaydi. new operatori ga mos ravishda xotiradan joy ajratadi. Dinamik massivlarni e’lon qilishga doir misollar:
n = Convert.ToInt32(Console.ReadLine());
int[] m1 = new int[10];
float[] m2 = new float[100];
double[] m3 = new double[n];
Sinf obyektini yaratishda bo‘lgani kabi, yuqoridagi massivni quyidagicha ham yozish mumkin.
Masalan:
double[] m3;
m3 = new double[10];
m1 va m2 nomli massivlarning elementlari uchun 10 va 100 ta joy ajratilgan. Ular ham dinamik massiv hisoblanadi. m3 massiv uchun xotiradan qancha joy ajratish foydalanuvchining o‘ziga havola qilingan, ya’ni n o‘zgaruvchisi klaviaturadan kiritiladi, bu o‘zgaruvchi qiymati esa m3 massiv o‘lchami sifatida qabul qilinadi. m3 massiv dinamik massivga yorqin misoldir.
Dinamik massiv o‘lchami ham statik massiv kabi aniqlanishi lozim, faqat bunda u dastur ishlashi davomida aniqlanishi bilan static massivdan farq qiladi. Indekslar massiv elementlariga murojaat qilish uchun ishlatiladi. Indeks massivdagi element sonini bildiradi .Massivdagi to‘rtinchi elementga murojat qilish uchun biz 3 indeksidan foydalanishimiz kerak. Massiv elementlarining qiymatlarini olish va o‘rnatish uchun indekslardan foydalanamiz.
int[] nums=new int [5];
nums[0]=1;
nums[1]=2;
nums[2]=3; o‘lcham=5
nums[3]=5;
nums[4]=7;
Console.ReadLine(nums[3]); //5
Bizda faqat 5 ta element uchun belgilangan massiv mavjud bo‘lgani uchun, masalan oltinchi elementni qo‘llay olmaymiz nums[6]=8;. Agar ushbu ifodani yozsak IndexOutOfRangeException turidagi xatolikni keltirib chiqaradi.
Massivni initsializatsiya qilish
Quyida bir o‘lchovli massivni initsializatsiya qilishning umumiy shakli keltirilgan:
[] = {val1, val2, val3, ..., valN};
Bu erda val1-valN navbat bilan, chapdan o‘ngga va indeks tartibida berilgan dastlabki qiymatlarni bildiradi. Massiv boshlang‘ich qiymatlarini C# da saqlash uchun yetarli miqdordagi xotira avtomatik ravishda ajratiladi va new operatordan foydalanish zarurati yo‘qoladi. Misol sifatida, quyida arifmetik o‘rtacha hisoblaydigan dasturning takomillashtirilgan versiyasi keltirilgan.
using System;
class Average
{
static void Main()
{
int[] nums = { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };
int avg = 0;
for (int i = 0; i < 10; i++)
avg = avg + nums[i];
avg = avg / 10;
Console.WriteLine("O‘rtacha: " + avg);
}
}
Massivni ishga tushirishda siz new operatorini ham ishlatishingiz mumkin, garchi bunga alohida ehtiyoj bo‘lmasa ham. Masalan, quyida keltirilgan kod to‘g‘ri deb hisoblanadi, ammo yuqoridagi dasturda nums massivini initsializatsiya qilish uchun ortiqcha hisoblanadi.
int[] nums = new int[] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49};
Agar new massiv mavjud bo‘lgan qatorga mos keladigan o‘zgaruvchiga tayinlangan bo‘lsa, uning ko‘payishiga qaramay, new operatori bilan massivni initsializatsiya qilish yaxshiroq bo‘ladi.
Masalan:
int[] nums;
nums = new int[] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };
Bunday holda, nums o‘zgaruvchisi birinchi qatorda e’lon qilinadi va ikkinchisida boshlanadi
Topshiriq:
Masala:
n o‘lchamli (n>0) a massiv berilgan. Xuddi shunday o‘lchamli elementlari quyidagi ko‘rinishda aniqlanadigan yangi b massiv hosil qilinsin.
24.06.2022
Mavzu: Ko’p o’lchovli massivlar.Metodlar.Metodlarni e’lon qilish.Parametrli metodlar.Metodlardan qiymat qaytarish.
Do'stlaringiz bilan baham: |