1-Mavzu. Dasturlashda delegatlar, hodisalar, lyamda ifodalardan foydalanish. Saralash va izlash algoritmlari bilan tanishish


Download 0.92 Mb.
bet2/5
Sana05.05.2023
Hajmi0.92 Mb.
#1428336
1   2   3   4   5
Bog'liq
1-mavzu

public static double Add(double x, double y) {return x+y;}
public static double Divisor(double x, double y) {return x-y;}
public static double Multiple(double x, double y) {return x*y;}
public static double Division(double x, double y) {return x/y;} } }

Natija:


Delegatlar yordamida Satrlar bilan ishlashga doir misol. Bunda probellar o`rniga # belgisini qo`yish dasturini tuzamiz.





Bunday ko`rinishga keltirish uchun kerakli buyruq va algoritmlar bajariladi va dasturi tuziladi:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace Delegatlar
{
/// <summary>
/// Description of MainForm.
/// </summary>
// Delegatni e'lon qilish:
delegate string Satr(string s);
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
// Probellarni # belgisi bilan almashtirish.
static string Probel(string s) 
{
return s.Replace(' ', '#');
}
void MainFormLoad(object sender, EventArgs e)
{
label1.Text="Bu yerda probel # belgisi bilan almashtiriladi.";
label2.Text="Natija:";
button1.Text="OK";
}
void Button1Click(object sender, EventArgs e)
{
Satr a = new Satr (Probel);
textBox2.Text=a(textBox1.Text);
}
Natija:


Lyamda ifodalar. Anonim metodlarning ahamiyati beqiyosligiga qaramay, ularning o’rnini yanada takomillashgan instrument lyamda ifoda egalladi. Umuman olganda, lyamda ifoda anonim metodning g’oyasini takomillashtiradi va ayni vaqtda anonim funksiyani yaratish uchun zarur hisoblanadi. Lambda ifoda mutlaqo yangi sintaksisga asoslangan va anonim metodga yanada samarali alternativa bo’lib xizmat qiladi.
Boshqacha aytganda, lyambda ifoda - bu anonim funksiyani
yaratishning yana bir usuli. Shu sabab ham lyambda ifoda delegatga
o’zlashtirilishi mumkin. Lyambda ifoda o’ziga ekvivalent anonim metodga
qaraganda samaraliroq deb hisoblanganligi sababli, aksariyat hollarda unga
ustunlik berish tavsiya etiladi. Lyambda ifoda yakkalik va blokli lyambda
ifodalardan iborat bo’ladi. Lmbda – ifodalari odatda delegatlar va voqealar bilan ishlash uchun ishlatiladi, chunki delegat lambda- ifodasini nazarda tutish mumkin. Lambda ifodalari asosan LINQ bilan ishlashda ishlatiladi, ular ko`pincha delgatlar va voqealar bilan birgalikda ishlatiladi.
Lambda ifoda parametrlari => operatordan oldin ko`rsatilgan va amaldagi ifoda / bayonot / blok operatorining o`ng tomonida joylashgan bo`ladi:
// ifoda
(int x, string s)=>s.Length>x

//ifoda
(int x, int y)=>X+Y


// bayonot
(string x)=>
{
X+”Salom!”;
Console.WriteLine(x);
}
Ushbu operator aniq metod yozmasdan , delegatlarni osongina aniqlash uchun ishlatilishi mumkin:
Delegate void TestDelegate(string s);
TestDelegate myDelegate=s=> Console.WriteLine(s+”alaykum!”);
myDelegate(“Assalomu”);
o`rniga
void MyMethod(string s)
{
Console.WriteLine(s+”alaykum!”);
}
delegate void TestDelegate(string s);
TestDelegate myDelegate= MyMethod;
myDelegate(“Assalomu”);
shu usulda aniqlash mumkin.

Lambda ifodalari – bu no`malum usullarning kengaytmasi bo`lib, ular aniq kiritilmagan parametrlar va qiymatlarni qaytarishga imkon beradi. Ularning sintaksisi anonym usullarga qaraganda kamroq verbal bo`lib, funksional dasturlash uslubiga amal qiladi.


Endi esa Lyamda ifodadan foydalanib, y = x2 - 8x - 9 funksiyaning qiymatini hisoblash dasturini tuzamiz. .

delegate double Funksiya(double x);

class Program
{


Download 0.92 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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