O’zbekiston respublikasi oliy va o’rta maxsus ta’lim vazirligi farg’ona davlat universiteti kurs ishi mavzu: C# dasturlash tilida dasturlashda lambda-ifodadan foydalanish bajardi



Download 229,99 Kb.
bet7/13
Sana31.12.2021
Hajmi229,99 Kb.
#276575
1   2   3   4   5   6   7   8   9   10   ...   13
Bog'liq
O’zbekiston respublikasi oliy va o’rta maxsus ta’lim vazirligi f

using System;
delegate int Incr(int v);
namespace Lambda
{
    delegate bool IsEven(int v);
    class SimpleLambdaDemo
    {
        static void Main()
        {
            Incr incr = count => count + 2;
            Console.WriteLine("Lambda ifodasida incr dan foydalanish : ");
            int x = -10;
            while(x <= 0)
            {
                Console.Write(x + " ");
                x = incr(x);
            }
            Console.ReadKey();
        }
    }
}
Natija quyidagicha:


  • using System;
    delegate int Incr(int v);
    namespace Lambda
    {
        delegate bool IsEven(int v);
        class SimpleLambdaDemo
        {
            static void Main()
            {
                IsEven isEven = n => n % 2 == 0;
                Console.WriteLine("Lambda ifodasida IsEven dan foydalanish : ");
                for(int i=1; i <= 10; i++)
                if(isEven(i)) Console.Write(i + " ");
                Console.ReadKey();
            }
        }
    }

    Yuqoridagi birinchi dasturda, incr delegatsiyasining namunasiga yagona lambda iborasi berilgan, bu hisoblash natijasi parametrning qiymatini 2 ga oshiradi. Ushbu ifoda Incr vakiliga tayinlanishi mumkin, chunki u ushbu vakilning deklaratsiyasiga mos keladi.

    Ikkinchi dasturda isEven delegatsiyasiga (agar unga berilgan argument mos bo'lsa) mantiqiylikni qaytaradigan ifoda beriladi, aks holda mantiqiy ifoda yolg’on qiymat qabul qiladi. Shuning uchun, bu lambda ifodasi isEven deklaratsiyasiga mos keladi.

    Yuqoridagilar bilan bog'liq holda, oqilona savol tug'iladi: kompilyator lambda ifodasida ishlatiladigan ma'lumot turini qanday biladi, masalan, vakilga berilgan lambda ifodasidagi hisoblash parametrining int turi haqida ma'lumotni qanday oladi?

    Bu savolga javob quyidagicha: kompilyator parametr turi va ifoda vakili turiga qarab baho beradi va natijasining turi to'g'risida xulosa chiqaradi. Shuning uchun, lambda ifodasining parametrlari vakilning qaytish qiymatiga va qaytarilish qiymati parametrlarga mos kelishi kerak.

    Demak, siz lambda ifoda parametr turini aniq ko'rsatishingiz kerak. Buning uchun ma'lumotlar turiga ma'lum bir nomni kiritish kifoya. Misol sifatida, quyida delegatni e'lon qilishning yana bir usuli mavjud:

    Incr incr = (int x) => x + 2;

    Ko'rib turganingizdek, o’zgaruvchi endi aniq parametr sifatida e'lon qilingan. Qavslar qo'llanilishiga e'tibor bering. Endi ular kerak! (Qavslar faqat bitta parametr ko'rsatilgan bo'lsa va uning turi aniq ko'rsatilmagan bo'lsa foydalanilmasligi mumkin.)

    Yuqoridagi dasturlardagi ikkala lambda ifodalarida bitta parametr ishlatilgan, ammo umuman lambda ifodalari nolni o'z ichiga olgan har qanday parametrlarga ega bo'lishi mumkin. Agar lambda ifodasida bir nechta parametr ishlatilsa, ular qavs ichiga o'ralgan bo'lishi kerak. Quyida qiymat ma'lum bir oraliqda ekanligini aniqlash uchun lambda ifodasini ishlatishga misol keltirilgan.

    (min, max, qiymat) =>qiymat >= min && qiymat <= max;

    Va bu qanday qilib delegat turi ushbu lambda ifodasi bilan mos kelishi e'lon qilinadi.

    delegate bool Oraliq(int min, int max, int qiymat);

    Shuning uchun InRange delegatining namunasi quyidagicha yaratilishi mumkin.

    Oraliq oraliq = (min, max, qiymat) => qiymat >= min && qiymat <= max;

    Shundan so'ng, yagona lambda ifodasi quyida ko'rsatilgandek bajarilishi mumkin.

    if(oraliq(1, 5, 3)) Console.WriteLine(


    "3 soni 1 dan 5 gacha bo’lgan oraliqda.");


    Download 229,99 Kb.

    Do'stlaringiz bilan baham:
  • 1   2   3   4   5   6   7   8   9   10   ...   13




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
    ma'muriyatiga murojaat qiling

    kiriting | ro'yxatdan o'tish
        Bosh sahifa
    юртда тантана
    Боғда битган
    Бугун юртда
    Эшитганлар жилманглар
    Эшитмадим деманглар
    битган бодомлар
    Yangiariq tumani
    qitish marakazi
    Raqamli texnologiyalar
    ilishida muhokamadan
    tasdiqqa tavsiya
    tavsiya etilgan
    iqtisodiyot kafedrasi
    steiermarkischen landesregierung
    asarlaringizni yuboring
    o'zingizning asarlaringizni
    Iltimos faqat
    faqat o'zingizning
    steierm rkischen
    landesregierung fachabteilung
    rkischen landesregierung
    hamshira loyihasi
    loyihasi mavsum
    faolyatining oqibatlari
    asosiy adabiyotlar
    fakulteti ahborot
    ahborot havfsizligi
    havfsizligi kafedrasi
    fanidan bo’yicha
    fakulteti iqtisodiyot
    boshqaruv fakulteti
    chiqarishda boshqaruv
    ishlab chiqarishda
    iqtisodiyot fakultet
    multiservis tarmoqlari
    fanidan asosiy
    Uzbek fanidan
    mavzulari potok
    asosidagi multiservis
    'aliyyil a'ziym
    billahil 'aliyyil
    illaa billahil
    quvvata illaa
    falah' deganida
    Kompyuter savodxonligi
    bo’yicha mustaqil
    'alal falah'
    Hayya 'alal
    'alas soloh
    Hayya 'alas
    mavsum boyicha


    yuklab olish