BMI-Narzullayev.S LAST

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 65

O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI

MUHAMMAD AL – XORAZMIY NOMIDAGI TOSHKENT AXBOROT


TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI

“Kompyuter injiniringi” fakulteti

“Kompyuter tizimlari” kafedrasi

5330500 - Kompyuter injiniringi (Kompyuter injiniringi) yo‘nalishi

“Himoyaga ruxsat etildi”


Kafedra mudiri ________
Bekmuratov Q.A.
“____” “_______” 2024 yil

C# dasturlash tilini o’rgatuvchi desktop ilova

mavzusida
BITIRUV MALAKAVIY ISHI

Bitiruvchi ___________ KI-20-03 - guruh talabasi


imzo Narzullayev S.N.

Ilmiy rahbar ____________ dots. Bekmuratov Q.A.


Imzo

XVF maslahatchisi ____________ dots. Asrorov Sh.


Imzo

Samarqand -2024
1
MUNDARIJA

Bet

KIRISH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
.
I BOB. C# DASTURLASH TILI ASOSLARI . . . . . . . . . . . . . . . . . . . . . . . 6
1.1. Dasturlash tillarining rivojlanish tarixi. . . . . . . . . . . . . . . . . . . . . . . 6
.
1.2. C# dasturlash tilining xususiyatlari va afzalliklari. . . . . . . . . . . . . . 8
.
1.3. Sintaksis, ma’lumot turlari, o’zgaruvchilar, operatorlar, 13
ifodalar. . .
1.4. Nazorat tuzilmalari: shartlar, 17
tsikllar. . . . . . . . . . . . . . . . . . . . . . . . .
II BOB. C# DASTURLASH TIL BILAN ISHLASH MUHITI VA
WINDOWS FORMS ILOVALARI . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1. C# obyektga yo’naltirlgan dasturlash tili haqida . . . . . . . . . . . . . . . 20
2.2. .NET Framework haqida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
....
2.3. Visual studio dasturlash muhiti haqida . . . . . . . . . . . . . . . . . . . . 26
...
III BOB. DESKTOP ILOVA LOYIHASI 33
3.1. Loyiha konsepsiyasi, talablar tahlili, dizayn, UI/UX . . . . . . . . . . . 33
3.2. Ilovaning ishlash jarayoni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3. Foydalanuvchi qo’llanmasi. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 42
3.4. Kompyuter bilan ishlashda qo'yiladigan talablar 44
XULOSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
FOYDALANILGAN ADABIYOTLAR . . . . . . . . . . . . . . . . . . . . . 48
ILOVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2
3
KIRISH

Bugungi kunda axborot texnologiyalari sohasida tezkor rivojlanish


kuzatilmoqda va bu rivojlanish barcha jabhalarga o'z ta'sirini o'tkazmoqda.
Ayniqsa, dasturlash tillarini o'rganish va ulardan foydalanish zarurati oshib
bormoqda. C# dasturlash tili hozirgi kunda eng ommabop va keng qo'llaniladigan
tillardan biri bo'lib, Microsoft kompaniyasi tomonidan yaratilgan va .NET
platformasi asosida ishlaydi. C# o'zining qulay sintaksisi, kuchli imkoniyatlari va
keng qo'llanilish doirasi bilan dasturchilar orasida keng tarqalgan.
C# dasturlash tili orqali turli xil desktop, veb, va mobil ilovalar yaratish
mumkin. Bu tilning moslashuvchanligi va kengaytirilgan funksional imkoniyatlari
uni dasturiy ta'minot ishlab chiqaruvchilar uchun jozibador qiladi. Shuning uchun,
C# dasturlash tilini o'rganish va o'rgatish dasturlari ko'plab dasturchilar va talabalar
uchun katta qiziqish uyg'otadi.
Masalaning qo‘yilishi. Ushbu bitiruv malakaviy ishida C# dasturlash tilini
o'rgatuvchi desktop ilova yaratish nazarda tutilgan. Bu ilova foydalanuvchilarga
C# dasturlash tilining asoslarini o'rganish, amaliy mashqlar bajarish va o'z
bilimlarini sinovdan o'tkazish imkonini beradi. Ilova qulay interfeys va intuitiv
foydalanish imkoniyatlariga ega bo'ladi.
Mavzuning dolzarbligi. Hozirgi kunda dasturlash tillarini o'rganish
nafaqat IT sohasida faoliyat yurituvchi mutaxassislar uchun, balki boshqa soha
vakillari uchun ham zaruriy bo'lib qolmoqda. Axborot texnologiyalarining shiddat
bilan rivojlanishi tufayli, dasturlash tillarini bilish zamonaviy inson uchun muhim
ko'nikmaga aylandi. Shu bilan birga, ko'plab ta'lim muassasalari va mustaqil o'quv
markazlari dasturlash tillarini o'rgatishga qaratilgan turli kurslarni taklif
etishmoqda. Bunday kurslar orasida C# dasturlash tili katta o'rin tutadi, chunki u
dasturiy ta'minot ishlab chiqarishda keng qo'llaniladi.
Biroq, mavjud o'quv resurslari va platformalar ko'pincha xorijiy tillarda
bo'lib, ularni to'liq tushunish va o'zlashtirish ba'zi foydalanuvchilar uchun
qiyinchilik tug'dirishi mumkin. Shu sababli, milliy tilimizda va mahalliy
4
ehtiyojlarni inobatga olgan holda ishlab chiqilgan C# dasturlash tilini o'rgatuvchi
dasturlar yaratish dolzarb masala hisoblanadi.
Bundan tashqari, C# dasturlash tilini o'rgatuvchi dasturlarni yaratish
nafaqat dasturchilarni tayyorlashda, balki dasturlashni endigina boshlayotgan
yoshlar va talabalarga ham katta yordam beradi. Bunday ilovalar yordamida
foydalanuvchilar o'z bilimlarini mustaqil ravishda oshirish, amaliy mashqlarni
bajarish va real loyihalar yaratishda ishtirok etish imkoniyatiga ega bo'ladilar.
Bitiruv ishnng maqsadi va vazifalari. Ushbu bitiruv ishning maqsadi - C#
dasturlash tilini samarali va oson o'rganishni ta'minlovchi desktop ilova
yaratishdir. Ishning vazifalari quyidagilardan iborat:
 C# dasturlash tilining asosiy tushunchalari va sintaksisini o'rgatish.
 Amaliy mashqlar taqdim etish.
 Foydalanuvchilarning bilimlarini sinovdan o'tkazish uchun testlar
yaratish.
 Qulay va foydalanuvchi uchun tushunarli interfeysni ishlab chiqish.
 Ilovani desktop platformalarda ishlashga moslashtirish.
Bitiruv malakaviy ishi(BMI)ning tuzilishi va tasniflanishi. BMI kirish,
uchta asosiy bob, xulosa, foydalanilgan adabiyotlar ro'yxati va ilovalardan iborat.
Kirish qismida mavzuning dolzarbligi, ishning maqsadi va vazifalari
bayon qilingan.
Birinchi bobda C# dasturlash tili haqida umumiy ma'lumotlar, uning tarixi,
imkoniyatlari va qo'llanilish sohalari ko'rib chiqiladi.
Ikkinchi bobda C# dasturlash tilini o'rgatish metodikasi, o'quv dasturi va
amaliy mashqlar ishlab chiqiladi.
Uchinchi bobda esa C# dasturlash tilini o'rgatuvchi desktop ilovaning
dizayni, funksionalligi va texnik yechimlari tahlil qilinadi.
Xulosa qismida bitiruv malakaviy ishida erishilgan asosiy natijalar
keltiriladi.
Adabiyotlar qismida bitiruv malakaviy ishini bajarishda foydalanilgan
5
adabiyotlar ro'yxati keltiriladi.
Ilovalarda dasturiy ta'minotning kodi va ko’rsatmalar, plagiyat hamda
DGU sertifikatlari joylashtirilgan

6
I BOB. C# DASTURLASH TILI ASOSLARI

1.1. Dasturlash tillarining rivojlanish tarixi

Dasturlash tillarining rivojlanish tarixi insoniyatning hisoblash va avtomat-


lashtirishga bo'lgan ehtiyoji bilan bog'liqdir. Bu tarix bir necha avlodlarga
bo'linadi, har bir avlod o'zining muhim yutuqlari va xususiyatlari bilan ajralib
turadi.
Birinchi avlod (1940-yillar). Birinci avlod dasturlash tillari mashina
kodlari edi. Bu davrda dasturlar to'g'ridan-to'g'ri mashina kodida yozilgan bo'lib,
bu kodlar kompyuterning apparat darajasidagi buyruqlarini ifodalaydi. Bu tillar
juda murakkab bo'lgan va faqatgina oddiy matematik va mantiqiy amallarni
bajarish uchun mos kelgan. Har bir buyruq binary (ikkilik) formatda yozilgan va
kompyuterning xotira manzillariga bog'langan.
ENIAC: Bu birinchi avlod kompyuteri bo'lib, uning dasturlash tili mashina
kodida yozilgan. ENIAC ko'plab matematik hisob-kitoblarni avtomatlashtirish
imkonini berdi.
Ikkinchi avlod (1950-yillar). Ikkinchi avlod dasturlash tillari assembler
tillari edi. Assembler tillari mashina kodlarini mnemonikalar yordamida ifodalash
imkonini berdi, bu esa dasturlarni yozishni ancha osonlashtirdi. Assembler tillari
hali ham kompyuterning apparat darajasiga juda yaqin edi, lekin ularni o'rganish va
ishlatish biroz osonroq bo'lgan.
Assembly Language: Bu til mashina kodlarining mnemonik versiyasidir.
Har bir mashina kodi uchun mnemonik belgi mavjud edi, masalan, ADD, SUB,
MOV kabi.
Uchinchi avlod (1960-1970-yillar). Uchinchi avlod dasturlash tillari
yuqori darajali tillar edi. Bu tillar inson tili va mantiqiga yaqinroq bo'lib, ular
yordamida murakkab dasturlarni yozish imkoniyati tug'ildi. Ushbu tillar
kompyuterning apparat darajasidan mustaqil bo'lib, dasturchilarni texnik
tafsilotlardan ozod qildi.
7
FORTRAN. Fortran (Formula Translation) 1957-yilda ishlab chiqilgan va
ilmiy va muhandislik hisob-kitoblari uchun ishlatilgan.
COBOL. COBOL (Common Business Oriented Language) 1959-yilda
ishlab chiqilgan va biznes ma'lumotlarni qayta ishlash uchun mo'ljallangan.
LISP. Lisp (LISt Processing) 1958-yilda ishlab chiqilgan va sun'iy intellekt
tadqiqotlari uchun ishlatilgan.
To'rtinchi avlod (1980-yillar). To'rtinchi avlod dasturlash tillari (4GL)
yuqori darajali tillarning yanada rivojlangan shakli bo'lib, foydalanuvchi uchun
intuitiv interfeyslar va avtomatlashtirilgan dasturlash muhitlarini taqdim etdi. Bu
tillar yordamida murakkab ma'lumotlar bazalari va foydalanuvchi interfeyslari
yaratish mumkin bo'lgan.
SQL (Structured Query Language) ma'lumotlar bazalari bilan ishlash
uchun mo'ljallangan til bo'lib, ma'lumotlarni saqlash, qayta ishlash va
manipulyatsiya qilish uchun ishlatiladi.
MATLAB matematik va ilmiy hisob-kitoblar uchun ishlatiladigan yuqori
darajali dasturlash muhitidir.
Beshinchi avlod (1990-yillar va keyingi davr). Beshinchi avlod
dasturlash tillari sun'iy intellekt va mashinani o'rganish kabi ilg'or texnologiyalar
bilan bog'liq. Ushbu tillar katta hajmdagi ma'lumotlarni qayta ishlash, avtomatik
dasturlash va o'z-o'zini rivojlantiruvchi tizimlarni yaratish uchun mo'ljallangan.
Prolog. Prolog (Programming in Logic) sun'iy intellekt tadqiqotlari uchun
ishlatiladigan til bo'lib, mantiqiy dasturlashga asoslangan.
Python ko'p maqsadli yuqori darajali dasturlash tili bo'lib, u o'zining qulay
sintaksisi va kengaytirilgan kutubxonalari bilan tanilgan. U sun'iy intellekt, veb-
ishlab chiqarish va ilmiy hisob-kitoblar uchun keng qo'llaniladi.
Obyektga yo'naltirilgan dasturlash (1990-yillar). Obyektga
yo'naltirilgan dasturlash (OOP) paradigmasi 1980-yillarning oxiri va 1990-yillarda
keng tarqaldi. Bu paradigma dasturlarni obyektlar va ularning o'zaro aloqalariga

8
asoslangan holda yozishga imkon beradi. OOP dasturlarni yanada modular, qayta
ishlatiladigan va tushunarli qiladi.
C++: C++ tili 1983-yilda Bjarne Stroustrup tomonidan yaratilgan bo'lib, u
C tilining obyektga yo'naltirilgan kengaytmasi hisoblanadi.
Java: Java tili 1995-yilda Sun Microsystems tomonidan ishlab chiqilgan
bo'lib, u platformaga bog'liq bo'lmagan dasturlar yaratish imkonini beradi.
Zamonaviy dasturlash tillari (2000-yillar va keyingi davr). Zamonaviy
dasturlash tillari ilg'or dasturlash paradigmalari va texnologiyalarini qo'llab-
quvvatlaydi. Ular qulay sintaksis, keng kutubxonalar va yuqori samaradorlikni
ta'minlaydi.
C#. C# (C Sharp) 2000-yilda Microsoft tomonidan ishlab chiqilgan
va .NET platformasi uchun mo'ljallangan. U OOP paradigmasiga asoslangan va
ko'p maqsadli dasturlash tili hisoblanadi.
JavaScript. JavaScript veb-ishlab chiqarishda keng qo'llaniladigan skript
tili bo'lib, u foydalanuvchi interfeyslarini dinamik qilish va veb-ilovalar yaratish
uchun ishlatiladi.
Swift. Swift 2014-yilda Apple tomonidan ishlab chiqilgan va iOS va
macOS ilovalari yaratish uchun mo'ljallangan.
Dasturlash tillarining rivojlanishi davom etmoqda va har bir yangi til yoki
yangilanish dasturchilarga yangi imkoniyatlar va qulayliklar yaratmoqda. Bu
jarayon insoniyatning hisoblash va avtomatlashtirishga bo'lgan ehtiyojlarini yanada
samarali qondirish uchun davom etadi.

1.2. C# dasturlash tilining xususiyatlari va afzalliklari

C# (C-Sharp) - bu Microsoft tomonidan ishlab chiqilgan yuqori darajali


dasturlash tili bo'lib, asosan .NET platformasi uchun mo'ljallangan. 2000-yilda
yaratilgan C# tezda rivojlanib, zamonaviy dasturlash tillari orasida o'z o'rnini
egalladi. C# dasturlash tili obyektga yo'naltirilgan dasturlash (OOP) paradigmasiga

9
asoslanadi va ko'p sonli afzalliklarga ega bo'lib, uni keng ko'lamli dasturlash
loyihalarida qo'llash imkonini beradi.
C# dasturlash tilining xususiyatlari. Obyektga yo'naltirilgan dasturlash
(OOP). C# to'liq obyektga yo'naltirilgan dasturlash tilidir. Bu til yordamida
dasturchilar obyektlar va sinflar orqali kodni tashkil etishlari mumkin. OOP
paradigmasi dastur kodini qayta ishlashni soddalashtiradi va uni o'qilishi va
tushunilishi oson bo'lgan holatga keltiradi.
C# dasturlash tilining OOP qismida quyidagi xususiyatlar bor:
 Inkapsulyatsiya: Ma'lumotlar va metodlar bir joyda, ya'ni sinfda
saqlanadi;
 Meros olish: Sinflar boshqa sinflardan meros olishi mumkin, bu kodni
qayta ishlatishni ta'minlaydi;
 Polimorfizm: Bir interfeys yordamida turli xil amalga oshirishlarni
taqdim etish imkoniyati mavjud;
 Abstraktsiya: Murakkab tizimlarni oddiy tushunchalar bilan ifodalash
imkoniyati.
Qattiq tipli (strongly-typed) til. C# qattiq tipli dasturlash tili hisoblanadi,
ya'ni har bir o'zgaruvchi va ifoda aniq turga ega bo'lishi kerak. Bu yondashuv
kompilyatsiya vaqtida ko'proq xatolarni aniqlashga yordam beradi va kodni yanada
ishonchli qiladi.
Kompilyatsiya vaqti xatolarini aniqlash: Aniq turdagi tekshirishlar
kompilyatsiya vaqtida xatolarni aniqlash imkonini beradi.
Xotira xavfsizligi: Qattiq tipli tizim xotira muammolarini oldini olishga
yordam beradi.
Rich Standard Library. C# va .NET platformasi keng va boy standart
kutubxonaga ega. Bu kutubxonalar dasturlash jarayonini sezilarli darajada
soddalashtiradi va tezlashtiradi. Ulardan ba’zilari quyidagilar:
 System Namespace: Umumiy funktsiyalar va utilitalarni o'z ichiga oladi;
 System.Collections: Ma'lumotlar tuzilmalari uchun kutubxonalar;
10
 System.IO: Fayl tizimi bilan ishlash uchun kutubxonalar;
 System.Net: Tarmoq va internet bilan bog'liq funktsiyalar.
Platformaga bog'liq emaslik. C# dasturlash tili .NET Core yordamida ko'p
platformali dasturlar yaratish imkonini beradi. .NET Core Windows, macOS va
Linux platformalarida ishlashi mumkin.
.NET Core platformaga bog'liq emaslikni ta'minlaydi.
Xamarin mobil ilovalar yaratish uchun ishlatiladi, iOS va Android
platformalarini qo'llab-quvvatlaydi.
Modern Syntax. C# zamonaviy va intuitiv sintaksisga ega bo'lib, boshqa
yuqori darajali tillardan ilhomlangan. Bu dasturchilarga kodni tez va samarali
yozishga yordam beradi.
Anonim turlar va lambda ifodalari kodingizni qisqartiradi va o'qilishi oson
bo'ladi.
LINQ (Language Integrated Query) ma'lumotlar bilan ishlashni
osonlashtiradi.
Async va await asinxron dasturlashni soddalashtiradi.
Type Safety. C# kuchli turdagi xavfsizlikni ta'minlaydi, ya'ni
o'zgaruvchilar, funksiyalar va sinflar orasidagi mos kelmasliklarni oldini oladi.
Bu dasturchilarga xatolarni erta bosqichda aniqlash va tuzatish imkonini
beradi. Ulardan ba’zilari quyidagilar:
 Null safety: Null ko'rsatkich xatolarini oldini olish;
 Generics: Turli turdagi ma'lumotlar bilan ishlash uchun
moslashuvchanlik va xavfsizlikni ta'minlaydi.
Exception Handling. C# dagi xatolarni boshqarish tizimi juda kuchli.
Exception handling (istisnolarni boshqarish) yordamida dastur xatolarini ushlash
va ularga tegishli ravishda javob berish mumkin. Ular quyidagi turlarga ajratiladi:
 Try-Catch-Finally: Xatolarni ushlash va ular bilan ishlash;
 Custom Exceptions: Maxsus istisnolarni yaratish va foydalanish.

11
Memory Management. C# avtomatik xotira boshqaruviga ega bo'lib,
garbage collection (GC) yordamida foydalanilmayotgan xotirani tozalash imkonini
beradi. Bu dasturchilarni xotira boshqaruvi haqida o'ylamasdan, asosiy logikaga
e'tibor qaratish imkonini beradi va ular quyidagi ko’rinishlarda bo’ladi:
 Garbage Collection (GC): Avtomatik xotira boshqaruvi;
 Stack va Heap: Effektiv xotira joylashuvi.
Language Interoperability. C# tili boshqa tillar bilan yaxshi muvofiq-
lashtiriladi. .NET platformasi yordamida C++, VB.NET va boshqa tillar bilan
birgalikda ishlash mumkin. Bundan tashqari quyidagicha integratsiyalar ham
mavjud:
 P/Invoke: Unmanaged kodlar bilan bog'lanish;
 COM Interop: Component Object Model (COM) komponentlari bilan
integratsiya.
Security Features. .C# va .NET platformasi yuqori darajadagi xavfsizlik
xususiyatlarini ta'minlaydi. Bu dasturchilarga xavfsiz va ishonchli dasturlar
yaratishga yordam beradi. Bu xususiyatlar quyidagicha bo’lishi mumkin:
 Code Access Security (CAS): Kodning kirish huquqlarini boshqarish;
 Role-Based Security: Foydalanuvchi roli asosida kirish huquqlarini
boshqarish.
C# dasturlash tilining afzalliklari. Microsoft qo'llab-quvvatlovi. C#
tilini Microsoft qo'llab-quvvatlaydi va rivojlantiradi. Bu tilning muntazam ravishda
yangilanib turishi va yangi xususiyatlar qo'shilishi bilan bog'liq.
Keng hamjamiyat. C# juda keng va faol dasturchilar hamjamiyatiga ega.
Bu yangi boshlovchilarga tezda yordam olish va tajribali dasturchilar bilan fikr
almashish imkonini beradi.
 Online resurslar: Rasmiy hujjatlar, forumlar, bloglar va video darsliklar.
 Open Source loyihalar: GitHub va boshqa platformalardagi loyihalar.
Ko'p maqsadli qo'llanish. .C# dasturlash tili juda ko'p maqsadlarda
qo'llanilishi mumkin. U veb-dasturlar, mobil ilovalar, o'yinlar, ish stoli ilovalari va
12
xizmatlar yaratish uchun ishlatiladi. Ulardan quyidagi frameworklarni sanab
o’tishimiz mumkin:
 ASP.NET: Veb-dasturlar va xizmatlar yaratish;
 Xamarin: Mobil ilovalar yaratish;
 Unity: O'yin dasturlash.
Ishlash va samaradorlik. C# yuqori samaradorlik va ishlash ko'rsatkich-
lariga ega. Bu tilning kompilyatori va runtime muhitining optimallashtirilganligi
tufayli amalga oshiriladi.
JIT (Just-In-Time) Compilation: Kodingizni kompilyatsiya qilish va ish
vaqtida optimallashtirish.
Performance optimizations: .NET va C# ning muntazam ravishda yax-
shilanib borishi.
Modulli va kengaytiriluvchanlik. C# modulli dasturlashni qo'llab-quv-
vatlaydi, bu esa kodni qayta ishlatish va kengaytirish imkonini beradi. Sinflar,
interfeyslar va kutubxonalar orqali modullik ta'minlanadi. Masalan, ushbu mo-
dullarni keltirishimiz mumkin:
 NuGet: Kengaytirilgan paket menejeri;
 Plug-in arxitekturasi: Qo'shimchalarni osongina integratsiya qilish.
Integratsiya imkoniyatlari. C# va .NET platformasi boshqa dasturlash
tillari va texnologiyalari bilan yaxshi integratsiya qila oladi. Bu uni korxona
darajasidagi ilovalar yaratishda juda mos qiladi. Bunday imkoniyatlardan ba’zilari
quyidagilar:
 SQL Server: Ma'lumotlar bazasi bilan integratsiya;
 Azure: Bulutli xizmatlar bilan ishlash;
 RESTful va SOAP: Veb xizmatlar yaratish va foydalanish.
Zamonaviy dasturlash paradigmalari. C# zamonaviy dasturlash paradig-
malari va texnikalarini qo'llab-quvvatlaydi. Bu dasturchilarga ilg'or funksiyalar va
imkoniyatlardan foydalanish imkonini beradi. Zamonaviy dasturlash paradigmalari
quyidagi turlarda bo’ladi:
13
 Reactive Programming: Asinxron va hodisalarga asoslangan dasturlash;
 Functional Programming: Funksional dasturlash elementlari.
C# dasturlash tili uning keng xususiyatlari va afzalliklari tufayli
zamonaviy dasturlash tillaridan biri bo'lib qolmoqda. Uning obyektga
yo'naltirilganligi, qattiq tipli tizimi, boy standart kutubxonalari va Microsoft
qo'llab-quvvatlovi bilan C# dasturchilarga yuqori samaradorlik, xavfsizlik va
moslashuvchanlikni ta'minlaydi. Bu esa uni keng ko'lamli dasturlash loyihalarida
qo'llash uchun mukammal tanlov qiladi.

1.3. Sintaksis, ma’lumot turlari, o’zgaruvchilar, operatorlar, ifodalar

C# dasturlash tili sodda va tushunarli sintaksisga ega bo'lib, bu


dasturchilarga kod yozishda qulaylik yaratadi. Ushbu bo'limda C# tilining asosiy
sintaksisi, ma'lumot turlari, o'zgaruvchilar, operatorlar va ifodalar haqida batafsil
ma'lumot beriladi.
Sintaksis. C# sintaksisi C++ va Java tillariga o'xshash bo'lib, ularni
biladigan dasturchilar uchun o'rganishni osonlashtiradi. Quyida C# dasturining
asosiy elementlari keltirilgan.
Sinflar va Metodlar. C# dasturlari sinflar va metodlardan tashkil topgan.
Quyidagi misolda oddiy C# sinfi va undagi metod keltirilgan:
using System;
namespace MyApp{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
14
Izohlar. C# da izohlar kodni tushuntirish yoki izohlash uchun ishlatiladi va
ular kompilyatsiya qilinmaydi. Izohlar bir qatorli yoki ko'p qatorli bo'lishi
mumkin.
Bir qatorli izohlar // bilan boshlanadi:
// Bu bir qatorli izoh
Console.WriteLine("Hello, World!"); // Bu kod qatorining izohi
Ko'p qatorli izohlar /* va */ bilan o'raladi:
/*
Bu ko'p qatorli izoh
Bu ham izoh
*/
Console.WriteLine("Hello, World!");
Ma'lumot turlari. C# da ma'lumot turlari ikki asosiy guruhga bo'linadi:
qiymat turlari (value types) va havola turlari (reference types).
Qiymat turlari. Qiymat turlari o'z ichida oddiy qiymatlarni saqlaydi va
stackda saqlanadi. Asosiy qiymat turlari quyidagilardir:
 int: Butun son (4 bayt), masalan, int age = 30;
 float: O'nlik kasr son (4 bayt), masalan, float weight = 72.5f;
 double: Kattaroq o'nlik kasr son (8 bayt), masalan, double height =
180.2;
 char: Yagona belgi (2 bayt), masalan, char initial = 'A';
 bool: Mantiqiy qiymat (true yoki false), masalan, bool isAlive = true.
Havola turlari. Havola turlari obyektlarga havola saqlaydi va heapda
saqlanadi. Asosiy havola turlari quyidagilardir:
 string: Belgilar qatori, masalan, string name = "John";
 object: Barcha turlarning asosi, masalan, object obj = new object();
 class: Foydalanuvchi tomonidan yaratilgan sinflar, masalan,
class Person {
public string Name {
15
get; set;
}
public int Age {
get; set;
}
}
O'zgaruvchilar. O'zgaruvchilar ma'lumotlarni saqlash uchun ishlatiladi.
C# da o'zgaruvchilarni e'lon qilishda tur va nom ko'rsatiladi.
E'lon qilish, masalan, int age;
O'zlashtirish, masalan, age = 30;
E'lon qilish va o'zlashtirish, masalan, int age = 30;
O'zgaruvchilarning ko'lami (Scope). O'zgaruvchilarning ko'lami ularning
qayerda e'lon qilinganiga bog'liq. O'zgaruvchilar sinf darajasida, metod darajasida
yoki blok darajasida e'lon qilinishi mumkin. Quyida ularning turlari keltirilgan:
 Sinf darajasi:
class Program {
private int number = 10; // Sinf darajasi o'zgaruvchisi
}
 Metoddarajasi:
void PrintNumber() {
int number = 10; // Metoddarajasi o'zgaruvchisi
}
 Blokdarajasi:
if (true) {
int number = 10; // Blokdarajasi o'zgaruvchisi
}
Operatorlar.C# da operatorlar arifmetik, mantiqiy, solishtirish va
boshqaruv operatorlariga bo'linadi.

16
Arifmetik operatorlar matematik amallarni bajarish uchun ishlatiladi va
ular quyidagilar:
 Qo'shish (+), masalan, int sum = 5 + 3; // Natija: 8
 Ayirish (-), masalan, int difference = 5 - 3; // Natija: 2
 Ko'paytirish (*), masalan, int product = 5 * 3; // Natija: 15
 Bo'lish (/), masalan, int quotient = 10 / 2; // Natija: 5
 Qoldiq (%), masalan, int remainder = 10 % 3; // Natija: 1
Mantiqiy operatorlar. Mantiqiy operatorlar mantiqiy amallarni bajarish
uchun ishlatiladi va ular quyidagilar:
 Va (&&), masalan, bool res = (5 > 3) && (10 > 5); // true
 Yoki (||), masalan, bool res = (5 > 3) || (10 < 5); // true
 Emas (!), masalan, bool res = !(5 > 3); // false
Solishtirish operatorlari. Solishtirish operatorlari qiymatlarni solishtirish
uchun ishlatiladi va ular quyidagilar:
 Teng (==), masalan, bool isEqual = (5 == 5); // true
 Teng emas (!=), masalan, bool isNotEqual = (5 != 3); // true
 Katta (>), masalan, bool isGreater = (5 > 3); // true
 Kichik (<), masalan, bool isLesser = (3 < 5); // true
 Katta yoki teng (>=), masalan, bool isGEq = (5 >= 5); // true
 Kichik yoki teng (<=), masalan, bool isLEq = (3 <= 5); // true
O'zlashtirish operatorlari. O'zlashtirish operatorlari qiymatlarni
o'zgaruvchilarga o'zlashtirish uchun ishlatiladi.
Oddiy o'zlashtirish (=), masalan, int son = 5;
Qo'shish va o'zlashtirish (+=), masalan, int number = 5; son += 3; //
Natija: 8
Ayirish va o'zlashtirish (-=), masalan, int son = 5; son -= 3; // Natija: 2
Ko'paytirish va o'zlashtirish (*=), masalan, int son = 5; son *= 3; // Natija:
15
Bo'lish va o'zlashtirish (/=), masalan, int son = 10; son /= 2; // Natija: 5
17
Qoldiq va o'zlashtirish (%=), masalan, int son = 10; son %= 3; // Natija: 1
Ifodalar. C# da ifodalar arifmetik yoki mantiqiy qiymatlar hosil qilish
uchun ishlatiladi. Ifodalar operatorlar va operandlardan tashkil topgan bo'lib,
natijada biror qiymat qaytaradi.
Arifmetik ifoda, masalan, int result = (5 + 3) * 2; // Natija: 16
Mantiqiy ifoda, masalan, bool ok = (5 > 3) && (10 < 20); // Natija: true
C# dasturlash tilining sintaksisi, ma'lumot turlari, o'zgaruvchilar,
operatorlar
va ifodalari dasturlashning asosiy elementlarini tashkil qiladi. Bu elementlarni
chuqur tushunish dasturchilarga samarali va yuqori sifatli dasturlar yaratishda
yordam beradi. C# ning intuitiv sintaksisi va kuchli imkoniyatlari dasturchilar
uchun keng ko'lamli dasturlar yaratish imkonini beradi

1.4. Nazorat tuzilmalari: shartlar, sikllar

C# dasturlarida nazorat tuzilmalari shartlar va sikllar yordamida amallar


bajariladi. Shartlar, ma'lumotni tekshirish va belgilangan shartlarga qarab amalga
oshirish uchun ishlatiladi. Sikllar esa biror amalni qaytarib turib, belgilangan
shartning bajarganligini tekshirish uchun ishlatiladi.
if - else shart operatorlari. if va else operatorlari ma'lum bir shartni
tekshirish uchun ishlatiladi. if qismida belgilangan shart bajarilishi mumkin. Agar
shart bajarilsa, if bloki ichidagi kod ishga tushiriladi. Aks holda, else bloki ishga
tushadi.
int x = 10;
if (x > 5)
{
Console.WriteLine("x 5 dan katta");
}
else
{
18
Console.WriteLine("x 5 dan kichik yoki teng");
}
switch operatori. switch operatori bir nechta mukammal shartlarni
tekshirish uchun ishlatiladi. switch bloki ichidagi ifodalar, qaysi case blokiga mos
keladigan-ligi tekshiriladi. Agar mos case topilmasa, default blok ishga tushiriladi.
int day = 4;
switch (day){
case 1:
Console.WriteLine("Dushanba");
break;
case 2:
Console.WriteLine("Seshanba");
break;
case 3:
Console.WriteLine("Chorshanba");
break;
case 4:
Console.WriteLine("Payshanba");
break;
default:
Console.WriteLine("Hafta kuni");
break;
}
for sikli. for sikli ma'lum bir shart bajarilishi paytida ishga tushiriladi va
ma'lumotlar to'plamini bir nechta marta ko'rib chiqishga ruxsat beradi.
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
19
while sikli. while sikli shart bajarilishi paytida ishga tushiriladi .
int i = 0;
while (i < 5){
Console.WriteLine(i);
i++;
}
do while sikli. do while sikli bajarilishi kerak bo'lgan amalni bajarib keyin
shartni tekshiradi.
int i = 0;
do
{
Console.WriteLine(i);
i++;
} while (i < 5);

foreach sikli. foreach sikli bir qator ro'yxatdagi har bir element uchun
ishga tushadi.
int[] numbers = {1, 2, 3, 4, 5};
foreach (int number in numbers)
{
Console.WriteLine(number);
}

Nazorat tuzilmalari C# dasturlash tilida shartlar va sikllarni amalga


oshirishda asosiy vazifalarni bajaradi. Shartlar ma'lumotni tekshirish va
belgilangan shartga qarab amalga oshirishga ruxsat beradi, sikllar esa biror amalni
bir nechta marta takrorlash uchun ishlatiladi. Shartlar va sikllar dasturchilar uchun
kodni organizatsiyalash va bajarishning mavzulari bo'lib, samarali va dasturni
qulayroq ko'rib chiqish uchun juda muhimdir.
20
II BOB. C# DASTURLASH TILI BILAN ISHLASH MUHITI VA WINDOWS
FORMS ILOVALARI

2.1. C# obyektga yo’naltirlgan dasturlash tili haqida

C# (C-Sharp) Microsoft tomonidan ishlab chiqilgan bir dasturlash tili


hisoblanadi. U og'irli, umumiy maqsadli dasturlash uchun mo'ljallangan va .NET
platformasida ishlatiladi [9-11]. C# bir obyektga yo'naltirilgan tildir, ya'ni, bu til
orqali obyektlar yaratish, ularga xususiyatlar va metodlar beraish, obyektlar
orasida aloqalar tuzish mumkin.
C# umumiy maqsadli dasturlash tili bo'lib, desktop, mobil, veb va server
dasturlarni yaratish uchun qulay imkoniyatlar taqdim etadi. U Windows, Android,
iOS, veb brauzerlar va boshqa platformalarda ishlaydigan ilovalarni yaratishda
ishlatiladi [9-11].
C# ma'lum bir sintaksisga ega bo'lib, C va C++ tiliga o'xshashliklar
ko'rsatadi. Bu til orqali muhokama qilishga qulaydir, chunki u muhitdagi boshqa til
yoki platformalardagi kodni istisno qiladi va uni qayta yozishga to'g'ri keladi [9-
11].
C# tilida yozilgan dasturlar, Microsoft .NET frameworki orqali ishga
tushadi. .NET framework, dasturlarni Windows, Linux va macOS platformalarida
ishga tushirishga imkon beradi. Buning uchun dastur .NET platformasiga kodi
kompilyatsiya qilingan DLL (Dynamic Link Library) faylga o'giriladi va undan
so'ng ushbu fayl .NET frameworki orqali bajariladi [9-11].
C# o'rgatish uchun bog'liq darslar, qo'llanmalar va onlayn manbalarga ega
bo'lib, dasturlash sohasida ko'proq ma'lumot topish mumkin. Buning uchun
Microsoft dasturlash resurslari, o'qituvchilar tomonidan tuzilgan darslar va
elektron kitoblar mavjud [9-11].
.NET platformasi haqida. Microsoft tomonidan ishlab chiqilgan,
dasturlarni yaratish, boshqarish va ishga tushirish uchun mo'ljallangan bir

21
platformadir [9-11]. Bu platforma dasturlash tilini (masalan, C#, Visual Basic, F#)
va dasturlash vositalarini (kompyulyatorlar, kutubxonalardan foydalanish, deplov
qilish vositalari) o'z ichiga oladi.
.NET platformasi asosan Windows operatsion tizimida ishlatiladi, lekin
boshqa operatsion tizimlar (masalan, Linux va macOS) uchun ham to'liq yoki
qisman qo'llaniladi. Bu, platformaning muhim xususiyatlaridan biri hisoblanadi.
Bu platforma dasturlarni birlashtirish va birlashtirilgan ilovalar yaratish
imkonini beradi. Birlashtirilgan ilovalar, .NET platformasida ishga tushirilgan
dasturlar va kutubxonalardan tashkil topadi. Birlashtirilgan ilovada, ilovaning
barcha komponentlari (masalan, DLL fayllar) birlashtirilgan bino (executable)
faylga o'zlashtiriladi va shuningdek, kerakli .NET Framework va boshqa muhit
bilan birgalikda ijro etishi uchun ilovaning menejerdan yordam olishi mumkin [9-
11].
.NET platformasi yuqori darajadagi abstraksiyalash, dasturlashdan
qisqacha vaqt o'tkazish, iste'molchilar interfeyslarini taminlash va boshqa ko'p
qismlarni o'z ichiga oladi. Bu platforma orqali, bog'liq ilovalarni yaratish,
xizmatlarni boshqarish, ma'lumotlarni saqlash va ishlatish, foydalanuvchilar bilan
tashkilotlar o'rtasida bog'lanishni tuzish va internet ilovalarini ishga tushirish
mumkin [9-11].
.NET platformasining asosiy qismi, Common Language Runtime (CLR)
deb nomlanadi. CLR dasturlarni bajarish, koddan bo'lib yuritish, xotiraga kirish va
chiqish, hafizani boshqarish va avtomatik ravishda yig'ilish, muhokama va xatolar
bilan ishlashni yengillashtiradi.
Shuningdek, .NET platformasining kutubxonalari (Framework Class
Library) keng imkoniyatlarni taqdim etadi. Bu kutubxona o'z ichiga turli tarkibiy
qismlarni (masalan, grafik, tarmoq, kriptografiya, ma'lumotlar ombori) oladi va
ularga erishish imkoniyatini beradi.
Bu platforma yordamida dasturchilar, dasturlarni tezkor, xavfsiz va
ishontirishga qulay usullarda yaratish imkoniyatiga ega.
22
C# tilida desktop ilovalar yaratish. C# tilida desktop ilovalar yaratish
juda qulay bo'ladi. Desktop ilovalar, Windows operatsion tizimida ishlaydigan stol
dasturlari hisoblanadi. Bu turlar misol uchun ofis ilovalari, muhasebe dasturlari,
redaktorlar, grafik dizayn dasturlari va boshqalarini o'z ichiga oladi [9-11].
C# tilida desktop ilovalarni yaratish uchun Visual Studio muharriri keng
tarqalgan bo'lib, Microsoft tomonidan taqdim etiladi. Visual Studio, C# dasturlash
uchun to'liq qo'llanmalar va vositalarni o'z ichiga oladi va ilovalarni yaratish, kodni
tahlil qilish, ishga tushirish va boshqarishni osonlashtiradi.
C# tilida desktop ilovani yaratish jarayoni quyidagilar o'rniga keladi [9-
11]:
Proyektni yaratish: Visual Studio orqali yangi C# proyekti yaratish
imkoniyatiga ega bo'lasiz. Bu proyekt dastur uchun muhitni tuzadi va loyihada
ishlatiladigan fayllarni o'z ichiga oladi.
Dizayn asosida interfeysni yaratish: Desktop ilovalarning vizual qismini
tuzish uchun Windows Forms yoki WPF (Windows Presentation Foundation)
texnologiyalaridan foydalanishingiz mumkin. Bu texnologiyalar orqali ilova
oynasini va ularga bog'liq tizim elementlarini (tugmalar, tekst maydonchalari,
ro'yxatlar, jadvallar va hokazo) qo'shish va moslashtirish imkoniyatiga egasiz.
Kodni yozish: C# tilida ilova asosiy funksiyalarini, yordamchilarini va
interfeysni boshqarish uchun kod yozishiz mumkin. C# tilining
ob'yektoriyentirovaniy qobiliyatlaridan foydalanib, obyektlar yaratish,
xususiyatlarga murojaat qilish, metodlar yozish, vazifalarni bajarish va
boshqalarini amalga oshirishingiz mumkin.
Ilovani test qilish: Visual Studio o'z ichida birlashtirilgan imkoniyatlarga
ega bo'lib, ilovani test qilishni osonlashtiradi. Bu uni ilovaning xatolarini aniqlash
va unga to'g'ri javobini tekshirish imkonini beradi.
Ilovani kompilyatsiya qilish va ishga tushirish: C# kodini kompilyatsiya
qilib, .NET Framework orqali bajarilishi uchun ilova bino faylini generatsiya

23
qilishingiz mumkin. Ushbu bino faylini ishga tushirish orqali ilovangizni
o'rnatishingiz va ishlatishingiz mumkin.
C# tilida desktop ilovalar yaratish, bog'liq dasturlashning har qanday
yo'nalishi uchun muhim va maqbul bo'lib turadi. Visual Studio muharriri,
dasturchilarga qulaylik va ta'minot taqdim etadi, shuningdek, C# tilining og'irlik va
to'liq xususiyatlaridan foydalanish imkonini beradi.
C# dasturlash tilida socketlar. Tarmoq kommunikatsiyasi uchun asosiy
vositalardan biridir. Socketlar, tarmoq orqali ma'lumot almashish va jo'natish
uchun foydalaniladigan bir interfeysni taqdim etadi. Bu, dasturchilarga tarmoq
protokollarini (masalan, TCP/IP va UDP) asosida kommunikatsiya o'rnatish
imkonini beradi.
C# tilida socketlar bilan ishlash quyidagi jarayonlarni o'z ichiga oladi [9-
11]:
Socket yaratish: C# tilida System.Net.Sockets.Socket sinfi orqali socket
yaratish mumkin. Socket yaratish uchun dasturchi, tarmoq protokollashtirish, IP
manzil va portni aniqlab beradi.
Tarmoqqa ulanish: Yaratilgan socketni tarmoqqa ulash uchun Connect
yoki Bind metodlaridan foydalanish mumkin. Connect metodi serverga ulanishni
boshlash va Bind metodi esa server socketni manzil va portga bog'lash uchun
ishlatiladi.
Ma'lumot almashish va jo'natish: Tarmoqdagi ma'lumotlarni o'qish va
yozish uchun Send va Receive metodlaridan foydalanish mumkin. Send metodi
orqali ma'lumotni tarmoqqa jo'natish, Receive metodi esa tarmoqdan ma'lumot
o'qish imkonini beradi.
Tarmoqni yopish: Tarmoq bilan ishlayotgan socketni yopish uchun Close
yoki Shutdown metodlaridan foydalanish mumkin. Close metodi socketni to'liq
yopadi, Shutdown metodi esa bir tomonlama yopishni amalga oshiradi.
Socketlar C# tilida tarmoq kommunikatsiyasini o'rganish, server va klient
ilovalarni yaratish, ma'lumot almashish va jo'natish, amalga oshirilgan
24
ma'lumotlarga qarab amalni davom ettirish va boshqalar kabi turli tarmoq
vositalarini tahlil qilish uchun keng qo'llaniladi.
Socketlar C# dasturlashida umumiy tarmoq kommunikatsiyasi uchun
asosiy
usuldir, lekin uni yordamida Web socketlar, TCP/IP va UDP protokollaridan
foydalanish, tarmoq server va klientlarni yaratish va ularga bog'lanish, ma'lumot
almashish va jo'natish va turli tarmoq operatsiyalarini amalga oshirish mumkin.

2.2. .NET Framework haqida

.NET Framework nima? .NET Framework Microsoft tomonidan ishlab


chiqarilgan, dasturlarni yaratish va ishga tushirishda yordam beruvchi dasturlash
platformasi va kutilmagan kutubxonalar to'plami. Bu platforma Windows
operatsion tizimida dasturlarni yaratish uchun mo'ljallangan va uni ishga tushirish
uchun yordamchi funktsiyalar to'plamini o'z ichiga oladi.
Asosiy xususiyatlar:
 Kross-platformaviylik: .NET Core, .NET 5 va keyingi
versiyalarda, .NET dasturlarini Windows, macOS va Linuxda ishlatish mumkinligi
kengayib bormoqda.
 Grafik interfeyslar (GUI): Windows Forms va WPF kabi texnologiyalar
orqali grafik interfeyslarni yaratish uchun imkoniyatlar mavjud.
 Asinxron amallar: Async/await kabi texnologiyalar orqali asinxron
amallarni oddiyroq bajarish imkoniyati.
 Integratsiya: .NET Framework, SQL Server, Office va boshqa Microsoft
mahsulotlari bilan integratsiya qilish imkoniyatini beradi.
 Xavfsizlik: .NET Framework dasturlari .NET CLR (Common Language
Runtime) orqali ishga tushiriladi, bu esa dasturlarni izolyatsiyalash, xavfsizlikni
ta'minlash va boshqa qulayliklar bilan ta'minlashga yordam beradi.
Komponentlar:

25
 CLR (Common Language Runtime): .NET Framework dasturlarini
bajarish uchun muhim modul. Dastur CIL (Common Intermediate Language) ga
o'giriladi va uni maqsadga muvofiq amalga oshiradi.
 BCL (Base Class Library): Asosiy sinflar va interfeyslar to'plami, konsol
dasturlaridan boshlab grafik interfeyslarga qadar ko'p funksiyalarni o'z ichiga
oladi.
 ASP.NET: Veb dasturlarini yaratish va ishga tushirishda yordam
beruvchi platforma.
 ADO.NET: Ma'lumotlar bazalariga ulanish va ma'lumotlar bilan ishlash
uchun modular.
Versiyalar. .NET Framework bugungi kunda matbuot qilingan
versiyasi .NET Framework 4.8 hisoblanadi, ammo Microsoft yangi
proyektlarga .NET Core va undan so'ng .NET 5 ni tavsiya qiladi. .NET Core,
platformani Windows, macOS va Linuxda ishlatish imkoniyatini berdi va kross-
platformaviylikni oshiradi. .NET 5 esa .NET Core va .NET Frameworkning yuqori
versiyalarini birlashtirib, uni yanada samarali va boshqa platformalarga
kengaytirilgan shaklidagi .NET 6 ga o'tkazdi.
.NET Framework haqida qo'shimcha ma'lumotlar. Quyidagi qo'shimcha
ma'lumotlar uning asosiy xususiyatlarini kengaytirib beradi:
 Dasturlash Tillari. .NET Framework dasturlash uchun bir qator tillarni
qo'llab-quvvatlaydi, shu jumladan C#, Visual Basic va F#. Ular o'zaro ta'sir-chan
bo'lib, dasturchilarning tanloviga qarab dasturlarni yaratishga imkon beradi.
 Boshqa Komponentlar. .NET Framework BCL (Base Class Library) va
CLR (Common Language Runtime) kabi boshqa komponentlarga ega. BCL,
umumiy maqsadli sinflar va funksiyalar to'plamini o'z ichiga oladi, bu esa oddiy
amallarni bajarishda va xususiyatlarini kengaytirishda yordam beradi. CLR esa
dasturlarni ijro etish va boshqa amallarni bajarish uchun zarur qo'llab-quvvatni
ta'minlaydi.

26
 Dasturlash Muhitlari. .NET Framework dasturlarni yaratish uchun
muhim muhitlarni taqdim etadi, shu jumladan Visual Studio IDE (Integrated Deve-
lopment Environment). Visual Studio dasturchilarga kodni yozish, boshqa
qurilmalarga dastur o'rnatish, tekshirish va ishga tushirishda yordam beradi.
 Versiyalar va Kuzatish. .NET Frameworkning o'zida bir nechta
versiyalar mavjud bo'lib, har biri o'zining qo'shimcha xususiyatlarga ega.
Microsoftning veb saytlari orqali dasturlash platformasining so'nggi
yangilanishlarini va yangi versiyalarni kuzatish mumkin.
 Tayyor Dasturlar va Kutubxonalar. .NET Framework dasturchilar uchun
o'zining dasturlarini yaratishda yordam beradi, shuningdek, ko'plab kutubxonalarni
taqdim etadi, masalan, ma'lumotlar bazalariga ulanish, grafik interfeyslar yaratish,
veb ilovalarni ishlab chiqish va h.k.
 Kuzatish va Qo'llab-quvvat. .NET Framework o'zida kengaytirilgan
kuzatish vositalarini taqdim etadi, shu jumladan, kodni tekshirish, qurilma
to'plamlarini yaratish va ishlab chiqishning qulayliklari bilan ta'minlash.

2.3. Visual studio dasturlash muhiti haqida

Windows-da C# uchun Visual Studio-ni qanday yuklab olish va


o'rnatish. Microsoft Visual Studio - bu Microsoft kompaniyasining
integratsiyalashgan ishlab chiqish muhiti (IDE). U Microsoft Windows uchun
kompyuter dasturlarini ishlab chiqish uchun ishlatiladi. Visual Studio - bu .Net
platformasida qurilgan barcha ilovalar uchun yagona oyna. Visual Studio
yordamida ilovalarni ishlab chiqish, disk raskadrovka qilish va ishga tushirish
mumkin [6-7].
Shakllarga asoslangan va veb-ga asoslangan ilovalar ushbu IDE yordamida
ishlab chiqilishi va ishlab chiqilishi mumkin. Quyida Visual Studio'ni qanday
o'rnatish bo'yicha bosqichma-bosqich jarayon keltirilgan.
Windows uchun Visual Studio qanday yuklab olish va o'rnatish. Keyingi
darslarda dasturlar yaratish bilan ishlashimiz uchun Visual Studio o'rnatish
27
bosqichlarini ko'rib chiqamiz va Visual Studio IDE ni yuklab olamiz. Ushbu
qo'llanmada biz Windows uchun Visual Studio dasturini qanday yuklab olishni
o'rganamiz [6-7].
1-qadam. Visual Studio dasturini yuklab oling. Birinchidan, quyidagi
Visual Studio bepul yuklab olish https:
//visualstudio.microsoft.com/downloads/ havolasiga tashrif
buyuring. Natijada Visual Studio dasturi yuklab olinadi (2.1-rasm). Quyidagilardan
biri tanlashini mumkin:
 Visual Studio 2022 community nashri;
 Visual Studio 2022 Professional nashri (90 kunlik bepul sinov).
2-qadam. .exe faylini oching. Yuklab olingan exe faylini bosing (2.2-rasm):

2.1-rasm. Visual Studio dasturini yuklab olish.


3-qadam. O'rnatishni boshlang. Keyingi ekranda Visual Studio o'rnatishni
boshlash uchun Davom etish tugmasini bosing (2.3-rasm):

28
2.2-rasm. .exe faylini ochish.
4-qadam. O'rnatish tugallang. Visual Studio dastlabki fayllarni yuklab
olishni boshlaydi (2.4-rasm). Yuklab olish tezligi internetga ulanishingizga qarab
farq qiladi.
5-qadam. Dasturiy ta'minot versiyasini tanlang. Keyingi ekranda o'rnatish
tugmasini bosing (2.5-rasm).

29
2.3-rasm. Visual Studio o'rnatishni boshlash.

2.4-rasm. Visual Studio dastlabki fayllarni yuklab olish.

2.5-rasm. Dasturiy ta'minot versiyasini tanlash.

30
2.6-rasm. Ish stoli versiyasida “.Net ish stolini ishlab chiqish” ni tanlang
va o'rnatish.
7-qadam. Fayllarni yuklab olishni kuting. Visual Studio 6-bosqichdagi
tanlov asosida tegishli fayllarni yuklab oladi (2.7-rasm).

2.7-rasm. Visual Studio 6-qadamdagi tanlov asosida tegishli fayllarni


yuklash.

31
8-qadam. Kompyuteringizni qayta yoqing. Yuklab olish tugallangandan
so'ng, Visual Studio sozlamalarini bajarish uchun kompyuterni qayta ishga
tushirish so'raladi (2.8-rasm).

2.8-rasm. Visual Studio sozlamalarini bajarish uchun kompyuterni qayta


ishga tushirishni so'rash.
9-qadam. Visual Studio dasturini oching. Qayta ishga tushirilgandan so'ng,
Visual Studio IDE-ni oching (2.9-rasm).
Siz tanlagan mavzuni tanlang. Visual Studio-ni ishga tushirish-ni bosing.
10-qadam. Visual Studio dan foydalanishni boshlang. Visual Studio IDE
da siz yangi C# ilovalarini yaratish uchun Fayl menyusiga o'tishingiz mumkin
(2.10-rasm).

32
2.9-rasm. Visual Studio IDE-ni ochish.

2.10-rasm. Visual Studio IDE da yangi C# ilovalarini yaratish uchun Fayl


menyusiga o'tish.
33
Visual Studio ning asosiy xususiyatlari [6-7]:
Istalgan .Net tilida dastur yaratish - Visual Studio IDE dan istalgan .Net
tilida dastur yaratish uchun foydalanish mumkin. Demak, dasturchi dasturni ishlab
chiqish uchun C# , VB.Net yoki hatto F# dan foydalanishi mumkin.
Har qanday dastur turini yaratish - Visual Studio IDE har qanday turdagi
ilovani yaratish uchun ishlatilishi mumkin. (Veb-asosidagi ilova yoki Windows
Forms-ga asoslangan ilova).
Ilovalarni tezda tuzatish - Ilovalar qurilayotganda sinovdan o'tkazilishi
mumkin. IDE dasturni ishlab chiqish jarayonida istalgan vaqtda ishga tushirishga
imkon beradi. Shunday qilib, ishlab chiquvchi rivojlanish bosqichida xatolarni
tekshirishi mumkin.
Kengaytmalar - IDE uchinchi tomon kengaytmalarini o'rnatish
imkoniyatiga ega. Misol sifatida manba kodlari omborini boshqarish uchun
foydalaniladigan Subversion bo'lishi mumkin. Subversion kodni markaziy
omborga yuklash uchun ishlatiladi. Bu kodning nusxasi doimo mavjud bo'lishi
uchun amalga oshiriladi. Visual Studio IDE-ning o'zidan bunday dasturiy ta'minot
bilan integratsiya qilish imkoniyatiga ega. Shunday qilib, ishlab chiquvchi IDE-
ning o'zidan kod omborlari bilan ishlashi mumkin.

34
III BOB. DESKTOP ILOVA LOYIHASI

3.1. Loyiha konsepsiyasi, talablar tahlili, dizayn, UI/UX

Dasturni yаrаtishdа bizgа quyidаgilar kerаk bo‘lаdi:


 C# dаsturlаsh tili;
 Visuаl Studio integrаtsion dаsturlаsh muhiti;
 .NET Frаmework 4.8;

Biz dаsturni Visuаl Studio integrаtsion muhitidа tuzаmiz yа’ni uning eng
oxirgi versiyаsi Visuаl Studio 2022 dаn foydаlаndik [6-7].
Visuаl studio muhitidа dаstur yаrаtishni boshlаymiz (3.1-rasm):

3.1-rаsm. Visuаl studio muhitidа dаstur yаrаtish.

35
Kerаkli frаmeworkni tаnlаymiz (3.2-rasm):

3.2-rаsm. Kerаkli frаmeworkni tаnlаsh.


36
Loyihаgа nom berаmiz (3.3-rаsm):

3.3-rаsm. Loyihаgа nom berish.

37
Bo’sh oynаning ko’rinishi, ungа kerаkli elementlаrni qo’shаmiz (3.4-rаsm):

3.4-rаsm. Bo’sh oynаda kerаkli elementlаrni qo’shish.

Endi esa biz desktop loyihamizni boshlaymiz. bo’limidan


kerakli komponentalarni qidirishimiz mumkin (3.5-rаsm):

3.5-rаsm. Toolbox dan qidirish


3.5-rasmdagi Buttonni bosib turib Activity sahifasiga olib o’tamiz . (3.6-
rasm):
38
3.6-rasm. Activity sahifasiga komponentalarni olib o’tish .
Barcha kerakli komponentalarni Main.Designer.cs sahifasiga olib kelamiz
(3.7-rasm):

3.7-rasm. Kerakli komponentalarni Designer oynasiga olib kelish .


39
Properties bo’limidan komponentalarning xususiyatlarini tanlashimiz
mumkin (3.8-rasm):

3.8-rasm. Properties bo’limi orqali xususiyatlarni tanlash

3.2. Ilovaning ishlash jarayoni

Dasturning bosh sahifasida C# dasturlash tiliga oid ma’ruzalar to’plami


mavzulashtirilgan shaklda namoyish qilinadi (3.9-rasm):

40
3.9-rasm. Bosh sahifa.
Bunda biz kerakli mavzuni tanlab mavzuga oid ma’ruza matnlarini
ko’rishimiz mumkin (3.10-rasm):

3.10-rasm. Ayni bir mavzuni tanlab ma’ruzalarga kirish .


41
CHIQISH tugmasi orqali dasturdan chiqishimiz uchun so’rov olishimiz
mumkin (3.11-rasm).

3.11-rasm. Dasturdan chiqish uchun so’rov.


Har bir mavzu uchun mavzularni o’rganganlikni tekshirish uchun testlar
beriladi .(3.12-rasm).

3.12-rasm.Testlar
42
HAQIDA bandi orqali dastur versiyasi, dasturchi haqida ma’lumot va
bog’lanish uchun kontaktlarni toppish mumkin (3.13-rasm).

3.13-rasm. Haqida.
Vazifalar dispecheri 3.14-rasmda keltirilgan.

3.14-rasm.Vazifalar dispecheri.
Vazifalar dispecherida ko’rinib turibdiki, yaratilgan dastur komyuter

43
xotirasidan juda kam joy egallagan va tezkor xotiraga deyarli murojat qilmaydi. Bu
esa dusturning kompyuterga yuklanma bermayotganini ko’rishimiz mumkin (3.15-
rasm).

3.15-rasm. Xususiyatlar.
Dasturning umumiy hajmi qismi 4.18 Mb ni tashkil qiladi.

Dasturdan chiqish uchun so’rov so’raladi: Yes yoki No (3.16-rasm).

3.16-rasm. Dasturdan chiqish

3.3. Foydalanuvchi qo’llanmasi

Ushbu qo'llanma sizga C# dasturlash tilini o'rgatuvchi desktop ilovadan


qanday foydalanishni tushuntiradi. Ilova C# tilini o'rganayotgan foydalanuvchilar
uchun mo'ljallangan bo'lib, unda kod yozish, test va tushunishni osonlashtiruvchi
turli funksiyalar mavjud.

44
Ilovani o'rnatish. O'rnatish faylini ishga tushirish, yuklab olingan faylni
ishga tushiring va ekrandagi ko'rsatmalarga amal qilib ilovani o'rnating. O'rnatish
tugagandan so'ng, ish stolidagi yoki dasturlar menyusidagi ilova belgisiga ikki
marta bosib ilovani ishga tushiring. Ilovani ishga tushirgandan so'ng, bosh sahifa
ochiladi. Bu sahifada siz quyidagi asosiy elementlarni ko'rasiz:

1. Navigatsiya menyusi: ilovaning turli bo'limlariga o'tish uchun menyu;


2. O'rganish bo'limi: C# dasturlash tilining nazariy qismlarini o'rganish uchun
bo'lim;
3. Mashqlar bo'limi: kod yozish va bajarish uchun mashqlar va misollar;
4. Test to'limi: o'zingizni sinash uchun testlar;
5. Yordam bo'limi: qo'llanma va yordam ma'lumotlari;
6. Ilovadan chiqish .
O’rganish bo'limi. "O'rganish" bo'limida C# dasturlash tilining turli
mavzulari bo'yicha nazariy ma'lumotlarni topishingiz mumkin. Har bir mavzu
quyidagilarni o'z ichiga oladi:

 Nazariy qism: mavzuga oid tushunchalar va izohlar;


 Kod kisollari: har bir tushunchani yaxshiroq tushunishingiz uchun kod
misollari;
 Tajriba to'limi: o'zingiz kod yozib ko'rishingiz mumkin bo'lgan joy.
Test bo'limi. "Test" bo'limida siz o'z bilimingizni sinashingiz mumkin. Bu
bo'limda quyidagilar mavjud:

- Savollar: turli mavzulardan tanlangan savollar;

- Javob variantlari: har bir savol uchun bir nechta javob variantlari;

- Natijalarni ko'rish: test tugagach, natijalarni ko'rish va xatoliklar ustida ishlash


imkoniyati.

Ilovadan foydalanish bo'yicha tavsiyalar:


45
 Nazariy ma'lumotlarni o'rganing: har bir mavzuni diqqat bilan o'rganing va
kod misollarini tushuning;
 Mashqlarni bajarib ko'ring: nazariy ma'lumotlarni mustahkamlash uchun
mashqlarni bajaring;
 Testlardan o'ting: bilimingizni sinash uchun testlarni bajaring;
 Xatolarni tahlil qiling: kod yozishda yoki testlarda xatoliklar bo'lsa, ularni
tahlil qilib, to'g'rilang;
 Qo'shimcha manbalarni o'rganing: qo'shimcha o'quv materiallari va
manbalarni o'rganib chiqing.
Qo'llab-quvvatlash. Agar ilovadan foydalanishda muammolarga duch
kelsangiz yoki savollaringiz bo'lsa, yordam bo'limiga murojaat qiling yoki
quyidagi manzil orqali biz bilan bog'laning:

- Email: saidakbarnarzullayev@mail.ru;

- Telefon: +998883948797.

3.4. Kompyuter bilan ishlashda qo'yiladigan talablar

Kompyuter uchun standartlar. Ishlab chiqarish jarayonida kompyuterning


har bir turi akkreditatsiyalangan sinov laboratoriyalarida sanitariya -
epidemiologiya tekshiruvidan o'tkaziladi. Shu sababli, yuqori sifatli va
sertifikatlangan uskunalarni sotib olgan ish beruvchilar xavotirlanmasligi kerak:
undan oldin barcha qoidalar va qoidalarga rioya etilishi tekshiriladi [12].
Ish beruvchining kompyuter konstruktsiyasi korpusni har xil tekisliklarda
(gorizontal, vertikal) ma'lum bir holatda mahkamlash bilan aylantira olishi
kerakligini yodda tutishi muhim. Kompyuter korpuslari yumshoq ohangda
bo'yalgan bo'lishi kerak, ya'ni korpus, klaviatura va boshqa kompyuter bloklari va
qurilmalari bo'lishi kerak. mat yuzasi, yaltiroq qismlar porlamasligi uchun
ishlatilmasligi kerak. Monitor yorqinlik va kontrastni boshqarishni ta'minlashi

46
kerak (qoida tariqasida, barcha zamonaviy monitorlarda bunday imkoniyat
mavjud).
Ish joyiga qo'yiladigan talablar. Endi shaxsiy kompyuterlar bilan
jihozlangan ish stantsiyalariga qo'yiladigan asosiy talablar haqida gapiraylik. Biz
ish beruvchi mustaqil nazorat qila olmaydigan bunday sharoitlar haqida
to'xtalmaymiz (masalan, elektromagnit maydonlar darajasi, shovqin, tebranish va
boshqalar). Bunday ko'rsatkichlar ustidan instrumental nazorat Davlat sanitariya-
epidemiologiya nazorati organlari yoki akkreditatsiyalangan sinov laboratoriyalari
(markazlari) tomonidan amalga oshiriladi [12].
Turar-joy binolariga qo'yiladigan talablar. Katod nurli monitorli
kompyuter foydalanuvchisiga va yordamchi uskunalar (printer, skaner va
boshqalar) xonaning maydoni kamida 6 kvadrat metr bo'lishi kerak. Yordamchi
qurilmalar maydoni 4,5 kvadrat metrdan kam bo'lishi mumkin [12].
Shaxsiy kompyuter foydalanuvchilari ishlaydigan joylarda, devorlar va
shiftlarni aks ettiruvchi nurda yarqirash, porlash va noqulaylikni bartaraf etish
uchun diffuz aks etuvchi materiallardan foydalanish kerak.
Xavfsiz muhit yaratish uchun kompyuterda ishlayotganda, bino jihozlangan
bo'lishi kerak. Quvvat kabellari, yuqori kuchlanishli transformatorlar, texnologik
uskunalarni kompyuteringizni yaqin joylashtirmang, bu sizning
kompyuteringizning ishlashiga xalaqit berishi mumkin.
Ish joylarini yoritish talablari. Kompyuter bilan jihozlangan ish joylari
joylashgan xona etarlicha yaxshi yoritilgan bo'lishi kerak: ya'ni tabiiy va sun'iy
yoritish kerak. Deraza teshiklari shimoliy va shimoli -sharqqa qaragan bo'lishi
kerak. Bunday holda, derazalar tartibga solinadigan qurilmalar (pardalar, pardalar
va boshqalar) bilan jihozlangan bo'lishi kerak [12].
Kompyuterli xonalarda sun'iy yoritish bir xil bo'lishi kerak. Doimiy ish
oqimi bo'lgan ish joylarida kombinatsiyalangan yoritish tizimi ishlatiladi: ya'ni
umumiy yoritishga chiroq qo'shiladi. Mahalliy yoritish kamida 40 ° himoya
burchagi bo'lgan shaffof bo'lmagan reflektorga ega bo'lishi kerak.
47
Ish stoli shunday o'rnatiladiki, monitor yon tomoni yorug'lik teshiklariga
to'g'ri keladi. Shunda tabiiy yorug'lik chapdan tushadi.
Yorug'lik ekran yuzasida yarqiramasligi kerak va 300 lyuksdan oshmasligi
kerak va ishchi hujjat maydonidagi stol yuzasining yoritilishi 300 - 500 lyuks
bo'lishi kerak. Albatta, bu qiymatni o'zingiz o'lchash muammoli. Ammo, agar biz
odatdagi vattni hisobga olsak, 1 kvadrat metrga o'rtacha 18-25 vatt kerak bo'ladi.
Sun'iy yoritish uchun lyuminestsent lampalar LB yoki ixcham
lyuminestsent lampalar(CFL)dan foydalanish tavsiya etiladi. Metall halidli
lampalardan foydalanishga ruxsat beriladi. Mahalliy yoritish moslamalarida oddiy
lampalar, shu jumladan halogen lampalardan foydalanish mumkin.
Kompyuter foydalanuvchilari uchun ish joylarini tashkil qilishning
umumiy talablari. Ish joylarini kompyuterlar joylashtirganda, monitorli ish stollari
orasidagi masofa (bitta monitorning orqa yuzasi va boshqa monitorning ekrani
yo'nalishi bo'yicha) kamida 2,0 m bo'lishi kerak va monitorlarning yon yuzalari
orasidagi masofa 1,2 m bo'lishi kerak [12].
Kompyuter bilan jihozlangan ish joylari, ijodiy ishlarni bajarayotganda,
balandligi 1,5 - 2,0 m bo'lgan bo'linmalar bilan izolyatsiya qilinishi kerak.
Monitor ekrani foydalanuvchining ko'zidan 600 - 700 mm masofada
joylashgan bo'lishi kerak, lekin 500 mm dan yaqin emas.
Katta yoshdagi foydalanuvchilar uchun stolning ishchi yuzasi balandligi
680 - 800 mm oralig'ida sozlanishi kerak. Kompyuter stolining ishchi yuzasining
modulli o'lchamlarini hisobga olish kerak: kengligi - 800, 1000, 1200, 1400 mm va
chuqurligi - 800, 1000 mm. Ish stolining balandligi kamida 600 mm, kengligi
kamida 500 mm, tizzalarida chuqurligi kamida 450 mm va cho'zilgan oyoqlarida
kamida 650 mm bo'lishi kerak [12].
Klaviatura stol yuzasida, foydalanuvchiga qaragan chetidan 100 - 300 mm
masofada yoki stol usti bilan ajratilgan maxsus yuzada joylashgan bo'lishi kerak.

48
XULOSA
"C# dasturlash tilini o‘rgatuvchi desktop ilova" dasturini ishlab chiqish
davomida quyidagi bilim va ko‘nikmalarga ega bo‘ldim:
- C# dasturlash tilining asosiy tamoyillari va sintaksisini chuqur
o‘rgandim;
- .NET Framework haqida keng qamrovli bilimlarga ega bo‘ldim va undan
samarali foydalanishni o‘rgandim;
- Visual Studio dasturlash muhiti bilan ishlashda amaliy tajriba orttirdim;
- Dasturiy loyihani rejalashtirish, loyihaning konsepsiyasini yaratish va
talablar tahlilini o‘tkazishni amalda qo‘lladim;
- Foydalanuvchi interfeysini (UI) va foydalanuvchi tajribasini (UX) dizayn
qilishda ko‘nikma orttirdim.
Ushbu bitiruv malakaviy ishida C# dasturlash tilini o‘rgatuvchi desktop
ilova yaratildi. Ushbu ilova foydalanuvchilarga dasturlashni o‘rganish jarayonini
qulaylashtirish va samaradorligini oshirish maqsadida quyidagi afzalliklarni
taqdim etadi:
- Foydalanuvchilarga qulay va intuitiv interfeys;
- Nazariy bilimlarni mustahkamlash uchun interaktiv mashg‘ulotlar;
- Amaliy mashqlar va kod yozish imkoniyatlari;
Bu dasturiy ilova O‘zbekistonda dasturlashni o‘rganish istagida bo‘lgan
yoshlar va mutaxassislar uchun muhim ahamiyatga ega bo‘lib, milliy dasturiy
ta’minot bozorida katta ahamiyatga ega bo‘ladi. Ilova o‘zbek tilida taqdim etilgani
sababli, ona tilida ta’lim olish imkoniyatini yaratadi va bu o‘quvchilar uchun
qo‘shimcha qulaylik va samaradorlikni oshiradi.
Ilova yaratish jarayonida rahbarim bilan birgalikda ishladim va ilmiy
yondashuvni qo‘llagan holda dasturiy ta’minotni muvaffaqiyatli ishlab chiqdik.
Kelajakda ushbu ilovani yanada rivojlantirish va funksional imkoniyatlarini
kengaytirish maqsadlarim bor. Shu orqali, O‘zbekistonda IT sohasida dasturlashni

49
o‘rganishni keng targ‘ib qilish va milliy dasturiy mahsulotlarni rivojlantirishga
hissa qo‘shishni niyat qilaman.
FOYDALANILGAN ADABIYOTLAR
1. Troelsen, A., & Japikse, P. (2017). *Pro C# 7: With .NET and .NET
Core*. Apress.
2. Albahari, J., & Albahari, B. (2015). *C# 6.0 in a Nutshell: The
Definitive Reference*. O'Reilly Media.
3. Freeman, A. (2016). *Pro ASP.NET Core MVC 2*. Apress.
4. Richter, J. (2012). *CLR via C#*. Microsoft Press.
5. Skeet, J. (2019). *C# in Depth*. Manning Publications.
6. Hejlsberg, A., Torgersen, M., Wiltamuth, S., & Golde, P. (2010). *The
C# Programming Language*. Addison-Wesley Professional.
7. Joseph Albahari, Ben Albahari (2021). *C# 9.0 in a Nutshell: The
Definitive Reference*. O'Reilly Media.
8. Nagel, C. (2018). *Professional C# 7 and .NET Core 2.0*. Wrox.
9. Hunter, J., & Stephens, R. (2017). *Visual Studio 2017: An In-Depth
Guide Into the Essentials of Visual Studio from Beginners to Expert*. CreateSpace
Independent Publishing Platform.
10. Messerschmidt, G. (2016). *C# Programming: From Problem Analysis
to Program Design*. Course Technology.
11. Troelsen, A. (2020). *Pro C# 8 with .NET Core 3*. Apress.
12. Sells, C., & Weinhardt, B. (2011). *Programming WPF*. O'Reilly
Media.
13. Freeman, A. (2019). *Pro .NET Core 3*. Apress.
14. Nixon, R. (2021). *Learning C# by Developing Games with Unity
2021*. Packt Publishing.
15. McCarthy, P. (2017). *C# for Beginners: Learn the Basics Step by
Step*. CreateSpace Independent Publishing Platform.

50
16. Jansen, M. (2018). *C# Programming for Beginners: An Introduction
and Step-by-Step Guide to Programming in C#*. CreateSpace Independent
Publishing Platform.
ILOVALAR
1-ilova. Dastur kodi
Main.cs
using System;
using System.IO;
using System.Windows.Forms;

namespace C__o_rganamiz
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();

try
{
string folderPath = "data";

if (Directory.Exists(folderPath))
{
string[] directories =
Directory.GetDirectories(folderPath);

foreach (string directory in directories)


{
listBox1.Items.Add(directory.Substring(5));
}
}
else
{
MessageBox.Show("Error", "Folder Not Found",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show("An error occurred: " + ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
51
}
}

private void Main_Activated(object sender, EventArgs e)


{
// You can add any functionality here for Main form
activation
}

private ListBox GetListBox1() { return mavzular; }

private void label3_Click(object sender, EventArgs e) { }


private void exit_button_Click(object sender, EventArgs e)
{
DialogResult result =
MessageBox.Show("Dasturdan chiqishni xohlaysizmi?",
"CHIQISH",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);

if (result == DialogResult.Yes)
{
Application.Exit();
}
}
private void about_button_Click(object sender, EventArgs e)
{
MessageBox.Show("ABOUT");
}

private void mavzular_DoubleClick(object sender, EventArgs e)


{
try
{
if (listBox1.SelectedItem != null)
{
string selectedItemText =
listBox1.SelectedItem.ToString();
string text = "";
string filePath = "data/" + selectedItemText +
"/lecture.txt";

if (File.Exists(filePath))
{
using (StreamReader reader = new
StreamReader(filePath))
{
text = reader.ReadToEnd();
}
52
LectureForm lectureForm =
new LectureForm(selectedItemText, text);
lectureForm.ShowDialog();
}
else
{
MessageBox.Show("Error !", "File Not Found",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
MessageBox.Show("An error occurred: " + ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
}

Main.Designer.cs
namespace C__o_rganamiz
{
partial class Main
{
private System.ComponentModel.IContainer components = null;

protected override void Dispose(bool disposing)


{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

private void InitializeComponent()


{
System.ComponentModel.ComponentResourceManager resources =
new System.ComponentModel.ComponentResourceManager(typeof(Main));

53
panel1 = new Panel();
listBox1 = new ListBox();
panel5 = new Panel();
label1 = new Label();
panel2 = new Panel();
panel4 = new Panel();
about_button = new Button();
exit_button = new Button();
panel3 = new Panel();
label3 = new Label();
logo = new PictureBox();
label2 = new Label();
panel1.SuspendLayout();
panel5.SuspendLayout();
panel2.SuspendLayout();
panel4.SuspendLayout();
panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)logo).BeginInit();
SuspendLayout();
//
// panel1
//
panel1.Controls.Add(listBox1);
panel1.Controls.Add(panel5);
panel1.Dock = DockStyle.Left;
panel1.Location = new Point(0, 0);
panel1.Name = "panel1";
panel1.Size = new Size(273, 561);
panel1.TabIndex = 0;
//
// listBox1
//
listBox1.Dock = DockStyle.Fill;
listBox1.Font = new Font("Times New Roman", 15.75F,
FontStyle.Bold, GraphicsUnit.Point, 0);
listBox1.FormattingEnabled = true;
listBox1.ItemHeight = 24;
listBox1.Location = new Point(0, 51);
listBox1.Margin = new Padding(3, 6, 3, 3);
listBox1.Name = "listBox1";
listBox1.Size = new Size(273, 510);
listBox1.TabIndex = 2;
listBox1.DoubleClick += mavzular_DoubleClick;
//
// panel5
//
panel5.BorderStyle = BorderStyle.FixedSingle;
panel5.Controls.Add(label1);
panel5.Dock = DockStyle.Top;
54
panel5.Location = new Point(0, 0);
panel5.Name = "panel5";
panel5.Size = new Size(273, 51);
panel5.TabIndex = 1;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI", 14.25F, FontStyle.Regular,
GraphicsUnit.Point, 0);
label1.Location = new Point(76, 8);
label1.Name = "label1";
label1.Size = new Size(109, 25);
label1.TabIndex = 0;
label1.Text = "MAVZULAR";
//
// panel2
//
panel2.Controls.Add(panel4);
panel2.Controls.Add(panel3);
panel2.Dock = DockStyle.Fill;
panel2.Location = new Point(273, 0);
panel2.Name = "panel2";
panel2.Size = new Size(511, 561);
panel2.TabIndex = 1;
//
// panel4
//
panel4.Controls.Add(about_button);
panel4.Controls.Add(exit_button);
panel4.Dock = DockStyle.Bottom;
panel4.Location = new Point(0, 516);
panel4.Name = "panel4";
panel4.Padding = new Padding(4);
panel4.Size = new Size(511, 45);
panel4.TabIndex = 1;
//
// about_button
//
about_button.Dock = DockStyle.Right;
about_button.Location = new Point(341, 4);
about_button.Margin = new Padding(3, 3, 4, 3);
about_button.Name = "about_button";
about_button.Size = new Size(91, 37);
about_button.TabIndex = 1;
about_button.Text = "ℹ️ HAQIDA";
about_button.UseVisualStyleBackColor = true;
about_button.Click += about_button_Click;
//
55
// exit_button
//
exit_button.Dock = DockStyle.Right;
exit_button.Location = new Point(432, 4);
exit_button.Name = "exit_button";
exit_button.Size = new Size(75, 37);
exit_button.TabIndex = 2;
exit_button.Text = "❌CHIQISH";
exit_button.Click += exit_button_Click;
//
// panel3
//
panel3.Controls.Add(label2);
panel3.Controls.Add(label3);
panel3.Controls.Add(logo);
panel3.Dock = DockStyle.Fill;
panel3.Location = new Point(0, 0);
panel3.Name = "panel3";
panel3.Size = new Size(511, 561);
panel3.TabIndex = 0;
//
// label3
//
label3.AutoSize = true;
label3.BackColor = SystemColors.ActiveCaption;
label3.Font = new Font("Segoe UI", 24F, FontStyle.Regular,
GraphicsUnit.Point, 0);
label3.Location = new Point(46, 411);
label3.Name = "label3";
label3.Size = new Size(0, 45);
label3.TabIndex = 2;
label3.Click += label3_Click;
//
// logo
//
logo.Image = (Image)resources.GetObject("logo.Image");
logo.Location = new Point(46, 51);
logo.Name = "logo";
logo.Size = new Size(422, 338);
logo.SizeMode = PictureBoxSizeMode.Zoom;
logo.TabIndex = 1;
logo.TabStop = false;
//
// label2
//
label2.AutoSize = true;
label2.BackColor = SystemColors.Control;
label2.Font = new Font("Segoe UI", 15.75F, FontStyle.Regular,
GraphicsUnit.Point, 0);
56
label2.Location = new Point(46, 411);
label2.Name = "label2";
label2.Size = new Size(421, 30);
label2.TabIndex = 3;
label2.Text = "C# dasturlash tilini o'rgatuvchi desktop
ilova";
//
// Main
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(784, 561);
Controls.Add(panel2);
Controls.Add(panel1);
Name = "Main";
Text = "Bosh sahifa";
Activated += Main_Activated;
panel1.ResumeLayout(false);
panel5.ResumeLayout(false);
panel5.PerformLayout();
panel2.ResumeLayout(false);
panel4.ResumeLayout(false);
panel3.ResumeLayout(false);
panel3.PerformLayout();
((System.ComponentModel.ISupportInitialize)logo).EndInit();
ResumeLayout(false);
}

#endregion

private Panel panel1;


private Panel panel2;
private Panel panel4;
private Button about_button;
private Button exit_button;
private Panel panel3;
private Panel panel5;
private Label label1;
private PictureBox logo;
private Label label3;
private ListBox mavzular;
private ListBox listBox1;
private Label label2;
}
}

LectureForm.cs
57
using System;
using System.Net.Http;
using System.Windows.Forms;

namespace C__o_rganamiz
{
public partial class LectureForm : Form
{
public LectureForm(string theme, string text)
{
InitializeComponent();

this.Text = theme;
richTextBox1.Text = text;

private void exit_button_click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Dasturdan chiqishni
xohlaysizmi?", "CHIQISH", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);

if (result == DialogResult.Yes)
{
this.Close(); // Close the form if the user chooses 'Yes'
}
}
}
}

Program.cs

namespace C__o_rganamiz
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high
DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
58
ApplicationConfiguration.Initialize();
Application.Run(new Main());
}
}
}

Test.Designer.cs

namespace C__o_rganamiz
{
partial class Main
{
private System.ComponentModel.IContainer components = null;

protected override void Dispose(bool disposing)


{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

private void InitializeComponent()


{
System.ComponentModel.ComponentResourceManager resources =
new System.ComponentModel.ComponentResourceManager(typeof(Main));
panel1 = new Panel();
listBox1 = new ListBox();
panel5 = new Panel();
label1 = new Label();
panel2 = new Panel();
panel4 = new Panel();
about_button = new Button();
exit_button = new Button();
panel3 = new Panel();
label3 = new Label();
logo = new PictureBox();
label2 = new Label();
panel1.SuspendLayout();
panel5.SuspendLayout();
panel2.SuspendLayout();
panel4.SuspendLayout();

59
panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)logo).BeginInit();
SuspendLayout();
//
// panel1
//
panel1.Controls.Add(listBox1);
panel1.Controls.Add(panel5);
panel1.Dock = DockStyle.Left;
panel1.Location = new Point(0, 0);
panel1.Name = "panel1";
panel1.Size = new Size(273, 561);
panel1.TabIndex = 0;
//
// listBox1
//
listBox1.Dock = DockStyle.Fill;
listBox1.Font = new Font("Times New Roman", 15.75F,
FontStyle.Bold, GraphicsUnit.Point, 0);
listBox1.FormattingEnabled = true;
listBox1.ItemHeight = 24;
listBox1.Location = new Point(0, 51);
listBox1.Margin = new Padding(3, 6, 3, 3);
listBox1.Name = "listBox1";
listBox1.Size = new Size(273, 510);
listBox1.TabIndex = 2;
listBox1.DoubleClick += mavzular_DoubleClick;
//
// panel5
//
panel5.BorderStyle = BorderStyle.FixedSingle;
panel5.Controls.Add(label1);
panel5.Dock = DockStyle.Top;
panel5.Location = new Point(0, 0);
panel5.Name = "panel5";
panel5.Size = new Size(273, 51);
panel5.TabIndex = 1;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI", 14.25F, FontStyle.Regular,
GraphicsUnit.Point, 0);
label1.Location = new Point(76, 8);
label1.Name = "label1";
label1.Size = new Size(109, 25);
label1.TabIndex = 0;
label1.Text = "MAVZULAR";
//
60
// panel2
//
panel2.Controls.Add(panel4);
panel2.Controls.Add(panel3);
panel2.Dock = DockStyle.Fill;
panel2.Location = new Point(273, 0);
panel2.Name = "panel2";
panel2.Size = new Size(511, 561);
panel2.TabIndex = 1;
//
// panel4
//
panel4.Controls.Add(about_button);
panel4.Controls.Add(exit_button);
panel4.Dock = DockStyle.Bottom;
panel4.Location = new Point(0, 516);
panel4.Name = "panel4";
panel4.Padding = new Padding(4);
panel4.Size = new Size(511, 45);
panel4.TabIndex = 1;
//
// about_button
//
about_button.Dock = DockStyle.Right;
about_button.Location = new Point(341, 4);
about_button.Margin = new Padding(3, 3, 4, 3);
about_button.Name = "about_button";
about_button.Size = new Size(91, 37);
about_button.TabIndex = 1;
about_button.Text = "ℹ️ HAQIDA";
about_button.UseVisualStyleBackColor = true;
about_button.Click += about_button_Click;
//
// exit_button
//
exit_button.Dock = DockStyle.Right;
exit_button.Location = new Point(432, 4);
exit_button.Name = "exit_button";
exit_button.Size = new Size(75, 37);
exit_button.TabIndex = 2;
exit_button.Text = "❌CHIQISH";
exit_button.Click += exit_button_Click;
//
// panel3
//
panel3.Controls.Add(label2);
panel3.Controls.Add(label3);
panel3.Controls.Add(logo);
panel3.Dock = DockStyle.Fill;
61
panel3.Location = new Point(0, 0);
panel3.Name = "panel3";
panel3.Size = new Size(511, 561);
panel3.TabIndex = 0;
//
// label3
//
label3.AutoSize = true;
label3.BackColor = SystemColors.ActiveCaption;
label3.Font = new Font("Segoe UI", 24F, FontStyle.Regular,
GraphicsUnit.Point, 0);
label3.Location = new Point(46, 411);
label3.Name = "label3";
label3.Size = new Size(0, 45);
label3.TabIndex = 2;
label3.Click += label3_Click;
//
// logo
//
logo.Image = (Image)resources.GetObject("logo.Image");
logo.Location = new Point(46, 51);
logo.Name = "logo";
logo.Size = new Size(422, 338);
logo.SizeMode = PictureBoxSizeMode.Zoom;
logo.TabIndex = 1;
logo.TabStop = false;
//
// label2
//
label2.AutoSize = true;
label2.BackColor = SystemColors.Control;
label2.Font = new Font("Segoe UI", 15.75F, FontStyle.Regular,
GraphicsUnit.Point, 0);
label2.Location = new Point(46, 411);
label2.Name = "label2";
label2.Size = new Size(421, 30);
label2.TabIndex = 3;
label2.Text = "C# dasturlash tilini o'rgatuvchi desktop
ilova";
//
// Main
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(784, 561);
Controls.Add(panel2);
Controls.Add(panel1);
Name = "Main";
Text = "Bosh sahifa";
62
Activated += Main_Activated;
panel1.ResumeLayout(false);
panel5.ResumeLayout(false);
panel5.PerformLayout();
panel2.ResumeLayout(false);
panel4.ResumeLayout(false);
panel3.ResumeLayout(false);
panel3.PerformLayout();
((System.ComponentModel.ISupportInitialize)logo).EndInit();
ResumeLayout(false);
}

#endregion

private Panel panel1;


private Panel panel2;
private Panel panel4;
private Button about_button;
private Button exit_button;
private Panel panel3;
private Panel panel5;
private Label label1;
private PictureBox logo;
private Label label3;
private ListBox mavzular;
private ListBox listBox1;
private Label label2;
}
}

63
2-ilova. Plagiat sertifikati

64
3-ilova. DGU sertifikati

65

También podría gustarte