C# tilida Dasturlash ( WPF, Xamarin, Unity, WinForms, ASP.NET Core, Entity Framework )
536 subscribers
29 photos
3 videos
19 files
78 links
Dasturchi boʻlishga qiziquvchilar va C# tilini oʻrganayotganlar uchun.
Download Telegram
🌸🌸🌸🌸🌸🌸🌸🌸🌸

Tabiat yaratgan bahor o'zingiz.
Oila bog'ida gulzor o'zingiz.
Jannatdan taralgan ifor o'zingiz.
Bugun poyingizda zamin-u falak.
Siz uchun eng go'zal bayram muborak.


🌼🌼🌼🌼🌼🌼🌼🌼🌼

Barcha ayollarni xalqaro "Xotin qizlar kuni" bilan chin qalbdan TABRIKLAYMIZ!!!
Oʻylagan hamma orzu niyatlaringizga yetishishingizni tilab qolamiz!

BAYRAMINGIZ MUBORAK!!!
#dars 34

METOD PARAMETRI ORQALI QIYMAT QAYTARISH.
"out" KALIT SOʻZI.


Biz qiymat qaytaradigan metod orqali faqat bitta oʻzgaruvchining qiymatini qaytarishimiz mumkin. Lekin parametr orqali qaytaradigan boʻlsak unda chegara boʻlmaydi. Buning uchun "out" kalit soʻzidan foydalanamiz:

static void Sum(int x, int y, out int a)
{
    a = x + y;
}


Bu metodda a oʻzgaruvchisining qiymatini parametr orqali qaytariladi.
Uni bu yerda chaqiramiz:
static void Main(string[] args)
{
    int x = 10;
    int z;
    Sum(x, 15, out z);
    Console.WriteLine(z);
    Console.ReadKey();
}


Ekranga x+15 ning qiymati yaʼni 25 chop qilinadi.

"out" kalit soʻzini bitta metodda koʻp marotaba ishlatishimiz mumkin.
Misol:
static void Main(string[] args)
{
    int x = 10;
    int area;
    int perimetr;
    GetData(x, 15, out area, out perimetr);
    Console.WriteLine("Toʻgʻri toʻrtburchak yuzasi: " + area);
    Console.WriteLine("Perimetri: " + perimetr);
 
    Console.ReadKey();
}
static void GetData(int x, int y, out int area, out int perim)
{
    area= x * y;
    perim= (x + y)*2;
}


Bu misolda toʻgʻri toʻrtburchak tomonlari GetData metodiga beriladi va "out" kalit soʻzi orqali uning yuzasi va perimetri qaytariladi.

👉 @CSharp_N1
#dars 35

System.Object SINFI VA UNING METODLARI

Biz yaratadigan barcha sinflar System.Object sinfiga voris sinf boʻlib yaratiladi. Bu avtomatik amalga oshadi. Shuning uchun yaratgan har bir sinfimizda quyidagi 4 metod mavjud boʻladi:

1. ToString
Bu metod obyektni satr koʻrinishidagi qiymatini ifodalab beradi.
Misol uchun:
int i = 5;
Console.WriteLine(i.ToString());
// 5 soni chiqariladi
double d = 3.5;
Console.WriteLine(d.ToString());
// 3,5 soni chiqariladi

Bu sonlar satr koʻrinishiga oʻgirilib chiqarilyapti.

2. GetHashCode
Bu metod har bir obyektning oʻziga mos Hesh kodini ifodalaydi. U yordamida obyektlarni bir biri bilan solishtirish mumkin.

3. GetType
Bu metod orqali obyektning turi aniqlanadi. Bu metodni obyekt turlari solishtirishda ishlatish mumkin.
Misol uchun:
object person = new Person { Name = "Tom" };
if (person.GetType() == typeof(Person))
Console.WriteLine("Bu sinf rostdan ham Person sinfi!");

Bu yerda typeof kalit soʻzi yordami sinf turi aniqlanib GetType() metodi bilan solishtirilyapti.

4. Equals
Bu metod ikki obyekt qiymatlarini tengligini tekshirish uchun ishlatiladi.
Misol uchun:
Person person1 = new Person { Name = "Tom" };
Person person2 = new Person { Name = "Bob" };
Person person3 = new Person { Name = "Tom" };
bool p1Ep2 = person1.Equals(person2);
// person1 person2 ga teng
// boʻlmagani uchun
// false(yolgʻon) boʻladi.
bool p1Ep3 = person1.Equals(person3);
// person1 person3 ga
// teng boʻlganligi uchun
// true(rost) boʻladi.


👉 @CSharp_N1
ASSALOMU ALAYKUM
Bugungi NAVROʻZ, "YANGI KUN" bayrami bilan barcha DASTURCHI larni, nafaqat dasturchilarni balki barcha dasturlashga qiziqqan BOʻLAJAK DASTURCHI larni TABRIKLAYMAN! BAXT va OMAD sizni hech qachon tark etmasin.
BAYRAMINGIZ MUBORAK BOʻLSIN!


👉 @CSharp_N1
Swipe Brick Breaker.exe
2.8 MB
Hammaga XAYRLI KECH!
Bugun sizlarga yangi C# dasturlash tilida yasagan oʻyinimni ulashmoqchiman. Sizga yoqsa 👍 bosing!

👉 @CSharp_N1
#dars 36

TURLARNI UMUMLASHTIRISH

Biz sinf yaratganimizda unga turli xil turdagi oʻzgaruvchilar beramiz. Misol uchun Account sinfida Id va Sum oʻzgaruvchilar yaratdik:
class Account
{
    public int Id { get; set; }
    public int Sum { get; set; }
}


Biz Id oʻzgaruvchisini int turida eʼlon qildik, ammo uni string turida eʼlon qilsak ham boʻlar edi, ikkila turning ham oʻzining plyus va minus tomonlari bor. Biz uni oldindan qanaqa turda eʼlon qilishni bilmasak, UMUMLASHTIRILGAN TURdan foydalanamiz. Buning uchun sinf nomidan soʻng <T> yozib qoʻshib qoʻyamiz. Bu yerda T - oʻzgaruvchi turi. Kodning koʻrinishi quyidagicha boʻladi:
class Account<T>
{
    public T Id { get; set; }
    public int Sum { get; set; }
}

Endi Id oʻzgaruvchisi turini quyidagicha berishimiz mumkin:
Account<int> account1 = new Account<int> { Sum = 5000 };

Account<string> account2 = new Account<string> { Sum = 4000 };

account1.Id = 2; 
account2.Id = "4356";

int id1 = account1.Id; 
string id2 = account2.Id;

Console.WriteLine(id1);
Console.WriteLine(id2);


Koʻrib turganingizdek Id oʻzgaruvchisini ikki xil turda ishlatishimiz mumkin.

👉 @CSharp_N1
#dars 37

TURLARNI UMUMLASHTIRISH (2-qism)

Biz turlarni umumlashtirish uchun turli xil turda namoyon boʻla oladigan UNIVERSAL PARAMETRlarni bir nechtasini birgalikda ishlatishimiz mumkin.
Misol:
class Account<T>
{
    public static T session;
    public T Id { get; set; }
    public int Sum { get; set; }
}
class Transaction<U, V>
{
    public U FromAccount { get; set; }
    public U ToAccount { get; set; }
    public V Code { get; set; }        
    public int Sum { get; set; }       
}


Bu sinfni asosiy qismda quyidagicha ishlatishimiz mumkin:
Account<int> acc1 = new Account<int> { Id = 1857, Sum = 4500 };
Account<int> acc2 = new Account<int> { Id = 3453, Sum = 5000 };

Transaction<Account<int>, string> transaction1 = new Transaction<Account<int>, string>

{
    FromAccount = acc1,
    ToAccount = acc2,
    Code = "45478758",
    Sum = 900
};


Bu yerda Account (hisob) va Transaction (oʻtkazish) sinflari yaratilgan. Account sinfida UNIVERSAL PARAMETRga
int turi berilgan, Transaction sinfiga esa birinchi UNIVERSAL PARAMETRga Account sinfi turi va ikkinchisiga string turi berilgan.

👉 @CSharp_N1
#dars 38

TURLARNI UMUMLASHTIRISH (3-qism)

Biz oldingi darslarda sinflarda turlarni umumlashtirishni oʻrgandik. Bundan tashqari biz metodlarda ham turlarni umumlashtirishimiz mumkin. Buning uchun xuddi sinflarda qilganimiz kabi universal parametrdan foydalanamiz.
Misol:
class Program
{
    private static void Main(string[] args)
    {
        int x = 7;
        int y = 25;
        Swap<int>(ref x, ref y);
        Console.WriteLine("x={0}    y={1}",x,y);  
// x=25   y=7
 
        string s1 = "hello";
        string s2 = "bye";
        Swap<string>(ref s1, ref s2);
        Console.WriteLine("s1={0}    s2={1}",s1,s2);
// s1=bye   s2=hello
             
        Console.Read();
    }
    public static void Swap<T> (ref T x, ref T y)
    {
        T temp = x;
        x = y;
        y = temp;
    }
}


Bu yerda Swap metodi orqali ikkita bir xil turdagi oʻzgaruvchining oʻrni almashtirib qoʻyilyapti. Oʻzgaruvchilar turi esa universal parametr orqali berilyapti.

👉 @CSharp_N1
#savol 9

Quyida berilgan dasturda ekranga nima chop qilinadi?

int age=215/10;
switch (age) {
case 10:
Console.Write("child"); break;
case 21:
Console.Write("young"); break;
case 50:
Console.Write("old"); break;}


👇 Pastdagi javob berish tugmasini bosib javob berishingiz mumkin!

👉 @CSharp_N1
#javob 9

Dastur ishga tushirilganda, int turidagi age oʻzgaruvchisiga u butun tur boʻlganligi tufayli 21 soni oʻzlashtiriladi. Ekranga esa young soʻzi chiqariladi.

JAVOB: young

👉 @CSharp_N1
DEMAK NATIJALARNI EʼLON QILAMAN!

1. Ozoda
2. Mr 007
3. Zokirbekov
4. Asliddin
5. Algebra
6. VATAN DEYA URAR YURAGIM
7. ISLOMOVA Sh.Sh.
8. Abdulaziz
9. Eldorbek Toʻrayev
10. Muzaffar Kholmukhammadov
11. YUSUF
12. 🔶🔸Golden Jack🔸🔶
13. Ibrohim Abdusattarov


Barcha qatnashchilarga rahmat, keyingi savollarda ham faol boʻlishingizni soʻrayman.

👉 @CSharp_N1
#dars 39

UNIVARSAL TURNI CHEGARALASH

Biz oldingi darslarda turlarni umumlashtirishda universal turdan foydalangan edik. Universal tur barcha turni ifodalashi mumkin. Ammo unga ham chegara oʻrnatishimiz mumkin. Buning uchun "where" kalit soʻzidan foydalanamiz. Misol uchun bizda Account (Hisob) sinfi bor:
class Account
{
    public int Id { get; private set;}
// hisob raqami
    public int Sum { get; set; }
    public Account(int
id)
    {
        Id = id;
    }
}


Biz hisobdan hisobga pul koʻchirish uchun Transaction (Koʻchirish) sinfini yaratishimiz lozim va unda biz universal turdan foydalanamiz, ammo universal tur yoki Account turida yoki Account sinfining voris sinfi turi boʻlishi mumkin. Shuning uchun biz unga quyidagicha chegara beramiz:
class Transaction<T> where T: Account
{
    public T FromAccount { get; set; } 
// Qaysi hisobdan oʻtkaziladi
    public T ToAccount { get; set; }   
// Qaysi hisobga oʻtkaziladi
    public int Sum { get; set; }       
// Oʻtkazish summasi
    public void Execute()
    {
        if (FromAccount.Sum > Sum)
        {
            FromAccount.Sum -= Sum;
            ToAccount.Sum += Sum;
            Console.WriteLine("{0}-hisob: {1} \n{2}-hisob: {3}",FromAccount.Id,FromAccount.Sum,ToAccount.Id,ToAccount.Sum);
        }
        else
        {
            Console.WriteLine("{0} hisobida pul yetarli emas!",FromAccount.Id);
        }
    }
}


Endi Transaction sinfida universal tur sifatida faqat Account sinfi yoki uning voris sinflari turlarini berishimiz mumkin. Dasturda esa quyidagidek ishlatishimiz mumkin:
class Program
{
    static void Main(string[] args)
    {
        Account acc1 = new Account(1857) { Sum = 4500 };
        Account acc2 = new Account(3453) { Sum = 5000 };
        Transaction<Account> transaction1 = new Transaction<Account>
        {
            FromAccount = acc1,
            ToAccount = acc2,
            Sum = 6900
        };
        transaction1.Execute();
        Console.ReadLine();
    }
}


👉 @CSharp_N1
#savol 10

QUYIDAGI DASTUR ISHGA TUSHIRILGANDA EKRANDA NIMA CHOP QILINADI?

class Program{
static void Main(string[] args){ new Super(); }
}
class Super{
static Super(){
Console.Write("Hi");}
public Super(){
Console.Write("Hey");}
}


👇 JAVOB BERISH tugmasi orqali javob bering!

👉 @CSharp_N1
#javob 10

Berilgan kodda Super sinfi yaratilgan, sinf ichida static va static boʻlmagan konstruktorlar yaratilgan. Agar biz bu sinfning obʼyektini yaratadigan boʻlsak, eng birinchi static konstruktor ishga tushadi, undan soʻng esa boshqa konstruktor, shuning uchun dasturni ishga tushirganimizda ekranga "HiHey" yozuvi chop qilinadi.

Javob: "HiHey"


👉 @CSharp_N1
TOʻGʻRI JAVOB BERGANLAR:

1. Anora
2. Mr 007
3. 😍 MASHA 😍
4. Eldorbek Toʻrayev
5. 🌹🌹Cindrella🌹🌹
6. ISMOILOVA Sh.Sh.


Barcha qatnashchilarga KATTA RAHMAT! Agar siz javob yoʻllaganingizda "Javobingiz toʻgʻri" degan xabarni olmasangiz, javobingiz notoʻgʻri boʻladi, toʻgʻri javobni topib, qayta urinib koʻring!

👉 @CSharp_N1
​​#dars 40

ARRAY SINFI VA UNING METODLARI

Biz massivlar bilan ishlaganimizda Array sinfining tayyor metodlaridan foydalanishimiz mumkin. Array sinfining quyida barcha metodlari va ularning vazifalarini koʻrib chiqamiz:

1. Length() - massivning uzunligini qaytaradi

2. Rank() - massivning o'lchamini qaytaradi

3. BinarySearch() - tartiblangan massivda ikkilik qidiruvni amalga oshiradi.

4. Clear() - massivni tozalaydi va barcha elementlarning standart qiymatini belgilaydi.

5. Copy() - massivning bir qismini boshqa massivga ko'chiradi.

6. Exists() - massivda muayyan element mavjudligini tekshiradi.

7. Find() - massivda muayyan holatni qondiradigan elementni topadi.

8. FindAll() - massivda ma'lum bir shartni qondiradigan barcha elementlarni topadi.

9. IndexOf() - element indeksini qaytaradi

10. Resize() - bir o'lchamli massivning o'lchamini o'zgartiradi.

11. Reverse() - massiv elementlarini teskari tartibda joylashtiradi.

12. Sort() - bir o'lchamli massiv elementlarini tartiblaydi

Bu metodlarni qoʻllash uchun Array.[metod nomi] kabi yozish lozim.

Misol uchun:
int[] numbers = { -4, -3, -2, -1,0, 1, 2, 3, 4 };
 
// Teskari tartibda joylashtiramiz
Array.Reverse(numbers);
 
// Oʻlchamini 4 tagacha kamaytiramiz
Array.Resize(ref numbers, 4);
 
foreach(int number in numbers)
{
    Console.Write("{0} \t", number);
}


Dastur ishga tushirilganda ekranga "4 3 2 1" chop qilinadi.

👉 @CSharp_N1
#savol 11

Quyidagi dastur ishga tushirilganda ekranga nima chop qilinadi?

class Program
{
static void Main(string[] args)
{
int[] mas = new int[10] { 8, 9, 65, 75, 32, 84, 78, 52, 48, 18 };

Array.Reverse(mas);
Array.Resize(ref mas, 5);
Console.WriteLine(Array.IndexOf(mas, 84) + mas.Length);
Console.ReadKey();
}
}


👉 @CSharp_N1