Sobirjonov O'tkirbek
Download 88.66 Kb.
|
dotnet
- Bu sahifa navigatsiya:
- Statik
- [] =new [o’lcham]
- IndexOutOfRangeException
- System
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: 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. 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: Bu yerda new operatori n = Convert.ToInt32(Console.ReadLine()); int[] M1 = new int[10]; float[] M2 = new float[100]; double[] M3 = new double[n]; 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 anqlanishi bilan static massivdan farq qiladi. Indekslar massiv elementlariga murojat qilish uchun ishlatiladi. Indeks massivdagi element sonini bildiradi .Massivdagi to’rtinchi elementga murojat qilish uchun biz 3 indeksidan foydalanishimiz kerak. Misol uchun :num[3]. Massiv elementlarining qiymatlarini olish va o’rnatish uchun indekslardan foydalanamiz. int[] nums=new int [4]; nums[0]=1; nums[1]=2; nums[2]=3; nums[3]=5; Console.ReadLine(nums[3]); //5 Va bizda faqat 4 ta element uchun belgilangan massiv mavjud bo’lgani uchun , masalan oltinchi elementni qo’llay olmaymiz nums[5]=5;. Agar biz buni qilishga harakat qilsak biz IndexOutOfRangeException-ni olamiz. Statik massivlar elementlar oldindan aniqlanadi. Buning uchun sikl operatorlariga murojaat qilamiz. Masalan, quyidagi misolda dinamik massivga qiymat berish hamda uning elementlarini chop etish amallar ko’rsatilgan. Biz massiv elementlari bilan ishlashimiz uchun for sikl operatori kerak buladi. Bu haqida yetarlicha bilimga ega bo’lmasayiz orqali o’tsangiz Starter bulimida Suxrob Xayitmurodov yetarlicha malumot bergan. Agar for sikl operatori haqida malumotga ega bulsayiz davom etamiz. using System; internal class ArrayExample { private static void Main() { int[] A = new int[10]; int i; for (i = 0; i < 10; i = i + 1) A[i] = i; for (i = 0; i < 10; i = i + 1) Console.WriteLine(‘A[‘ + i + ’]: ’ + A[i]); } } Bu dasturda A massivning elementlari sifatida i ning qiymatlari kelmoqda. Xuddi shunday massiv elementlarini klaviatura orqali ham kiritish mumkin. Buning uchun quyidagi kodni ko’raylik: using System; internal class ArrayExample { private static void Main() { int[] A = new int[10]; int i; for (i = 0; i < 10; i = i + 1) A[i] = Convert.ToInt32(Console.ReadLine()); for (i = 0; i < 10; i = i + 1) Console.WriteLine(‘A[‘ + i + ’]: ’ + A[i]); } } Massiv elementlari qiymatlaridan foydalanishga doir quyidagi sodda misolni ko’rib chiqaylik. Men Shahbozga judayam qiziqarli matematik masala berdim. Masala sharti quyidagicha: Men unga 10 ta son aytaman ularning yig’indisini topib 10 ga bo’lishi kerak buladi. Keyin Shahboz menga shu kodni yozib berdi. Sizham bu kodni o’z kompyuteringizda tekshirib kuring. using System; internal class Average { private static void Main() { int[] A = new int[10]; int i; double S = 0; Console.WriteLine("Sonlarni kiriting"); for (i = 0; i < 10; i = i + 1) A[i] = Convert.ToInt32(Console.ReadLine()); for (i = 0; i < 10; i++) S += A[i]; S = S / 10; Console.WriteLine(S); } } Massivlar bilan ishlaganda uning o’lchami chegarasidan chiqib ketmaslik lozim. Agar bu holat yuz bersa C# kompilyatori IndexOutOfRangeException xatoligi haqida xabar beradi. Bu xatolikni siz ham sinab kurmoqchi bulsangiz quyidagi kodni kiritib , ishlatib kuring: using System; internal class ArrayErr { private static void Main() { int[] sample = new int[10]; int i; // Chegaradan chiqish holati yuz bermoqda for (i = 0; i < 100; i = i + 1) sample[i] = i; } } Massivlar haqida boshlang’ich malumotlarga ega bo’ldingiz degan umiddaman. Funksiyalarda massivdan foydalanish Faxriddin Xushnazarov Hozir biz siz bilan funksiyalarda massivlardan foydalanishning bir nechta hollarini ko’rib chiqamiz. Keling Python dasturlash tilidagi range() funksiyasiga o’xshash funksiyani biz C# dasturash tilida tuzib ko’ramiz. Izoh: range() – asosan ikkita argument qabul qiladi aytaylik n va m, ushbu funksiyaning vazifasi n dan m gacha bo’lgan butun sonli array ni qaytaradi(m kirmaydi). static int[] Range(int n, int m) { int[] range = new int[m - n]; int k = 0; for(int i=n; i return range; } Bu yerda biz Range funksiyasining type sifatida int[] massiv typeni berdik. Endi ushbu funksiyadan foydalanib n dan m gacha bo’lgan butun sonlar yig’indisini hisoblaymiz: using C=System.Console; using System.Linq; public class Program { public static int[] Range(int n, int m) { int[] range = new int[m - n]; int k = 0; for(int i=n; i return range; } public static void Main(string[] args) { int n,m; C.Write("n="); n = int.Parse(C.ReadLine()); C.Write("m="); m = int.Parse(C.ReadLine()); C.WriteLine($"{n} dan {m} gacha bo'lgan yig'indi={Range(n,m+1).Sum()}"); } } Endi funksiyaning argumentlariga massivlardan foydalanishni ko’rsak. Funksiyaning argumentiga massiv ham xuddi o’zgaruvchidek ishlatiladi Misol uchun: Keling biz System nomlar fazosidagi Array classining Sort() metodiga o’xshash funksiya yaratib ko’ramiz. Izoh: Array.Sort metodinig argumentiga massivni bersak ushbu metod bizga bergan massiv elementlarini o’sish tartibida tartiblaydi. Biz faqat int typedagi massivni sort qiladigan funksiya yozamiz! static void Sort(ref int[] massiv) { int x; for(int i=0; i if (massiv[j] < massiv[i]) { x = massiv[i]; massiv[i] = massiv[j]; massiv[j] = x; } } } Xop bu funksiyani endi ishlatib ko’ramiz: static void Main(string[] args) { int[] mas = { 5, 4, 2, 1, 7, 45, 41, 6, 3, 4 }; Sort(ref mas); foreach (int x in mas) Console.Write(x+", "); } Natija: 1, 2, 3, 4, 4, 5, 6, 7, 41, 45, Endi biz ushbu funksiya yordamida massivdagi eng katta va eng kichik elementni ham topishimiz mumkin: static void Main(string[] args) { int[] mas = { 5, 4, 2, 1, 7, 45, 41, 6, 3, 4 }; Sort(ref mas); Console.WriteLine($"eng kichigi: {mas[0]}, eng kattasi: {mas[mas.Length - 1]}"); } Natija: eng kichigi: 1, eng kattasi: 45 Demak biz funksiyalarning type va ularning argumentlarida bemalol massiv typelaridan foydalana olar ekanmiz. Ko'p o'lchamli massiv Mirzayev Bahodirjon Massivlar daraja yoki o'lchovlar soni kabi tushuncha bilan tavsiflanadi. Massivlar 1, 2, 3 yoki n o’lchamli bo’lishi mumkin. Ko’p o’lchmali massivlarni 2 o’lchamli massivlar misolida ko’rib boramiz Bir o’lchovli massivlarni bitta gorizontal qator kabi tasavvur qilishimiz mumkin, misol uchun: int[] nums1 = new int[] { 0, 1, 2, 3, 4}; Vizual ko’rinishda bu massiv: image Endi esa 2 o’lchamli massivga misol ko’ramiz: int[,] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } }; Vizual ko’rinishda bu massiv: image Ko’p o’lchamli massivlarni e’lon qilish uchun kvadrat qavs ichiga vergul qo’yiladi, yani [,] ikki o’lchamli massiv, [,,] uch o’lchamli massiv va hokazo. int[,] arr2d; // ikki o’lchamli massiv int[,,] arr3d; // uch o’lchamli massiv int[,,,] arr4d; // to’rt o’lchamli massiv int[,,,,] arr5d; // besh o’lchamli massiv C# 32 o’lchovgacha bo’lgan massivlarni qo’llab quvvatlaydi. Download 88.66 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling