Malakaviy amaliyot ishi kompyuter ilmlari va dasturlash texnologiyalari talaba: anazbekova hilola



Yüklə 42,96 Kb.
səhifə2/3
tarix25.12.2023
ölçüsü42,96 Kb.
#195290
1   2   3
Amaliyot

char c, s;
belgili o’zgaruvchilar apostraf ichida yoziladi. a=’q’; c=’*’; s=’/’;
char toifasini oshkor ravishda butun toifaga o'tkazish orqali, berilgan belgiga mos Unicode kodini aniqlash mumkin.
C# da satr deb - satr oxiri ('\0') belgisi bilan tugaydigan belgilar massiviga aytiladi. Demak C# da satr - birinchi belgiga o'rnatilgan ko'rsatkich ekan. Chunki massiv ham, birinchi elementiga o'rnatilgan ko'rsatkichdir.

2-masala
1 dan 1999 gacha bo‘lgan butun n sonining Rim raqamlaridagi ko‘rinishi chop qilinsin.


Dasturi:
using System
class Program
{
static void Main(string[] args)
{
Console.Write("Iltimos, 1 dan 1999 gacha bo'lgan raqam kiriting: ");
int number = Convert.ToInt32(Console.ReadLine());

if (number >= 1 && number <= 1999)


{
string romanNumerals = ConvertToRoman(number);
Console.WriteLine("rim raqamida " + "\n" + romanNumerals);
}
else
{
Console.WriteLine("Noto'g'ri kirish! Raqam 1 dan 1999 gacha bo'lishi kerak.");
}
Console.ReadKey();
}

static string ConvertToRoman(int number)


{
string[] romanNumerals = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int[] arabicValues = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };

string roman = " ";


for (int i = 0; i < romanNumerals.Length; i++)


{
while (number >= arabicValues[i])
{
roman += romanNumerals[i];
number -= arabicValues[i];
}
}

return roman;


}
}
}
Natija:
Iltimos, 1 dan 1999 gacha bo`lgan raqam kiriting: 18
Rim raqamida
XVIII

3-Mavzu: Rekursiv va qayta yuklovchi metodlar bilan ishlash


Rekursiya — Funksiya oʻziga oʻzi toʻgʻridan-toʻgʻri yoki qandaydir vosita orqali murojaat qilish jarayoniga rekursiya deyiladi va bunday funksiya rekursiv funksiya deb ataladi. Rekursiv funksiya oʻzini — oʻzi chaqirgani uchun dasturchilar orasida quyi oldin rekursiya nimaligini tushunish kerak“ — Stephen Hawking. Rekursiya funksional dasturlashning asosiy elementlaridan hisoblanadi. Rekursiya deyarli hamma joyda ishlatiladi. Baʼzi masalalarning  yechimi juda ham uzun boʻlib ketishi mumkin. Rekursiya esa kodni bir necha barobar qisqartirib berishi mumkin. Aksariyat tuzilmalar va algoritmlarni rekursiyasiz tasavvur qilib boʻlmaydi. TreeGraphHeapQuick SortMerge Sort, … Bu ro'yhatni juda uzoq davom ettirish mumkin. Ayniqsa, murakkab tuzilmalar boʻlgan Tree va Graphlarda rekursiya har qadamda uchraydi.

Kamchiliklari



  • Rekursiya har doim xotiradan qoʻshimcha joy talab qiladi.

  • Rekursiv yechimda xato qilish ehtimoli yuqori, chunki rekursiya juda ham chalgʻituvchi.

  • Rekursiv yechimni xatosini topish qiyin.

  • Murakkab algoritmni hisoblash qiyin.

C# da qayta yuklovchi metodlar yoki rekursiv metodlar, bir necha marta o'zini chaqirgandagi odatiy metodlarniki bilan o'xshash bo'lib, shunchaki asosiy maqsadi shunchaki o'tish jarayonida o'zini chaqirishni ortga surishdir.
Rekursiv metodlar, nomsiz va nomli xususiyatlarni o'z ichiga olgan bo'lishi mumkin. Bunda qayta yuklovchi muqobillanish (recursive descent) algoritmi ishlatiladi. Rekursiv metodlar, odamlar va shaxslar to'plami bo'ylab hodisalar, ro'yxatlardagi elementlarga ko'proq ma'lumot olish va boshqa ustuvor faoliyatlar uchun yaxshi bo'lib keladi.
Rekursiv metodlar, ko'plab ko'pjarli algoritmlarda ishlatiladi; bunga misol, matematik xisobot, qatorli o'yin, fayl tahlili va shunga o'xshash dasturlarda. Rekursiv metodlar faqat ko'rsatilgan sharoitlarga muvofiqlik ko'rsatishi mumkin. Sharoitlar na to'g'ri ko'rsatilganda, recursion "son to'kishi" (stack overflow) yoki "qayta ishlayotgan metod" xatoliklariga olib kelishi mumkin va dastur buzilishi mumkin.
Diqqatli ishlovchi, sharofatli kod yozishni o'rganishdan boshlashni xohlaydi. Sizda rekursiv metodlarni yozadigan mualliflar ko'pligi bor va ularning yaxshi va yomon taraflarini kuzatib borish uchun siz rasmiy doklarning yanada ko'pini o'qib chiqishlaringizga kerak bo'ladi.

3-masala
Nol bilan tugaydigan butun sonlar ketma-ketligi berilgan. Birinchi navbatda ketma-ketlikning barcha manfiy sonlari, so‘ngra musbat sonlar chop qilinsin (ixtiyoriy tartibda).


Dastur:
int[] sonlar = { -2, 5, -10, 8, -3, 0, 7 };

List manfiySonlar = new List();


List musbatSonlar = new List();

foreach (int son in sonlar)


{
if (son < 0)
manfiySonlar.Add(son);
else
musbatSonlar.Add(son);
}
manfiySonlar.AddRange(musbatSonlar);

foreach (int son in manfiySonlar)


{
Console.Write( son +"," +" ");
}
Console.ReadKey();
}
}
}
Natija:
-2, -10, -3, 5, 8, 0, 7,

4-Mavzu: Kortejlar. Strukturalar


Kortejlar C# ning 7.0 versiyasidan boshlab qo'shilgan bo’lib, qiymatlar to'plami bilan ishlashda qulaylik yaratadi. Kortej qavs ichiga olingan qiymatlar to'plamini ifodalaydi:
var tuple = (5, 10);
Bu yerda, ikkita 5 va 10 qiymatga ega bo'lgan tuple korteji aniqlangan. Keyinchalik ushbu qiymatlarning har biriga Item[kortej_maydoni_tartib_raqami] nomi orqali murojaat qilish mumkin. Masalan:
static void Main(string[] args)
{ var tuple = (5, 10);
Console.WriteLine(tuple.Item1); // 5
Console.WriteLine(tuple.Item2); // 10
tuple.Item1 += 26;
Console.WriteLine(tuple.Item1); // 31
Console.Read();
}
Bu yerda kortej turi oshkormas ko’rinishda aniqlangan.
Kortejlar metodga parametr sifatida uzatilishi mumkin, ular funktsiyani qaytarish natijasi bo'lishi mumkin yoki umuman boshqacha ishlatilishi mumkin.
Masalan, kortejlarning eng ko’p qo’llaniladigan holatlardan biri bu metodlarning ikki va undan ortiq qiymat qaytarishidir. Metod kortejlarsiz faqat bitta qiymat qaytarishini oldingi darslarda ko’rib chiqilgan. Va kortejlar ushbu vazifani bajarishning eng maqbul usulidir.
Sinflar ko’rsatkich hisoblanadi. Bu shuni anglatadiki, sinflarning namunalariga faqat ko’rsatkich (havola) orqali kirish mumkin. C# da sinflarga o'xshash berilganlar turi aniqlangan, ammo sinflardan farqli o'laroq, bu o'lchovli turdir. (размерный тип). Ushbu tur strukturadir.
Struktura o'lchovli tur bo'lganligi sababli, struktura namunasi elementlarning qiymatini saqlaydi, ularga havolalar emas va ular stekda joylashgan bo'ladi, iuyumda emas. Shu sababli, struktura voris ierarxiyasida ishtirok eta olmaydi, faqat interfeyslarni amalga oshirishi mumkin.
Struktura spetsifikatorlari xuddi sinf spetsifikatorlari kabi bir xil ma'noga ega. Biroq, kirish xususiyatlaridan faqat public, internal va shuningdek, ichma-ich joylashgan strukturalar uchun private spetsifikatoridan foydalanishga ruxsat beriladi.
Bundan tashqari, strukturalar abstrakt bo'lishi mumkin emas, chunki ulardan kelishuv bo'yicha voris olib bo’lmaydi.
Struktura tomonidan amalga oshirilgan interfeyslar vergul bilan ajratiladi.
Stuktura tanasi tarkibiga quyidagilar kirishi mumkin: konstantalar, maydonlar, konstruktorlar, metodlar, xossalar, indeksatorlar, operatorli metodlar, ichma-ich turlar va hodisalar.
Strukturani aniqlashda faqat statik maydonlarga qiymat o'rnatish mumkin.
Sinflar bilan bir qatorda, strukturalar C # da berilganlar turlarini yaratishning yana bir usulini taqdim etadi. Bundan tashqari, int, double va boshqa turlar kabi ko'plab primitiv turlar aslida strukturalardir. Sinflar singari, strukturalar ham holatni o'zgaruvchi sifatida saqlashi va xatti-harakatni metod sifatida belgilashi mumkin.
Sinf kabi struktura ham konstruktorlarni aniqlay oladi. Struktura ob'ekti sinfning har qanday ob'ekti kabi new amali yordamida yaratilishi mumkin:
Bunda, barcha maydonlarni nol qiymati bilan initsializatsiya qiladigan kelishuv bo'yicha konstruktor chaqiriladi.

Yüklə 42,96 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin