Ngôn ng C ThS. Nguyn Hà Giang CNTT - HUTECH
Nguyen Ha Giang Ni dung 1.Cu trúc chương trình C# 2.Kiu d liu, t khoá, đnh danh bin, hng… 3.Chuyn đi kiu 4.Console I/O 5.Tham s ref, out, param 6.Lnh lp for, while, do while, foreach 7.Lnh phân nhánh switch, lnh nhy 8.Mng 1 chiu, đa chiu 9.Kiu enumeration
Nguyen Ha Giang Cu trúc chương trình C# using … namespace Tên Namespace { [Khóa truy xut] class Tên lp { public static void Main() { … } // khác … } // lp khác …
Nguyen Ha Giang using: làm chương trình gn hơn, ko cn phi dùng tên ca namspace using System. namespace ca chương trình: ko bt buc class: Ti thiu có 1 lp cha hàm entry point Main ca chương trình public static void Main(): hàm entry point ca chương trình C# Cu trúc chương trình C#
Nguyen Ha Giang Cu trúc chương trình C# Nu ko có namespace namespace mc đnh ko tên Namespace có th cha: struct, interface, delegate, enum Trưng hp đơn gin nht: 1 lp, 1 file cs và namespace mc đnh
Nguyen Ha Giang Kiu d liu Bao gm Lp đi tưngobject Ký tchar Chuistring S nguyên có dusbyte, short, int, long S nguyên không dubyte, ushort, uint, ulong S thcfloat, double, decimal Logicbool – {true, false} Là alias ca các lp có sn trong.NET Framework stringSystem.String intSystem.Int32
Nguyen Ha Giang Kiu d liu S dng kiu d liu Đnh nghĩa trưc (C#) Built-in value type: int, long, string, object… Chương trình đnh nghĩa Class, struct, enum…
Nguyen Ha Giang The built-in value type Name CTS Type SizeRange sbyteSystem.SByte shortSystem.Int1616 ( ) ( ) int Sytem. Int long Sytem. Int byteSystem.SByte ushortSystem.UInt1616 ( ) ( ) uintSystem.UInt ulongSystem.UInt floatSystem.Single32 xp x t 3,4E - 38 đn 3,4E+38 doubleSystem.Double64 1,7E-308 đn 1,7E+308 decimalSystem.Decimal128 Có đ chính xác đn 28 con s boolSystem.Boolean Kiu true/false charSystem.Char16 Ký t unicode
Nguyen Ha Giang object: Sytem.Object Kiu d liu gc, cha ca tt c các kiu d liu trong C# object o = new object(); string: Sytem.String Chui ký t Unicode string s1 = Hutech; string s2 = Hi ; string s = s1 + s2; The built-in reference type
Nguyen Ha Giang The built-in reference type
Nguyen Ha Giang Phân loi ku d liu Value type Reference type Data type int Num; long count; Object obj = new Object(); String str = reference type; Phân loi theo cách thc lưu tr d liu
Nguyen Ha Giang Kiu giá tr Cha giá tr trc tip Không th null Phi cha giá tr xác đnh Bao gm Kiu cơ bn (primitive type) double, char, int, float,… Kiu enum Kiu struct int i = 59; 59 i 7.83 x 59 a double x = 7.83; int a = i;
Nguyen Ha Giang Kiu tham chiu Ch ti nơi cha d liu Có th null null: không ch ti bt k đâu Bao gm Lp (class) string, object Giao din (interface) Mng (array) Đi din (delegate) string s1 = "Hello"; "Hello" "Bye" s2s3s1 string s2 = "Bye"; string s3; s3 = s1;
Nguyen Ha Giang Value type vs. Reference type Characteristic Value type Reference type Variable hold ValueReference AllocatedStackHeap DefaultZeroNull Parameter Copy value Copy reference
Nguyen Ha Giang Đnh danh Đnh danh: nhng t đưc đt ra đ đi din cho mi th dùng trong chương trình Khi đt đnh danh: nên có tính gi nh To ra đnh danh mi HelloWorld, Program, Perform,… phi khai báo trưc khi s dng phi khai báo trưc khi s dng Dùng đnh danh có sn Console, WriteLine, ReadLine,… phi ch ra nơi cha đnh danh (namespace) phi ch ra nơi cha đnh danh (namespace)
Nguyen Ha Giang Đnh danh Bao gm ch cái, ch s, ký t gch dưi Không đưc bt đu bng ch s Chuong_Trinh, x25, z, _abc, XLý hp l 2abc, Chuong-Trinh, Xu Ly, class không hp l Phân bit CH HOA và ch thưng ChuongTrinh và chuongtrinh là khác nhau Các đnh danh đưc khai báo trong cùng phm vi (scope) không đưc trùng nhau Phi khác vi t khóa
Nguyen Ha Giang T khoá
Nguyen Ha Giang Hng Mt hng (constant) là mt bin nhưng tr không thay đi const int a = 100; // giá tr ko th thay đi Hng bt buc phi đưc gán giá tr lúc khai báo Tr ca hng có th đưc tính toán vào lúc biên dch Hng bao gi cũng static
Nguyen Ha Giang Hng Ưu đim Chương trình d đc, khc phc nhng con s magic number trong code. Chương trình d sa hơn. Tránh li d dàng hơn, trình biên dch s báo li nu gán li giá tr cho hng
Nguyen Ha Giang Hng Minh ha s dng hng Đnh nghĩa hng
Nguyen Ha Giang Bin Bin (variable) là nơi lưu d liu ca chương trình D liu ca bin Nm trong b nh vt lý (physical RAM) Có th thay đi giá tr Phi khai báo trưc khi dùng Identifier: tên đ đi din cho bin Datatype: dng lưu tr d liu ca bin Datatype identifier
Nguyen Ha Giang Bin Phm vi (scope) Đưc xác đnh bi cp du { và } Có th cha phm vi nh hơn V trí khai báo bin Trong thân phương thc: bin cc b Trong thân lp: thuc tính Bin trong C# ch có tác dng trong phm vi mà nó đưc khai báo
Nguyen Ha Giang Ép kiu Ép kiu (type-cast): chuyn giá tr t kiu này sang kiu khác Ví d Chuyn t int qua float và ngưc li Có hai loi Ép kiu ngm đnh (implicit type-cast) Ép kiu ch đnh (explicit type-cast)
Nguyen Ha Giang Ép kiu ngm đnh Do C# t thc hin Không cn lp trình viên can thip Xy ra khi Ép t kiu nh qua kiu ln Ép t lp dn xut qua lp cơ s int i = 59; double x = i; string s = "Hello"; object o = s;
Nguyen Ha Giang C# h tr ép kiu FromTo sbyte short, int, long, float, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal short int, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal int long, float, double, decimal uint long, ulong, float, double, decimal long, ulong float, double, decimal floatdouble char ushort, int, uint, long, ulong, float, double, decimal
Nguyen Ha Giang Ép kiu ch đnh Do lp trình viên ch đnh Xy ra khi Ép t kiu ln qua kiu nh: có th mt giá tr Ép t lp cơ s qua lp dn xut double x = 74.86; int i = (int)x; // i = 74 string s = "Hello"; object o = s; string s2 = (string)o;
Nguyen Ha Giang Ép kiu ch đnh bng Convert Thưng dùng khi cn chuyn đi gia các kiu không có liên h vi nhau Convert.toDataType( SourceValue ) Ví d: chuyn t chui sang s thc string s1 = "56.8"; double x = Convert.ToDouble(s1);// x = 56.8 int i = Convert.ToInt32(s2);// i = 95 string s2 = "95"; byte j = Convert.ToByte(x);// j = 56, ít dùng
Nguyen Ha Giang Console I/O Đ đc ký t văn bn t ca s console Console.Read() giá tr tr v là int Console.ReadLine() giá tr tr v là string Đ xut chui ký t dùng Console.Write() / Console.WriteLine()
Nguyen Ha Giang Console I/O Console.WriteLine() \n: ký t xung dòng
Nguyen Ha Giang Console I/O / F5 Xut chui Đc chui Ch đc 1 dòng, mc đích là dng màn hình
Nguyen Ha Giang Boxing & Unboxing Kiu giá tr có th đưc chuyn thành kiu đi tưng BoxingUnboxing Unboxing Boxing
Nguyen Ha Giang Keywords const & readonly const const: phi đưc gán giá tr khi khai báo readonly readonly: ko cn khi to trưc, khi gán giá tr thì sau đó ko thay đi đưc Chưa đưc khi gán Ko đưc thay đi
Nguyen Ha Giang checked & unchecked throws OverFlowException
Nguyen Ha Giang ref, out, param ref: tương t như truyn tham chiu trong C/C++ T khoá ref phi đưc dùng lúc gi hàm Các tham s truyn dng ref phi đưc khi to giá tr trưc Khai báo ref trưc kiu d liu s dng ref cho tham s khi gi hàm
Nguyen Ha Giang ref, out, param out: tương t như ref Khác ref là ko cn khi to giá tr trưc khi truyn Khai báo cho tham s Dùng trưc tham s khi gi hàm
Nguyen Ha Giang ref, out, param 3 phn t6 phn t Mng array Luôn khai báo cui danh sách tham s
Nguyen Ha Giang this public class list { private int size;... public SetSize (int size) { this.size = size; }
Nguyen Ha Giang Lnh lp Tương t như C: while, do while, for while { // phn thân while // phn thân while} do { // phn thân do while // phn thân do while } while ; for( khi to bin lp; ; thay đi bin lp) { // phn thân for // phn thân for} Phi là giá tr bool: true, false
Nguyen Ha Giang Lnh lp index = 10; while(index != 0){ Console.WriteLine(index); index--; } index = 0; do{ Console.WriteLine("Happens at least once"); }while(index < 0); for(index = 0;index<100;index++){ Console.Write(index); Console.Write("\t"); } Giá tr {true, false}
Nguyen Ha Giang Lnh lp foreach foreach( typedata identifier in objectArray) { // thân foreach // thân foreach} = Ch s dng bin i cho mi ln lp S dng ch s mng như bình thưng
Nguyen Ha Giang switch Biu thc switch gm: kiu s, ký t, enum và chui s dng break, goto, return đ điu khin lung thc thi Nu ko nhãn nào phù hp -> default Nu ko có default -> thc hin lnh sau switch
Nguyen Ha Giang Lnh nhy break Thoát khi vòng lp continue Qua bưc lp k goto Nhy đn nhãn S dng goto case, trong switch
Nguyen Ha Giang Lnh nhy return Thoát khi hàm void Tr v 1 giá tr ca hàm void Func1(int x) { if (x == 0) return;... } int max(int a, int b) { if (a > b) return a; else return b; }
Nguyen Ha Giang Mng Cha mt s nhng bin có cùng kiu d liu. Truy xut phn t thông qua ch s (index) Ch s bt đu bng 0. VD int[] myInteger = new int[5]; string[] myString = {BeMun,BeTien }; Datatype[ ] array-name
Nguyen Ha Giang Mng Ly kích thưc mng qua thuc tính Length int Size = myArray.Length; N u thành phn ca mng là kiu đnh trưc, có th dùng hàm Sort ca Array đ sp xp Array.Sort(myArray); Dùng hàm Reverse ca Array đ đo th t các phn t trong mng Array.Reverse(myArray);
Nguyen Ha Giang Mng Dùng phương thc tĩnh Sort ca lp Array đ sort artists Dùng phương thc tĩnh Reverse ca lp Array đ đo th t artists
Nguyen Ha Giang Mng nhiu chiu Khai báo mng int 2 dòng 3 ct int[,] myMatrix = new int[2,3]; Có th khi gán int[,] myMatrix = new int[,] {{1,2},{3,4},{5,6},{7,8}}; int[,] myMatrix = {{1,2},{3,4},{5,6},{7,8}}; string[,] beatleName = {{"Lennon","John"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Starkey","Richard"}}; Datatype[,] array-name
Nguyen Ha Giang Mng nhiu chiu Truy cp tun t theo kiu mng 1 chiu Truy cp theo dng dòng ct qua ch mc i và j
Nguyen Ha Giang Mng Jagged Jagged là mng mà mi phn t là mt mng có kích thưc khác nhau Nhng mng con này phi đưc khai báo riêng Khai báo mng 3 dòng, mi dòng là mt mng 1 chiu Datatype[ ][ ] array-name int[][] a = new int[3][]; a[0] = new int[4]; a[1] = new int[3]; a[2] = new int[1]; Khai báo s dòng, hàng Khai báo s ct riêng cho tng dòng
Nguyen Ha Giang Mng Jagged Truy cp theo dòng, ct Truy cp dùng foreach
Nguyen Ha Giang Enumeration Dùng thay th hng Tp hp các giá tr hng đưc đt tên Khai báo trc tip trong namespace Là kiu d liu enum Color { Red, Green, Blue }; enum Access { personal = 1, group = 2, all = 4 }; Color c = Color.Red; Access a = Access.personal | Access.group; If ((Access.personal & a) != 0) Console.WriteLine("access granted"); S dng
Nguyen Ha Giang Enumeration Enumeration k tha t object (Equals, ToString()).
Nguyen Ha Giang Enumeration