C# dasturlash tili haqida tushuncha

|
C# dasturlash tili haqida tushuncha
|
bet | 4/6 | Sana | 10.01.2024 | Hajmi | 33,48 Kb. | | #133811 |
Bog'liq Mundarija3.C# dasturlash tili haqida tushuncha
Dasturchilar ko’pincha dasturning effektivligi va qo’llanishda uning tez ishlashini ortirish uchun har xil usullarni izlaydi. Ayrim holatlarda biz dastur yaratishda ko’proq instrumentlarni talab qilamiz, ya’ni dasturlash tillari bilan ishlagan vaqtda. Tilning effektivligi uning tezligi va shuning bilan bir vaqtda o’rinliligiga (qulayliligiga) bog’liq bo’ladi. Tilning sintaksisi qisqa tushunarli bo’lishi kerak. Shunday tillardan biri C# tilidir.
Dot.Net muhiti qo’llab-quvvatlaydigan Microsoft kompaniyasida yaratilgan C# dasturlash tili boy merosga tayanadi. Uning bosh arxitektori shu sohaning yetakchi mutaxassisi- Anders Xeylsbergdir.
C# - dunyodagi ikki eng yirik C va C++ dasturlash tillarining avlodi bo’lib hisoblanadi. U C dasturlash tilining sintaksis, kalit so’zlarni va operatorlarini me’ros qilib olgan. U C++ dasturlash tilida aniqlangan ob’ekt modelini ko’rish va takomillashtirish imkoniyatiga ega. C# dasturlash tili Java dasturlash tili bilan ham yaqindan bog’liqlikda.
C# dasturlash tili 1990-yil oxirlarida yaratilgan bo’lib, Microsoft Net platformasining bir bo’lagi bo’ldi. Eng birinchi bo’lib, 2000-yilni o’rtalarida a-versiya sifatida chiqdi.
C# dasturlash tilining genealogik manbasi quyidagi rasmda ko’rsatilgan.
Bool, sbayt, short,ushort, int,uint,long,ulong
C# da berilganlarning biriktirilgan tiplari ikkita umumiy toifaga bo’linadi: qiymatlar tiplari (butun, haqiqiy, belgi, mantiqiy, o’nli) va murojaatli tiplar (ob’ektlar, satrlar).
Butun
string
object
decimal
bool
char
Satrlar
Float, double
Ob’ektlar
Qiymatli tiplar
Murojaatli tiplar
O’nli
Mantiqiy
Belgili
Haqiqiy
Berilganlar tiplari
Amal Tayinlanishi Misol
+ Qo’shish X=x+y
- Ayirish X=x-y
* Ko’paytirish X=x*y
/ Bo’lish X=x/y
% Modul bo’yicha bo’lish X=x%y
++ Inkrement a++
-- Dektement b--
C# tili amallari operatorlar deb nomlanadi. Umuman olganda an’anaviy ravishda amal bajarishni ko’rsatish emas, balki tugallangan harakatni bayon qiluvchi ifoda operator deyiladi. Masalan, “a=b+c” ifoda uchun bu “ikki sonning yig’indisini o’zlashtirish operatori” deyish mumkin. Bu qo’shish operatori deyish to’g’ri emas.
C# tilida xotiraning (masalan, grafik display videoxotirasida) alohida razryadlarga ishlov beruvchi amallar mavjud. Bunday amallar razryadli amallar (bitlar ustida amallar) deyiladi. Ular o’zgaruvchida razryadlarni o’zgartirish, o’qish va surish imkonini beradi. Bunda o’zgaruvchi son deb emas, balki ikkilik razryadlar kombinatsiyasi deb qaraladi, ya’ni mantiqiy kod. Amal har bir razryad ustida alohida bajariladi. Razryadli amallar ro’yxati quyidagi jadvalda keltirilgan.
Amal Tayinlanishi Misol
& Razryadli VA I&16
| Razryadli YOKI l|12
^ Istesnoli razryad YOKI k^10
~ Razryadli inkor(YO’Q) ~a
<< Razryadli chapga surish <
>> Razryadli o’ngga surish >>3
If-else operatori
C# da shartli tarmoqlanishni tashkil etish uchun C va C++ tillarida foydalaniladigan if…else konstruksiyasidan foydalaniladi. Uning sintaksisi jarayonli tillarda dasturlash bilan shug’ullangan foydalanuvchi uchun tushunarli:
if(shart)
operator {operatorlar};
else
operator{operatorlar};
Agar har bir shart uchun bittadan ortiq operator bajarish lozim bo’lsa, bu operatorlar figurali qavslar yordamida blokka birlashtirilgan bo’lishi lozim{…}. Bu boshqa konstruksiyalar uchun ham o’rinli (while va for).
Bu operator quyidagi strukturaga (tuzilishga) ega:
if([shartli ifoda])
{
Shart bajarilganda bajarish lozim bo’lgan kod bloki,
[shartli ifoda]=true(rost)
}
Else
{
Shart bajarilmaganda bajarish lozim bo’lgan kod bloki,
[shartli ifoda]=false(yolg’on)
}
Ifodaning else qismi majburiy hisoblanmaydi va tushurib qoldirilishi mumkin.
static void Main(string[] args)
{
int a;
Console.WriteLine("Sonni kiriting: ");
a = Convert.ToInt32(Console.ReadLine()); // Berilganlar klaviaturadan kiritiladi
if (a % 2 == 0) //sonni 2 ga bo'lib qoldiqni topish orqali juftlikka tekshiramiz
{
Console.WriteLine(a + " soni-juft");
}
else
{
Console.WriteLine(a+" soni-toq");
}
Console.ReadKey();
}
Agar if yoki else dan keyin bitta operatorni bajarish zarur bo’lsa, figurali qavslarni tushurib qoldirish mumkin:
if([shartli ifoda])
[buyruq_1] // buyruq1 shartli ifoda rost bo’lgandagina bajariladi
[buyruq_2] // buyruq2 har qanday holatda bajariladi
If operatori bir necha shartga ega bo’lishi mumkin:
if ([mantiqiy ifoda1])
{Blok_1}
else if ([mantiqiy ifoda_2])
{Blok_2}
else
{Blok_3}
Sikllar, ma’lum bir shartlarda qandaydir amallarni ko’p marta takrorlaydigan, boshqaruvchi konstruksiyalar hisoblanadi. C# da sikllarning quyidagi turlari mavjud:
-for sikli;
-while sikli;
-do-while sikli;
-foreach sikli;
for sikl operatori
for sikl operatori quyidagicha formal aniqlanishga ega:
for ([hisoblagichni nomlash]; [shart]; [hisoblagich o’zgarishi])
{
//amallar
}
Standart for siklini ko’raylik,
for (int i=0; i
{
Console.WriteLine(i+” sonining kvadrati”+i*i+” ga teng”);
}
Massivlar
Massiv – kirish hisoblanuvchi indekslar orqali amalga oshiriluvchi bir necha o’zgaruvchilarni olgan berilganlar strukturasi. Massivdagi o’zgaruvchilar uning elementlari deyiladi. Ular bir xil tipga ega va massiv elementlarining tipi deyiladi. Yagona nom bo’yicha murojaat qilish mumkin bo’lgan bir butunlikka birlashtirilgan bir tipdagi o’zgaruvchilar guruhi massiv deyiladi.
Bir o’lchovli massivlar
Massiv bir tipli berilganlarning to’plamini ifodalaydi. Massivni e’lon qilish o’zgaruvchilarni e’lon qilishga o’xshaydi, faqat farqi tip ko’rsatilganidan keyin kvadrat qavslar qo’yiladi:
o’zgaruvchi_tipi[] massiv_nomi;
Masalan, butun sonlar massivini aniqlaymiz:
int[] numbers;
Massiv o’zgaruvchisi aniqlanganidan so’ng, unga ma’lum bir qiymat berishimiz mumkin. Bir o’lchovli massivni e’lon qilishning umumiy shakli:
tip massiv_nomi = new tip [o’lcham];
bu yerda, tip- massiv elementlari tipi; massiv_nomi – aynan e’lon qilinayotgan massivning nomi; o’lcham – massiv elementlari soni. Massiv elementlarini indekslash (tartiblash) noldan boshlanadi.
int [] nums = new int [4];
Bu yerda avval int tipidagi berilganlarni saqlovchi nums massivi e’lon qilindi. So’ngra new operatoridan foydalangan holda massivning 4 ta elementi uchun xotira ajratildi: new int[4]. 4 soni massivning uzunligi hisoblanmaydi. Bunday aniqlanishda barcha elementlar tip uchun ko’rsatilmagandagi qiymatni oladi. int tipi uchun bu qiymat -0.
new operatori massiv nomlagichidan foydalangan holda massivning elementlariga boshlang’ich qiymat berish imkonini beradi. Bu qiymatlar ochilgan va yopilgan figurali qavslar ({ va }) ichida beriladi. Masalan, uch elementga ega bo’lgan int[] massiv yaratamiz va nomlaymiz (boshlang’ich qiymat beramiz):
int [] a= new int [] {1, 2, 3};
Massivning uzunligi qavslar ichidagi son orqali aniqlanadi. O’zgaruvchilar va maydonlarni local e’lon qilishda qisqartirish mumkin, ya’ni massiv tipini takroriy ko’rsatish shart emas.
int [] a={1, 2, 3};
Yuqorida keltirilgan ikkita misol quyidagicha e’lon qilishga ekvivalent natija beradi (bir xilda):
int []= new int [3];
t[0]=1;
t[1]=2;
t[2]=3;
int [] a=t;
int [] nums = new int [4]; e’loni uchun elementlar qiymatlarini ko’rsatishimiz mumkin:
int [] nums2 = new int[4] {1, 2, 3, 5};
int [] nums3 = new int[] {1, 2, 3, 5};
int [] nums4 = new [] {1, 2, 3, 5};
int [] nums5 = {1, 2, 3, 5};
Yuqorida keltirib o’tilgan barcha usullar teng qiymatli.
Massiv elementlariga murojaat qilish uchun indekslardan foydalaniladi. Indeks massiv elementi nomerini ifodalaydi va noldan boshlanadi. Shu sababli, massiv birinchi elementining nomeri nolga teng. To’rtinchi elementga murojaat qilish uchun uchinchi indeksga murojaat qilinadi, misol uchun : nums[3]. Indekslardan massiv elementlariga qiymat berish va olish uchun foydalanamiz:
int [] nums = new int[4];
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=5;
Console.WriteLine(nums[3]); // 5
Dasturlarda massivlardan foydalanish quyidagi ustunliklarga ega:
-bir tipli berilganlar to’plamini tashkillashtirishning qulayligi va soddaligi;
-sikl operatorlari yordamida berilganlarga ishlov berishning qulayligi (saralash, qidirish, hisoblashlarni amalga oshirish).
Satrlar bilan ishlash
Regulyar dasturlash nuqtai nazaridan C# tilida berilganlarning satrli tipi (string) eng muhimlaridan biriga kiradi. Bu tip belgili satrlarni aniqlaydi va ta’minlaydi. Bir qator dasturlash tillarida satr belgilar massivini ifodalaydi. C# da esa ob’ektlar hisoblanadi. Demak, string tipi murojaatliga tegishlidir.
Belgili satrni qurishning eng sodda usuli – satrli literallardan foydalanish. Masalan, quyidagi satr kodida str satrga murojaat o’zgaruvchisiga satrli literalga murojaat o’zlashtiriladi:
string str=”Satrga misol”;
Satrda qidirish
IndexOf metodi yordamida alohida belgi yoki satrdagi satrostining birinchi bor uchrashi indeksini aniqlashimiz mumkin:
string s1=”Salom OLam”;
char ch=’o’;
int indexOfchar=s1.IndexOf(ch); // 3 ga teng
Console.WriteLine(indexOfchar);
string substring=”Ola”;
int indexOfSubstring=s1.IndexOf(subString); // 6 ga teng
Console.WriteLine(indexOfSubstring);
LastIndexOf metodi ham xuddi shunday ishlaydi, faqat alohida belgi yoki satrdagi satrostining oxirgi uchrashi indeksini aniqlaydi.
Yana bir guruh metodlar satr ma’lum bir satrostidan boshlanishi yoki tugallanishini aniqlash imkonini beradi. Buning uchun StartsWith va EndsWith metodlari tayinlangan. Masalan, bizga papkadan exe kengaytmali barcha fayllarni o’chirish masalasi qo’yilgan. Qo’yilgan masalani yechish dasturi kodi, masalan, quyidagicha ko’rinishda bo’ladi:
string path = @"C:\SomeDir";
string[] files = Directory.GetFiles(path);
for(int i=0; i
{
if(files[i].EndsWith(".exe"))
files.Delete(files[i]);
}
Satrlarni bo’lish
Split funksiyasi yordamida berilgan satrni satrostilar massiviga bo’lish (ajratish) mumkin. Split funksiyasi parametr sifatida ajratgich bo’lib xizmat qiluvchi belgilar yoki satrlar massivini oladi. Masalan, satrdagi so’zlar sonini aniqlaymiz. So’zlarni ajratib olish uchun bo’shliq belgisidan foydalanamiz:
string text = "Shu sababli hammasi shunday bo'ldi";
string[] words = text.Split(new char[] {''});
foreach(string s in words)
{
Console.WriteLine(s);
}
Bo’shliqlar bo’yicha bo’lish yaxshi usul emas, chunki satrda ketma-ket keluvchi bo’shliqlar (probel) bo’lishi mumkin. Bunda natijaviy massivga bo’shliqlar ham joylashadi. Shu sababli, boshqa metoddan foydalangan ma’qul:
string[] words = text.Split(new char[] {‘’},
StringSplitOptions.RemoveEmptyEntries);
Ikkinchi StringSplitOptions.RemoveEmptyEntries parametric barcha bo’sh satrostilarni o’chirish lozimligini bildiradi.
Satr qo’yish
Bir satrni ikkinchisiga qo’yish uchun Insert funksiyasi qo’llaniladi:
string text=”Yaxshi kun”;
string substring=”ajoyib”;
text=text.Insert(7,substring);
Console.WriteLine(text);
Insert funksiyasining parametric satrostini qo’yish lozim bo’lgan indeks hisoblanadi. Ikkinchi parametr esa –aynan qo’yiladigan satrosti.
Satrlarni o’chirish
Remove metodi orqali satrning ma’lum bir qismini o’chirish mumkin:
string text=”Yaxshi kun”;
int ind=text.Length-1; // oxirgi belgi indeksi
text=text.Remove(ind); // oxirgi belgini qirqamiz
Console.WriteLine(text);
text=text.Remove(0,2); // boshlang’ich ikkita belgini qirqish
Windows forma
Visual C# da dastur tuzishni boshlaganda eng dastlab Visual Studioni ochamiz hamda “ Создать проект…” ni bosamiz va proektga nom berib “OK” tugmasini bosganda Visual C# ish oynasi ochiladi.
Undan so’ng F5 lavishasini bosish orqali bajaramiz. Shunda .exe fayli ya’ni dastur yaratiladi. bu dastur hali hech qanday ishni bajarmaydi. Keying bosqichda formaning xossalarini o’rnatamiz. Formaning xossalari quyidagi jadvalda keltirilgan.
Xossasi Formaning xossalari
Name Formaning nomi.
Text Sarlavhalar satridagi matn.
Size
Forma o’lchamlari. Ya’ni width formaning eni, height bo’lsa balandligini belgilab beradi.
StartPosition Forma birinchi marta bajarilganda uning ekrandagi o’rni. Forma ekran o’rtasida chiqishi mumkin(CenterScreen). Agar bu xossa Manual qiymat qbul qilgan bo’lsa, unda formaning joylashadigan o’rnini Location xossasi orqali beriladi.
Location Formaning ekrandagi joylashgan o’rni. Formaning yuqori tarafidan ekranning yuqori tarafigacha bo’lgan masofa Y, formaning chap tarafidan ekranning chap tarafigacha bo’lgan masofa X qiymatlarida beriladi.
FormBorderStyle Forma turi(chegaralari). Forma oddiy oyna(Sizable). Fikserlangan o’lchamdagi oyna(FixedSingle, Fixed3D), dialog oynasi(FixedDialog) hech qanday tugmalarsiz (SizableToolWindow, FixedToolWindow). Agar bu xossa None qiymatini qabul qilgan bo’lsa unda formada sarlavhalar satri ham chegaralari bo’lmaydi.
ControlBox Bu xossa sistemali menyu tugmalarning ko’rinishini boshqaradi. Agar bu xossa False qiymatini qabul qilgan bo’lsa, unda sarlavhalar satridagi yig’ish, ekranni kichiklashtirish, chiqish tugmalari ko’rinmaydi.
MaximazeBox Bu formani kattalashtirish va kichiklashtirish tugmasi. Agar bu xossaning qiymati False bo’lsa unda shu tugma bosilmaydi.
MinimazeBox
Bu formani yig’ish tugmasi. Agar bu xossa qiymati False bo’lsa shu tugma bosilmaydi.
Icon
Sarlavhalar satridagi nishon.
Font
Shrift, u formadagi barcha komponentalarning shriftini belgilab beradi, agar ularning har biri shrift o’zgartirilmagan bo’lsa.
ForeColor
Rang, u ham shu formadagi barcha komponentalarning matnlarining rangini avtomat turda o’zgartiradi. Agarda ularning har birini ForeColor xossasi aniq turda ko’rsatilmagan bo’lsa.
BackColor
Fon rangi.
Opacity
formaning ko’rinish darajasi. Agar bu xossaning qiymati 100% bo’lsa unda forma to’lig’I bilan ko’rinib turadi, kamayib brogan sari forma pastida ko’rina boshlaydi, 0% bo’lsa formaning o’zi ko’rinmay qoladi.
Button.” Button” bu buyruq bajaruvchi tugma hisoblanadi. Foydalanuvchi dasturdan foydalanayotganda button ustida ishlaydigan amal faqat uni bosish bo’lib topiladi. Dastur yaratish vaqtida biz “Button”dan foydalanadigan bo’lsak uni kerakli o’ringa olib borib qo’yamiz va asosiy bajaradigan vazifasini kiritamiz. “Button” ning asosiy bajaradigan vazifasi “Click” vazifasi ichida yoziladi. Dastur kodi holatida u quyidagicha bo’ladi.
Private void button1_Click(object sender, EventArgs e) {}
Label. Label boshqarish elementi matn ko’rinishida bo’lib u boshqa boshqarish elementi haqida yoki foydalanuvchi bilishi kerak bo’lgan ma’lumotlarni berib turadi. U ko’pincha “ TextBox”, “ComboBox” boshqarish elementlari uchun qo’llaniladi ya’ni foydalanuvchi qanday ma’lumot kiritishi kerakligi matn turida beriladi. Bu boshqarish elementidan foydalanish uchun “Text” xossasiga kerakli ma’lumotni yozib uni kerakli joyga olib borishimiz yetarli bo’ladi. Masalan, xodimlar ish rejimini nazorat qiluvchi tizim bo’lsa, ya’ni smena haqidagi dastur yaratish kerak bo’lganda “Label” foydalaniladi. Ya’ni xodimlarni ism familiyasini kiritadigan joyida “F.I.Sh ni kiriting:” deb “Label” orqali yozib qo’ysak, u foydalanuvchi uchun tushunarli bo’ladi.
TextBox. “TextBox” bu asosiy boshqarish elementlarining biri bo’lib, foydalanuvchi tarafidan matnli ma’lumotlarni kiritishga moslashgan. “TextBox” ni foydalanishda bir satrli va ko’p satrli qilish mumkin. Bu uning “MultiLine” xossasidagi qiymatni “True” yoki “False” qilib qo’yishingizga bog’liq. Ya’ni “MaxLength” xossasi orqali kiritilishi mumkin bo’lgan simvollar sonini cheklashga bo’ladi. O’zi “TextBox” ga 64 kBt hajmdagi matnni kiritish mumkin. Bundan katta hajmdagi ma’lumotlar bilan ishlash kerak bo’lsa, unda
3.Windows Formani MS Access bilan bog`lash. DataGirdView, Combobox , Label, checkbox bilan ishlash.
Biz talabalar haqidagi malumotni C# dasturida jadval ko’rinishida saqlashimiz kerak bo’ladi. Buni biz DataGirdview kompanentasi orqali amalga oshirmiz. Malumotlar bazasini Acces orqali quyidagi rasmdagi kabi hosil qilamiz. Hosil qilgan Acces faylimiz nomi kurs_ishi.accdb. Ichidagi jadval nomini esa talabalar malumoti deb nomladik.
Bu malumotlar bazasini c# da ko’rish uchun ochilgan Windows formamizga DataGirdView kompanentasini tashlaymiz. Yoniga bitta Button tugmasini ham qo’yamiz. Va Buttonning Text xususyatini SAQLASH deb nomlaymiz.
Rasmdagi ko’rsatilgan joy bosilsa 2-rasmdagi kabi ko’rinish hosil bo’ladi. Bunnan добавить источник данних проекта… tugmasi bosiladi.
Rasmda ko`rsatilgan amallarni ketma-ketlikda bajarsak quyidagi ko`rinish hosil bo`ladi.
Bu oynadan Таблицы ni belgilab Готово ni bosamiz. Qarabsizki accesda yig’ilgan malumotlar bazasi C# ga bog’lanadi. Ilovamizni kompilatsiya qilib acces dagi malumotlar bazasini DataGirdview ga ko’chirishimiz mumkin. Agar DataGirdView ga o’zgartirish kiritadigan bo’lsak buni Acces bazaga saqlab borilishi kerak.
Yuqorida ko`rsatilgan amalllarni ketma –ketlikda bajarsak biz maqsadimizga erishgan hisoblanamiz. Ya`ni, C# dasturlash tilini biz ishlatayotgan Windows Formada MS Accessga bog`ladik. Agar biz MS Accessga bog`lamasdan ishlaganimizda “ case “ parametri yordamizda birin –ketin talabalar,o`qituvchilar haqidagi ma`lumotlarni kiritib chiqishimizga to`g`ri kelar edi.Bu bizdan ko`p vaqt hamda ko`plab amallarni bajarishimizni talab qiladi.MS Accessni C# ga bog`lagan holda OTM kafedra hujjatlarini boshqarish tizimini yaratish ancha qulay, oson va sifatli menimcha.
|
| |