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.
bet3/4
Sana05.06.2020
Hajmi229.99 Kb.
#114689
1   2   3   4
Bog'liq
O

2.2 Blokli lambda-ifodalar


Blokli lambda ifodasi turli xil operatsiyalarni bajarish uchun kengaytirilgan imkoniyatlar bilan tavsiflanadi, chunki uning tanasida bir nechta operatorlarni ko'rsatishga ruxsat beriladi. Blokli lambda ifodasini yaratish juda oson. Buning uchun ifodaning tanasini katta qavs ichiga o'rash kifoya. Bir nechta operatorlardan foydalanish qobiliyatidan tashqari, blokli lambda ifodasi yagona lambda ifodasidan deyarli farq qilmaydi.

Blokli lambda-ifodalarining mazmuni har qanday sonli ifodalardan iborat bo'lishi mumkin ammo, amalda odatda ikkitadan yoki uchtadan ko'p ifoda qo’llanilmaydi.

Action<string> greet = nom =>

{

string greeting = "Salom "+nom+" !";

Console.WriteLine(greeting);

};

greet("Komila");

Quyida butun son qiymatining faktorialini hisoblash va qaytarish uchun blokli lambda ifodasini ishlatishga misol keltirilgan.



using System;

namespace Lambda_ifodalar
{
    
delegate int IntOP (int end);
    
class Lambda
    {
        
static void Main(string[] args)
        {
            IntOP fakt =(
int n )=> {
            
int r = 1;
            
for(int i=1; i <= n; i++)
            r = i * r;
            
return r;
            };
            
Console.WriteLine("Sonni kiriting: ");
            
int a=int.Parse(Console.ReadLine());
            
Console.WriteLine(a+"!="+fakt(a));
            
Console.WriteLine();
            
Console.ReadKey(true);
        }
    }
}


Ushbu kodni bajarishda quyidagi natija olinadi.

Yuqoridagi misolda, r o'zgaruvchisi blokli lambda-ifoda tanasida e'lon qilinganiga e'tibor bering, for sikli tashkil qilingan va return operatori ishlatiladi. Ushbu elementlarning barchasini blokli lambda ifodasida qo’llash qulay va bu borada, bu anonim usulga juda o'xshash. Shuning uchun, eski kodni yangilashda ko'plab anonim usullarni blokli lambda ifodasiga aylantirish mumkin.



blokli lambda ifodasini ko'rsatadigan yana bir misolni ko'rib chiqing.

using System;
namespace Lambda
{
    
delegate string StrMod(string s);
    
class UseStatementLambdas
    {
        
static void Main() 
        {
            
//Bo'shliqlarni defis bilan almashtirish.
            StrMod ReplaceSpaces = s => {
            
Console.WriteLine("Bo'shliqlarni defis bilan almashtirish.");
            
return s.Replace(' ',  '-');
            };
            
//  Bo'shliqlarni olib tashlash.
            StrMod RemoveSpaces = s => {
            
string temp ="";
            
int i;
            
Console.WriteLine("Bo'shliqlarni o'chirish.");
            
for(i=0; i < s.Length; i++)
            
if (s[i]  != ' ')  temp += s[i];
            
return temp;
            };
            
// Satrni teskari tartibda yozish
            StrMod Reverse = s => {
            
string temp = "";
            
int i, j;
            
Console.WriteLine("Satrni teskari tartibda yozish:");
            
for(j=0, i=s.Length-1; i >= 0; i--, j++)
            temp += s [i];
            
return temp;
            };
            
string str;
            
// Delegatlardan foydalanib lambda iboralariga kiring.
            StrMod strOp = ReplaceSpaces;
            str = strOp(
"Farg'ona davlat universiteti.");
            
Console.WriteLine("Natija satri: " + str);
            
Console.WriteLine();
            strOp = RemoveSpaces;
            str = strOp(
"Farg'ona davlat universiteti.");
            
Console.WriteLine("Natija satri: " + str);
            
Console.WriteLine();
            strOp = Reverse;
            str = strOp(
"Farg'ona davlat universiteti.");
            
Console.WriteLine("Natija satri: " + str);
            
Console.ReadKey();
        }
    }
}


Dastur natijasi:



Download 229.99 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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