Contenu connexe Plus de Chinzorig Undarmaa Plus de Chinzorig Undarmaa (20) лекц-32. C# хэлний тухай
C# хэл нь .NET Фреймворктэй хамт зохиогдсон шинэ
програмчлалын хэл
C#
хэл
нь
энгийн
боловч
орчин
үеийн
програмчлалын
асуудлуудыг
шийдэхэд
тохиромжтой, өндөр бүтээмжтэй хэл
C# хэл нь C++ болон Java хэлнээс удамшин үүссэн
бөгөөд объект хандлагат, компонентод суурилсан,
бүтцийн програмчлалуудыг бүгдийг нь дэмжинэ.
2
4. C# програмын бүтэц
using түлхүүр үг нь програмд ашиглах
классуудын
бүтэн
замыг
зааж
өгөх
шаардлагагүй болгож хялбарчилан холбож
өгдөг.
Програмын логик, өгөгдөл зэрэг бүхий л зүйл
нь класс дотор бичигдэх ѐстой. Классын
хүрээнээс гадуур глобаль хувьсагч гэж
байдаггүй.
C# програм бүрт Main() метод хэрэгтэй байдаг.
Энэ метод нь програмын эхлэх цэг болдог.
Энэ метод нь үргэлж static хувиргагчтай байх
ѐстой бөгөөд M үсэг нь томоор бичигдэх
ѐстой.
4
5. C# хэлний өгөгдлийн төрөл
C# хэлний төрлүүдийг
Эгэл төрөл (value type)
Заалт төрөл (reference type) гэсэн хоёр ангилалд
хуваадаг.
Заалт ба эгэл төрлүүд нь System.Object
классаас удамшсан байдаг.
Заалт төрлүүд нь System.Object классаас
шууд удамшсан байдаг.
Эгэл төрлүүд нь System.Object классаас
System.ValueType
классаар
дамжуулан
удашдаг.
5
7. C# хэлний өгөгдлийн төрөл
CLR нь заалт ба эгэл төрлүүдийг санах ойд
ялгаатай байршуулдаг.
Эгэл төрлийн объект нь стект байрладаг.
Эгэл төрөл үүсэхдээ 0 утга авдаг.
Заалт төрлийн объектын хаяг нь стект
байрлана, жинхэнэ утга нь хийп санах ойд
байрладаг. Заалт төрөл үүсэхдээ null утга
авдаг.
7
8. C# хэлний өгөгдлийн төрөл
Apparel myApparel = new Apparel();
Apparel myApparel2 = myApparel;
8
9. Эгэл буюу үндсэн төрлүүд
C# төрөл
FCL төрөл
object
System.Object
string
System.String
decimal
System.Decimal
bool
System.Boolean
char
System.Char
byte
System.Byte
sbyte
System.SByte
short
System.Int16
int
System.Int32
long
System.Int64
ushort
System.UInt16
uint
System.UInt32
ulong
System.UInt64
float
System.Single
double
System.Double
9
10. Эгэл буюу үндсэн төрлүүд
C#
хэлний
үндсэн
төрлүүд
фреймворкийн төрөлтэй харгалзана.
бүгд
Аль ч төрлийг нь хэрэглэж болно.
Төрөл бүр
эзлэнэ.
санах
ойд
тогтмол
хэмжээ
Жишээ: Дараах хувьсагч зарлалтууд нь бүгд
ижил IL код үүсгэнэ.
System.Int32 age = new System.Int32(17);
int age = 17;
System.Int32 age = 17;
10
11. Эгэл буюу үндсэн төрлүүд
Үндсэн төрөлтэй ажиллаж байх үед дараах
онцлог зүйлс байна.
C#
хэлний
үндсэн
төрлүүд
нь
фреймворкийн бүтэц төрлүүд байдаг. Уг
бүтцүүдийн гишүүд нь тухайн төрөл дээр
ажиллах
нэмэлт
боломжуудыг
бий
болгодог.
Тодорхой төрлийн утгуудын ард дагавар
үсэг тавихыг шаарддаг.
11
12. Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь 128 бит хэмжээтэй, 28
цифрийн нарийвчлалтай бодит тоон төрөл
юм.
decimal төрлийн тогтмол утгын ард М үсэг
тавина.
decimal iRate = 3.9834M;
// M үсэг нь
decimal
iRate = decimal.Round(iRate,2);
// 3.98
decimal p = decimal.Parse("100.05");
12
13. Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь зөвхөн true ба false утга авна.
bool төрлийн утгыг бүхэл тоон төрөлрүү
хөрвүүлж болохгүй.
bool bt = true;
string bStr = bt.ToString(); // "true"
bt = (bool) 1;
// Буруу
13
14. Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь 16 бит юникод тэмдэгтийг
дүрслэх ба тэмдэггүй бүхэл тоо
Тэмдэгтийн утгыг дан хашилтад бичнэ.
myChar = 'B';
myChar = (char) 66; // 'B' -ын ASCII код 66 байдаг. Төрөл
хувиргав
bool bt; string pattern = "123abcd?";
myChar = pattern[0];
// '1‘
bt = char.IsLetter(pattern,3);
// true ('a')
bt = char.IsNumber(pattern,3);
// false
bt = char.IsNumber(pattern,2);
// true ('3')
14
15. Эгэл буюу үндсэн төрлүүд
byte нь 0-ээс 255 хүртэлх
тэмдэггүй 8 бит бүхэл тоо
утгыг авах
sbyte нь -128-с 127 хүртэлх утгыг авах
тэмдэгтэй 8 бит бүхэл тоо
15
16. Эгэл буюу үндсэн төрлүүд
short, int, long төрлүүд нь харгалзан 16, 32,
64 бит тэмдэгтэй бүхэл тоо
ushort, uint, ulong төрлүүд нь харгалзан 16,
32, 64 бит тэмдэггүй бүхэл тоо
int iMax = int.MaxValue; // хамгийн их 32 бит
бүхэл тоо
int pVal = int.Parse("100"); // тэмдэгт мөрлүү
хувиргах
16
17. Эгэл буюу үндсэн төрлүүд
float төрөл нь 1.5 x 10 –45 -с 3.4 x 1038 хүртэл
утга бүхий 7 цифрийн нарийвчлалтай бодит
тоо
double төрөл нь 5 x 10 –324 -с 1.7 x 10308
хүртэл
утга
бүхий
15-16
цифрийн
нарийвчлалтай бодит тоо
Бодит тоон үйлдлийн үр дүн тодорхой бус
үед NaN (Not a Number) утга буцаана.
Бодит тоог өөр төрөлрүү хувиргахдаа
System.Convert методыг ашиглана.
17
18. Эгэл буюу үндсэн төрлүүд
float төрлийн тогтмол утгын ард F үсэг тавина.
double төрлийн тогтмол утгын ард D үсэг
тавина.
float xFloat = 24567.66F;
int xInt = Convert.ToInt32(xFloat); // returns
24567
int xInt2 = (int) xFloat;
string xStr = Convert.ToString(xFloat);
single zero = 0;
double xDouble = 124.56D;
18
19. Эгэл буюу үндсэн төрлүүд
Тоочих төрөл буюу enum төрөл нь нэр оноосон
тогтмол утгуудын олонлог юм.
enum төрөл дэхь нэрүүдэд утга оноогоогүй бол
автоматаар 0,1,2,3 гэх мэт утгатай болно.
Хандалт нь enum төрлийн хэрэглэгдэх хүрээг
тодорхойлно. Үндсэн хандалт нь internal байдаг ба
энэ нь тухайн ассемблей доторх ямар ч классаас
хандахыг
зөвшөөрнө.
Public
хандалтыг
ашигласнаар ямарч ассемблейн ямарч классаас
хандахыг зөвшөөрнө.
Суурь төрөл нь тогтмолын утга ямар төрөлтэй
байхыг тодорхойлно.
19
20. Эгэл буюу үндсэн төрлүүд
Синтакс:
Жишээ:
[access modifiers]enum <identifier> [:enum-base]
{
enum body
}
enum Fabric:short {
Cotton = 1,
Silk = 2,
Wool = 4,
Rayon = 8,
Other = 128
}
20
21. Эгэл буюу үндсэн төрлүүд
Бүтэц төрлийг
тодорхойлдог
классын
хөнгөн
хувилбар
гэж
Бүтэу нь классын адил талбар, метод, проперти,
үзэгдэл, байгуулагч гишүүдтэй байна.
Бүтэц төрөл нь эгэл төрөл учраас програмаас
харьцахад ойр, шууд стект байрлана. Энэ нь хийп
санах ой дахь өгөгдөлрүү заагчаар дамжуулан
хандаснаас илүү хурдан байдаг сайн талтай
Бүтэц төрлийг метод буцах төрөлд ашиглах,
параметр болгон дамжуулахад удаан байдаг муу
талтай
21
22. Эгэл буюу үндсэн төрлүүд
Синтакс:
Жишээ:
[attribute][modifier] struct
identifier [:interfaces]
public struct DressShirt
{
public float CollarSz;
{
public int SleeveLn;
struct-body
}
// constructor
public DressShirt(float collar, int sleeve)
{
this.CollarSz = collar;
this.SleeveLn = sleeve;
}
}
22
23. Заалт төрлүүд
System.String буюу string класс нь 16 бит
юникод тэмдэгтүүдийн дарааллыг төлөөлөх
заалт төрөл.
Тэмдэгт мөрийг тодорхойлохдоо дараах
хоѐр хэлбэрийг ашиглаж болно.
Эскэйп хэлбэр – давхар хашилтанд хийх
Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг
ашиглах
path
path
23
= @"c:my documentsnotes.txt";
= "c:my documentsnotes.txt";
24. Заалт төрлүүд
System.String буюу string класс нь 16 бит юникод
тэмдэгтүүдийн дарааллыг төлөөлөх заалт төрөл.
Тэмдэгт мөрийг тодорхойлохдоо
хэлбэрийг ашиглаж болно.
дараах
хоѐр
Эскэйп хэлбэр – давхар хашилтанд хийх
Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг
ашиглах
path
= @"c:my documentsnotes.txt";
path
= "c:my documentsnotes.txt";
System.String класс нь тэмдэгт мөртэй ажиллах
методуудыг агуулдаг.
24
25. Заалт төрлүүд
Массив
нь
нэгэн
ижил
өгөгдлүүдийг хадгалах төрөл
төрлийн
C# -д 3 төрлийн массив байдаг.
1. ArrayList – массивыг динамикаар удирдах боломж
олгопог.
2. List – ArrayList төрлийн аюулгүй хувилбар.
3. System.Array – массивын элемэнтүүд дээр
боловсруулалт хийх олон методуудыг агуулдаг.
<төрөл> нэр [ ] = new <төрөл> [n] [{ эхний
утгууд}]
25
26. Заалт төрлүүд
int[] myRating;
// массив зарлах
myRating = new int[5];
хуваарилах
//массив үүсгэх, санах ой
int[] myRating = new int[5] {3,4,7,2,8};
int[] myRating = {3,4,7,2,8}; // товч бичиглэл
Apparel myApparel = {new Apparel(), new Apparel(),
new Apparel()); // Apparel объектыг агуулах массив
Fabric[] enumArray = new Fabric[2];
enumArray[0] = Fabric.Cotton; //тоочих төрөлтэй массив
int[ , ] myRatings = {{3 , 7}, {4 , 9}, {2, 6}}; //3 мөр, 2
багана
26
27. C# хэлний үйлдлүүд
Үйлдэл Эрэмбэ
Тодорхойлолт
+
3
Нэмэх
_
3
2
Үржих
/
2
Хуваах
%
2
Үлдэгдэлээр хуваах
++
1
Нэмэгдүүлэх
__
1
Хорогдуулах
int x = y + 10;
Хасах
*
Жишээ
27
int x = 60; int y = 15;
int z = x * y / 2; // 450
y = x % 29 ; // 2
x = 5;
Console.WriteLine(x++) // x = 5
Console.WriteLine(++x) // x = 6
28. C# хэлний үйлдлүүд
Үйлдэл
Эрэмбэ Тодорхойлолт
жишээ
~
1
Бит гүйцээлт
int x = ~127; // returns -128
>>
4
Баруун шилжүүлэх
<<
4
Зүүн шилжүүлэх
byte x = 10; // binary 10 is 01010
int result = x << 1; // 20 = 10100
result = x >> 2;
// 5 = 00101
&
5
Бит AND
|
6
Бит OR
^
7
Бит XOR
28
byte x = 12;
// 001100
byte y = 11;
// 001011
int result = x & y; //8 = 001000
result = x ^ y;
//7 = 000111
30. C# хэлний үйлдлүүд
Тодорхойлолт
жишээ
&&
Логик AND
||
Логик OR
if (x == y && y < 30) {...}
Хэрвээ эхний илэрхийлэл худал бол
дараагийн илэрхийлэлийг үнэлэхгүй
&
Логик AND
|
Логик OR
if (x== y | y < 30) {...}
Үргэлж хоёр дахь илэрхийллийг үнэлнэ.
!
Логик үгүйсгэл
if !(x ==y && y < 30) {...}
Үйлдэл
30
31. C# хэлний үйлдлүүд
Синтакс:
if (boolean expression) {
Жишээ:
if (bmi < 24.9) {
weight = "normal";
// statements
} else {
// statements
riskFactor = 2;
} else {
weight = "over";
}
riskFactor=6;
}
31
32. C# хэлний үйлдлүүд
Синтакс:
Жишээ:
switch (expression)
{
case constant expression:
// statements;
// break/goto/return()
case constant expression:
// statements;
// break/goto/return()
default:
// statements;
// break/goto/return()
}
switch (ndx)
{
case 1:
fabric = "cotton";
blend = "100%";
break;
case 2: // 2 ба 3 хамт
case 3:
fabric = "cotton";
blend = "60%";
break;
default: // optional
fabric = "cotton";
blend = "50%";
break;
}
32
33. C# хэлний үйлдлүүд
Синтакс:
Жишээ:
while ( boolean expression )
{
body
}
byte[] r = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55,
0xFF};
int ndx=0;
int totVal = 0;
while (ndx <=6)
{
totVal += r[ndx];
ndx += 1;
}
33
35. C# хэлний үйлдлүүд
Синтакс:
Жишээ:
for ( [initialization];
[termination condition];
[iteration] )
int[] r = {80, 88, 90, 72, 68, 94, 83};
{
for (int ndx = 0; ndx <= 6; ndx++)
{
for-body
}
int totVal = 0;
totVal += r[ndx];
}
35