2.1 C# dasturlash tili va uning imkoniyatlari
C# universal dasturlash tili bo’lib, xar xil darajadagi masalalar uchun yechim topish mumkin. C# tilining asosiy tushunchalaridan biri bu klasslardir. Klass bu –foydalanuvchi tomonidan yaratilgan (ifodalangan) til. C# dasturlash TILIDA C va C++ tillarning deyarli barcha imkoniyatlari saqlangan. C va C++ tillarda tayyor xoldagi dasturlarga qayta o’zgarish kiritganda ham C# kompilyatori dastur matnidan xatoliklar topmaydi. Ya’ni dasturni xar ikkala tilda xam foydalanib tuzish mumkin.Dinamik web saxifalarni yaratish uchun JavaScript yoki PHP singari tsenariyli tillarni ishlatish zarur. Bu tillarni sintaksisi ko`pincha C dasturlash tiliga o`xhsab ketadi. Til juda boy imkoniyatlarga ega bo`lsada web serverlar uchun dasturlar tuzishga mo`ljallanmagan hamda ob`ektga mo`ljallangan dasturlash tili bo`lishiga qaramasdan visual xarakterdagi dasturlarni yaratish uchun maxsus tizimiga ega emas.Net platformasi imkoniyatlari dasturlari yaratish bo`yicha talaba va professor-o`qituvchilarni ishini keskin oshiradi. Net platformasining asosiy tamoyili quyidagicha talaffuzlanadi: “Ixtiyoriy qismni ixtiyoriy joydan o`zgartirishingiz mumkin”. Net platformasi Windows dasturlarini yaratish uchun yangi model hisoblanadi.Net platformasini yutuqlarini sanab bersak.
-To`liq va absolyut tillararo o`zaro ta`sirchanlik:
-ixtiyoriy Net dasturlarini qaysi dasturlash tillida yozilishidan qat`iy nazar umumiy bajarilish muhiti. Eng muhimi barcha tillar uchun tiplar to`plami ishlatiladi;
-dasturni tarqatilishini soddalashtirilgan jarayoni. Net platformasida tiplarni tizimli reestrga qayd etish zaruriyati yo`q. Bundan tashqari .Net platformasi bir modulning bir necha DLL versiyalarini bir biriga xalaqit bermasdan tizimda hayot kechirishi mumkin.Net platformasi uchun maxsus C# dasturlash tili yaratildi. C# dasturlash tilining konstruktsiyasi nafaqat C++, Java tilidan olingan balki Visual Basic tilidan ham olingan. Tilning asosiy xususiyatlarini sanab o`tsak:
-xotirani avtomatik boshqarish;
-sanaladigan, strukturali va sinf xususiyatlari bilan ishlash uchun quyilgan sintaksis konstruktsiyalar;
-operatorlarni qayta yuklashni C++ tiliga qaraganda oson amalga oshirish;
-dasturiy interfeyslarni ishlatishni to`liq qo`llab quvvatlash;
-sohaga yo`naltirilgan dasturiy texnologiyalarni qo`llab quvvatlash.
C# dasturlash tili .Net platformasining qadrdon tili hosoblanadi. Tilni yaratishning asosiy maqsadi uni .Net platformasiga integrallashuvi hisoblanadi. Net platformasiga turli dasturlash tilida dasturlash mumkin bo`lsada eng yaxshisi C# dasturlash tilida dastur tuzishni maslaxat beramiz, chunki bu til muhitni barcha imkoniyatlarini maksimal ishlatadi. Shunday ekan C# tili imkoniyatlarini bilish orqali muhit imkoniyatlarini ham bilib olamiz. Bu til to`liq ob`ektga yo`naltirilgan dasturlash tili bo`lib, xatolarga bardoshli va chidamli dasturlarni tuzish imkoniyatini beradi.C# dasturlash tili o`zining soddaligi, barqarorligi va mantiqiyligi bilan faqr qiladi. Unda xatolarni toppish noqulay ko`rinmaydi. C# tili tiplarga nisbatan xavfsiz hisoblanadi. U initsializatsiyalanmagan o`zgaruvchilarni ishlatishdan, tiplarni xavfsiz bo`lmagan o`tkazishdan va boshqa ko`p tarqalgan xatoliklardan himoyalaydi.C# dasturlash tilida dastur tuzish vaqt va moddiy sarf jihatdan yutuqli hisoblanadi. Nihoyat C# .Net platformasining barcha imkoniyatlari xususan umumiy va maxsus masalalarni yyechish uchun ko`pgina kutubxonalarni ishlatadi.Net platformasining ikkita asosiy tashkil etuvchisi umumiy tildagi bajarilish muhiti (CLR-Common Language Runtime) va sinflar kutubxonasi (FCLFramework Class Library). Umumiy tildagi bajarilish muhiti dasturni ishlashi vaqtida kodni boshqarishni bajaradi va xotirani boshqarish, oqimlarni boshqarish hamda uzoqlashgan o`zarota`sir singari asosiy xizmatlarni ko`rsatadi. Bunda qattiqqo`l tiplashtirish va kod mavjudliligi tekshiruvlarini amalaga oshiradi, qaysiki bu xavfsizlik va barqarorlikni ta`minlaydi. Net platformasining boshqa tashkil etuvchisi – sinflar kutubxonasi bo`lib, kop` holatda ishlatiladigan tiplar kollektsiyasiga ob`ektga yo`naltirilgan murojaatni taqdim etadi, bu esa turli darajadagi dasturlarni oson yaratish imkoniyatini beradi to oddiy buyruqli interfeysdan tortib toki Net platformasining eng katta yutuqlarini ishlatishgacha masalan: XML web xizmatlar, ASP.Net imkoniyatlari va hokazo.Net platformasini qisqa ko`rib chiqgandan keyin ham C# dasturlash tili to`g`risida quyidagilarni xulosa qilish mumkin. Xulosa qilib shuni aytish kerakki dasturlash tillarini quyidagi ketma-ketlikda o`rganishni maslahat berar edik:Dasturlash tili boshlang`ich tushunchalarini o`rganish uchun C dasturlash tilini o`rganish: til sintaksisi, algoritmlari, konstruktsiyalar, konsol dasturlarini yaratish.
1.C# tili – turli tipdagi dasturlarni yaratish uchun kuchli va qulay dasturlas h
tili hisoblanadi.
2.”Kompyuter tarmoqlari”, “Internet va multimediya” kurslari doirasida web
dasturlarini yaratish uchun C# dasturlash tilini ishlatish.
Dasturlash tillarini o`qitishning bunday yondashuvi mutaxassislarni yangi
darajaga chiqaradi.C# dasturi 90 yillarning oxirida ishlab chiqilib Microsoft .NET ning bir qismiga aylandi. Al`fa versiya sifatida 2000 yildan boshlab ishlatila boshladi .C # bosh arxitektori butun dunyo dasturchilari ichida birinchilar qatorida turgan va butun dunyo tomonidan tan olingan Anders Hejlsberg bo`ldi. Uning 1980 yillarda chiqarilgan Turbo Paskal dasturi orqali ham tanishimiz mumkin.C# bevosita C, C++ va Java bilan bog`liq. Chunki bu uchta til dasturlash olamida eng mashhur tillardir. Bundan tashqari profisanal dasturchilar C va C++ ni va juda ko`pchilik Java tilida ish yuritadi.
Biz C# ning kelib chiqish genealogik daraxtini ko`rib chiqsak.
1-rasm
Rasimda C va C++ tillari C# ning asosini tashkil qilishi ko`rib turibmiz.
Lekin C# va Java o`zaro o`zgacha ravishda bog`langan. Ularning kelib chiqishi C va C++ bo`lsada o`zaro bir biridan farq qiladi. C# tili ham obe`ktga mo`ljallangan tillar sirasiga kiradi.
Dasturlash tillarida buyruqlar va amallar ma’lum kodlar (raqamlar) bilan ifodalangan bo’lib, ular ShK qurilmalari adreslari bilan bevosita ishlashga mo’ljallangan va mashina tili deb ham yuritiladi. Dasturlash tillarida ko’rsatmalar inson tiliga yaqin bo’lgan so’zlar va dastur tuzish uchun juda qulay.
Dasturlashda o’zgaruvchilardan foydalanmasdan dastur ishlash mumkin emas. O’zgaruvchilar o’zida qiymatlarni saqlaydi, bu qiymatlar vaqtinchalik operativ xotirada saqlanib turadi. O’zgaruvchilarning nomlari bo’ladi, nomlar lotin alifbosining a dan z gacha bo’lgan oraliqdagi harflar bilan belgilanadi. Bundan tashqari o’zgaruvchi nomlarini faqat bitta harf emas bir necha harflar ketma -ketligi bilan ya’ni so’zlar bilan belgilash mumkin.Sonlar bilan harflar orqali belgilash mumkin, lekin harflardan oldin son kelishi mumkin emas. O’zgaruvchining asosiy turlari sonli o’zgaruvchi, satriy o’zgaruvchi, simvolli o’zgaruvchi, mantiqiy o’zgaruvchilar bo’lib bo’linadi. Sonli o’zgaruvchilarga faqat sonlar kiradi, 0, 5, -10, -5.6, 4995 va h. Satriy o’zgaruvchilarga esa satrlar kiradi. Simvolli o’zgaruvchilar qiymati faqat bitta simvoldan iborat bo’ladi. Mantiqiy o’zgaruvchilarga faqat ikkita qiymat beriladi rost, yolg’on ya’ni true, false..
C# dasturlash TILIDA butun sonli o’zgaruvchilarda 8 ta tip ishlatiladi, ular quyidagi jadvalda berilgan.
C# dasturlash TILIDA butun sonli o’zgaruvchilar
Quyida esa C# dasturlash TILIDA kasr sonli o’zgaruvchi tiplari keltirilgan
C# dasturlash TILIDA kasr sonli o’zgaruvchi tiplari float tipidagi o’zgaruvchiga qiymat berganda qiymat oxiriga “f” belgisini qo’yish, decimal tipidagi o’zgaruvchiga qiymat berganda “m” belgisini qo’yish lozim. Birinchi ifoda bu o’zgaruvchini e’lon qilish. Bu yerda count o’zgaruvchi nomi, int(integer) tipi va count o’zgaruvchisiga 1 soni qiymat qilib olinadi. int tipi da faqat butun sonlardan foydalaniladi. Keyingi qatorda “ ” belgilari orasiga olingan satr shu holiday chop qilinadi, count esa o’zgaruvchining qiymatini chop qiladi. Uchinchisi esa “Satr” so’zini chop qiladi. Kod yozganda chekinishlardan foydalangan ma’qul. Chunki keyin kerakli qatorni, kerakli kodni topib olishda qulay bo’ladi, bir necha bo’sh qatorlarni qoldirib ketish, qator boshidan bo’sh joy qoldirib ketish tushuniladi. C# dasturlash TILIDA chekinishlarga tabulyatsiya simvoli, probellar, bo’sh qatorlar kiradi.
class Program
{
public static void Main(string[] args)
{
double s = 0;
Console.WriteLine("Введите размерность системы");
int n = int.Parse(Console.ReadLine());
double[,] a = new double[n, n];
double[] b = new double[n];
double[] x = new double[n];
for (int i = 0; i < n; i++)
x[i] = 0;
Console.WriteLine("Введите построчно коэффициенты системы");
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
a[i, j] = double.Parse(Console.ReadLine());
}
Console.WriteLine("Введите свободные коэффициенты");
for (int i = 0; i < n; i++)
b[i] = double.Parse(Console.ReadLine());
for (int k = 0; k < n - 1; k++)
{
for (int i = k + 1; i < n; i++)
{
for (int j = k + 1; j < n; j++)
{
a[i, j] = a[i, j] - a[k, j] * (a[i, k] / a[k, k]);
}
b[i] = b[i] - b[k] * a[i, k] / a[k, k];
}
}
for (int k = n - 1; k >= 0; k--)
{
s = 0;
for (int j = k + 1; j < n; j++)
s = s + a[k, j] * x[j];
x[k] = (b[k] - s) / a[k, k];
}
Console.WriteLine("Система имеет следующие корни");
Console.WriteLine("x = {0:0.##}", x);
Console.WriteLine("y = {0:0.##}", x);
Console.WriteLine("z = {0:0.##}", x);
}
}
4)Tenglamalar tizimini echish algoritmi
public static void Main(string[] args)
{
Console.WriteLine("введите n");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("введите t");
int t = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("введите w");
int w = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("введите m");
int m = Convert.ToInt32(Console.ReadLine());
double a = 1; double b = 1; double c = 1;
for (byte i = 1; i <= n - 1; i++) b *= i;
for (byte i = 1; i <= t - 2; i++) a *= i;
for (byte i = 1; i <= (n - 1 + t - 2); i++) c *= i;
}
5)Tenglamalar tizimini echishning rekursiv usuli
private static double FormulaLoop(double x0, double q, double b, int k)
{
double res = x0;
double tempK = x0;
for (int i = 0; i < k; i++)
{
tempK = q*tempK + b;
res += tempK;
}
return res;
}
private static double FormulaRecSum(double x0, double q, double b, int k)
{
if (k==0)
{
return x0;
}
double xk = q*x0 + b;
return x0+FormulaRecSum(xk, q, b, k-1 );
}
private static double FormulaRec(double x, double q, double b, int k)
{
if (k == 0)
{
return x;
}
double xk = q * x + b;
return FormulaRec(xk, q, b, k - 1);
}
static void Main(string[] args)
{
double q = 2;
double b = 5;
double x0 = 1;
int k = 3;
Console.WriteLine("Loop sum of k components = {0}",FormulaLoop(x0,q,b,k));
Console.WriteLine("Recursive sum of k components = {0}", FormulaRecSum(x0, q, b, k));
Console.WriteLine("x{0} = {1}",k, FormulaRec(x0, q, b, k));
Console.ReadLine();
}
6)O'zgartirilgan Eyler usuli bilan ikkinchi darajali differentsial tenglamani echish
static double f(double t, double y, double x, double a, double b, double c, int j)
{
if (j == 0) return (-b * y - c * x) / a;
else return y;
}
public static double[] x { get; set; }
public static double[] y { get; set; }
public static double[] t { get; set; }
static void MME(double a, double b, double c, double tn, double tk, int n, double x0, double y0)
{
t = new double[n + 1];
x = new double[n + 1];
y = new double[n + 1];
double h = (tk - tn) / n;
int i;
t[0] = tn;
x[0] = x0;
y[0] = y0;
for (i = 1; i <= n; i++)
{
t[i] = t[i - 1] + h;
x[i]=x[i-1]+(-c*y[i-1]-b*x[i-1])*h;
y[i]=y[i-1]+x[i-1]*h;
}
}
static void Main(string[] args)
{
double a = 0.01, b = 20, c = 300000, x0 = 0.00001, y0 = -0.01;
int n = 100;
MME(a, b, c, 0, 0.004, n, x0, y0);
for (int i = 0; i <= n; i++)
Console.WriteLine("t[{0}]={1,6:f5} \t q\'[{0}]={2,8:f8} \t q[{0}]={3,10:f8}", i, t[i], y[i], x[i]);
Console.ReadKey();
}
Dostları ilə paylaş: |