Natija:
0 - Dasturlash asoslar

|
Dasturlash asoslar
|
bet | 4/10 | Sana | 14.05.2024 | Hajmi | 0,66 Mb. | | #230790 |
Bog'liq Massiv kurs ishiNatija:
0
1
2
3
4
Endi esa 2 o’lchamli massivga misol ko’ramiz:
int[,] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } };
Vizual ko’rinishda bu massiv:
Natija:
0
1
2
3
4
5
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
For va foreach tsikllaridan foydalanish.
Iteratsiya operatorlari bir yoki bir nechta ko‘rsatmalarni takroran bajaradi. For operatori ma'lum bir mantiqiy ifoda true qiymatini qabul qilguncha matnni bajaradi. Foreach ko‘rsatmasi to‘plamdagi elementlarni sanab chiqadi va har bir element uchun uning matnini bajaradi. Do operatori o‘z matnini bir yoki bir nechta marta shartli ravishda bajaradi. While operatori esa uning tanasini nol yoki undan ko‘p marta shartli ravishda bajaradi.
Iteratsiya ko‘rsatmasi matnida istalgan vaqtda break ko‘rsatmasi yordamida tsikldan chiqish mumkin. Siz continue ko‘rsatmasi yordamida tsiklda keyingi iteratsiyaga o‘tishingiz mumkin.
For ko‘rsatmasi
For operatori ma'lum bir mantiqiy ifoda true qiymatini qabul qilguncha ko‘rsatma yoki ko‘rsatmalar blokini bajaradi. Quyidagi misolda for ko‘rsatmasi butun sonli hisoblagich uchdan kichik bo‘lgunicha tanani bajaradi:
Misol:
for (int i = 0; i < 3; i++)
{
Console.Write(i);
}
// Chiqish:
// 012
For operatorining tarkibiy qismlari:
Boshlang’ich tayinlash qismi, bu faqat bir marta, tsiklga kirishdan oldin bajariladi. Odatda, bu qismda tsikl uchun mahalliy o‘zgaruvchi e'lon qilinadi va boshlang’ich qiymati beriladi. For operatoridan tashqarida e'lon qilingan o‘zgaruvchiga kirish mumkin emas.Misolda boshlang’ich tayinlash qismida butun sonli o‘zgaruvchi e'lon qilinadi va unga boshlang’ich qiymat beriladi:csharpCopy codeint i = 0
Shart qismi, bu keyingi iteratsiyani bajarish kerakligini aniqlaydi. Agar qiymat true bo‘lsa, keyingi iteratsiya bajariladi; aks holda, tsikl tugatiladi. Shart qismi mantiqiy ifoda bo‘lishi kerak.Misoldagi shart qismida hisoblagichning uchdan kichikligi tekshiriladi:csharpCopy codei < 3
Iterator qismi, bu har bir tsikl tanasining bajarilishidan keyin nima bo‘lishini belgilaydi.Misoldagi iterator qismida hisoblagich qiymati oshiriladi:
Tsikl tanasi bu operator yoki operatorlar bloki bo‘lishi kerak.Iterator qismi quyidagilarni o‘z ichiga olishi mumkin:
inkrement yoki dekrement ifodalari, masalan, ++i yoki i--
- tayinlash
- metod chaqirish
- await ifodasi
- yangi obyekt yaratish
Boshlang’ich tayinlash qismida o‘zgaruvchi e'lon qilinmagan bo‘lsa, u erda ham yuqorida sanab o‘tilgan ifodalar qo‘llanilishi mumkin. Quyidagi misolda boshlang’ich tayinlash va iterator qismlarining kamroq keng tarqalgan variantlari ko‘rsatilgan: tashqi o‘zgaruvchiga qiymat tayinlash, metodlarni chaqirish va ikkita o‘zgaruvchining qiymatini o‘zgartirish.
Misol:
int i;
int j = 3;
for (i = 0, Console.WriteLine(Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine("Step: i={i}, j={j}"))
{
//...
}
// Chiqish:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1
For operatorining barcha qismlari majburiy emas. Masalan, quyidagi koddagi cheksiz for tsikli:
Misol:
for ( ; ; )
{
//...
}
Foreach ko‘rsatmasi
Foreach operatori har bir element uchun System.Collections.IEnumerable yoki System.Collections.Generic.IEnumerable interfeysini amalga oshirgan tipning misoli uchun ko‘rsatma yoki ko‘rsatmalar blokini bajaradi.
Misol:
fibNumbers = [0, 1, 1, 2, 3, 5, 8, 13];
foreach (int element in fibNumbers)
{
Console.Write($"{element} ");
}
// Chiqish:
// 0 1 1 2 3 5 8 13
Foreach operatori faqat shu tiplar bilan cheklanmaydi. U har qanday tipning misoli bilan ishlatilishi mumkin, agar quyidagi shartlarga javob bersa:
Tipda parametrsiz GetEnumerator metodining ochiq usuli mavjud bo‘lishi kerak. Bu GetEnumerator metodi tipning kengaytirilgan metodlari bo‘lishi mumkin.GetEnumerator metodining qaytarilgan qiymat tipida parametrsiz MoveNext metodi va Current xususiyati bo‘lishi kerak.Quyidagi misolda System.Span tipining misoli bilan foreach operatoridan foydalanish ko‘rsatilgan, bu tip interfeysni amalga oshirmaydi:
Misol:
Span numbers = [3, 14, 15, 92, 6];
foreach (int number in numbers)
{
Console.Write("{number} ");
}
// Chiqish:
// 3 14 15 92 6
Agar enumeratori Current xususiyati ref T (T bu to‘plam elementi turi) turidagi qaytariladigan qiymatni qaytarsa, iteratsiya o‘zgaruvchisini ref yoki ref readonly modifikatori bilan e'lon qilish mumkin.
Algoritmning 5 ta asosiy xossasi bor: Diskretlilik (Cheklilik). Bu xossaning mazmuni algoritmlarni doimo chekli qadamlardan iborat qilib bo‘laklash imkoniyati mavjudligida. Ya’ni uni chekli sondagi oddiy ko‘rsatmalar ketma-ketligi shaklida ifodalash mumkin. Agar kuzatilayotgan jarayonni chekli qadamlardan iborat qilib qo‘llay olmasak, uni algoritm deb bo‘lmaydi. Tushunarlilik. Biz kundalik hayotimizda berilgan algoritmlar bilan ishlayotgan elektron soatlar, mashinalar, dastgohlar, kompyuterlar, turli avtomatik va mexanik qurilmalarni kuzatamiz. Ijrochiga tavsiya etilayotgan ko‘rsatmalar, uning uchun tushinarli mazmunda bo‘lishi shart, aks holda ijrochi oddiygina amalni ham bajara olmaydi. Undan tashqari, ijrochi har qanday amalni bajara olmasligi ham mumkin.Har bir ijrochining bajarishi mumkin bo‘lgan ko‘rsatmalar yoki buyruqlar majmuasi mavjud, u ijrochining ko‘rsatmalar tizimi (sistemasi) deyiladi. Demak, ijrochi uchun berilayotgan har bir ko‘rsatma ijrochining ko‘rsatmalar tizimiga mansub bo‘lishi lozim.Ko‘rsatmalarni ijrochining ko‘rsatmalar tizimiga tegishli bo‘ladigan qilib ifodalay bilishimiz muhim ahamiyatga ega.
Masalan, quyi sinfning a’lochi o‘quvchisi "son kvadratga oshirilsin" degan ko‘rsatmani tushinmasligi natijasida bajara olmaydi, lekin "son o‘zini o‘ziga ko‘paytirilsin" shaklidagi ko‘rsatmani bemalol bajaradi, chunki u ko‘rsatma mazmunidan ko‘paytirish amalini bajarish kerakligini anglaydi. Aniqlik. Ijrochiga berilayotgan ko‘rsatmalar aniq mazmunda bo‘lishi zarur. Chunki ko‘rsatmadagi noaniqliklar mo‘ljaldagi maqsadga erishishga olib kelmaydi. Odam uchun tushinarli bo‘lgan "3-4 marta silkitilsin", "5-10 daqiqa qizdirilsin", "1-2 qoshiq solinsin", "tenglamalardan biri yechilsin" kabi noaniq ko‘rsatmalar robot yoki kompyuterni qiyin ahvolga solib qo‘yadi.
Bundan tashqari, ko‘rsatmalarning qaysi ketma-ketlikda bajarilishi ham muhim ahamiyatga ega. Demak, ko‘rsatmalar aniq berilishi va faqat algoritmda ko‘rsatilgan tartibda bajarilishi shart ekan. Ommaviylik. Har bir algoritm mazmuniga ko‘ra bir turdagi masalalarning barchasi uchun ham o‘rinli bo‘lishi kerak. Ya’ni masaladagi boshlang‘ich ma’lumotlar qanday bo‘lishidan qat’iy nazar algorim shu xildagi har qanday masalani yechishga yaroqli bo‘lishi kerak. Masalan, ikki oddiy kasrning umumiy mahrajini topish algoritmi, kasrlarni turlicha o‘zgartirib bersangiz ham ularning umumiy mahrajlarini aniqlab beraveradi. Yoki uchburchakning yuzini topish algoritmi, uchburchakning qanday bo‘lishidan qat’iy nazar, uning yuzini hisoblab beraveradi. Natijaviylik. Har bir algoritm chekli sondagi qadamlardan so‘ng albatta natija berishi shart. Bajariladigan amallar ko‘p bo‘lsa ham baribir natijaga olib kelishi kerak. Chekli qadamdan so‘ng qo‘yilgan masala yechimga ega emasligini aniqlash ham natija hisoblanadi. Agar ko‘rilayotgan jarayon cheksiz davom etib natija bermasa, uni algoritm deb atay olmaymiz. Yuqorida ko‘rilgan misollarda odatda biz masalani yechish algoritmini so‘zlar va matematik formulalar orqali ifodaladik.
Lekin algoritm boshqa ko‘rinishlarda ham berilishi mumkin. Biz endi algoritmlarning eng ko‘p uchraydigan turlari bilan tanishamiz. Algoritmning so‘zlar orqali ifodalanishi. Bu usulda ijrochi uchun beriladigan har bir ko‘rsatma jumlalar, so‘zlar orqali buyruq shaklida beriladi.
|
| |