Content
Cấu trúc chương trình C#
Kiểu dữ liệu, từ khoá, định danh biến, hằng
Chuyển đổi kiểu
Console I/O
Tham số ref, out, param
Lệnh lặp for, while, do while, foreach
Lệnh phân nhánh switch, lệnh nhảy
Mảng 1 chiều, đa chiều
Kiểu enumeration
55 trang |
Chia sẻ: phuongt97 | Lượt xem: 454 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Ngôn ngữ lập trình C# - Nguyễn Văn Phong, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NGÔN NGữ C#Nguyễn Văn PhongContent2Cấu trúc chương trình C#Kiểu dữ liệu, từ khoá, định danh biến, hằngChuyển đổi kiểuConsole I/OTham số ref, out, paramLệnh lặp for, while, do while, foreachLệnh phân nhánh switch, lệnh nhảyMảng 1 chiều, đa chiềuKiểu enumerationCấu trúc chương trình C#3using namespace { [Khóa truy xuất] class { public static void Main(){ }// thành viên khác }// lớp khác *.csCấu trúc chương trình C#4using: làm code gọn hơn, ko cần phải dùng tên của namspaceusing System.namespace của chương trình: ko bắt buộcclass: tối thiểu có 1 lớp chứa hàm entry point Main của chương trìnhpublic static void Main(): hàm entry point của chương trình C#Cấu trúc chương trình C#5Nếu ko có namespace namespace mặc định ko tênNamespace có thể chứa: struct, interface, delegate, enumTrường hợp đơn giản nhất: 1 lớp, 1 file cs và namespace mặc địnhData Type6Bao gồmLớp đối tượng object ký tự charChuỗi stringSố nguyên có dấu sbyte, short, int, long Số nguyên không dấu byte, ushort, uint, ulongSố thực float, double, decimalKiểu logic boolLà alias của lớp dữ liệu trong .NETstring System.Stringint System.Int32object System.ObjectData Type7Sử dụng kiểu dữ liệuĐịnh nghĩa trước (C#)Built-in value type: int, long, string, objectChương trình định nghĩaClass, struct, enumPerson, Student, EmployeeData TypeBuilt-inUser definedThe built-in value typeNameCTS TypeSizeRangesbyteSystem.SByte 8-128..127shortSystem.Int1616 (-32768 .. 32767)intSytem. Int3232-231..231-1longSytem. Int6464-263..263-1byteSystem.SByte 80..255ushortSystem.UInt1616 (0 .. 65535)uintSystem.UInt3232 0..232-1ulongSystem.UInt64640..264-1floatSystem.Single32xấp xỉ từ 3,4E - 38 đến 3,4E+38doubleSystem.Double641,7E-308 đến 1,7E+308decimalSystem.Decimal128Có độ chính xác đến 28 con sốboolSystem.Boolean Kiểu true/falsecharSystem.Char16Ký tự unicode8The built-in reference type9object: Sytem.ObjectKiểu dữ liệu gốc, cha của tất cả các kiểu dữ liệu trong C#object o = new object();string: Sytem.StringChuỗi ký tự Unicodestring s1 = “Hutech”;string s2 = “Hi “;string s = s1 + s2;The built-in reference type10Phân loại kiểu dữ liệu11Value typeReference typeData typeint num;long count;Object obj = new Object();String str = “reference type”;Phân loại theo cách thức lưu trữ dữ liệuValue TypeChứa giá trị trực tiếpKhông thể nullPhải chứa giá trị xác địnhBao gồmPrimitive typedouble, char, int, floatEnumstruct12int i = 59;59i7.83x59adouble x = 7.83;int a = i;Reference type13Chỉ tới nơi chứa dữ liệuCó thể nullnull: không chỉ tới bất kỳ đâuBao gồmLớp (class) string, objectGiao diện (interface)Mảng (array)Đại diện (delegate)string s1 = "Hello";"Hello""Bye"s2s3s1string s2 = "Bye";string s3;s3 = s1;Value type vs. Reference typeCharacteristicValue typeReference typeVariable holdValueReferenceAllocatedStackHeapDefaultZeroNullParameterCopy valueCopy reference14identifier15Định danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trìnhKhi đặt định danh: nên có tính gợi nhớTạo ra định danh mớiHelloWorld, Program, Perform, phải khai báo trước khi sử dụngDùng định danh có sẵnConsole, WriteLine, ReadLine, phải chỉ ra nơi chứa định danh (namespace)Identifier16Bao gồm chữ cái, chữ số, ký tự gạch dướiKhông được bắt đầu bằng chữ sốChuong_Trinh, x25, z, _abc, XửLý hợp lệ2abc, Chuong-Trinh, Xu Ly, class không hợp lệPhân biệt CHỮ HOA và chữ thườngChuongTrinh và chuongtrinh là khác nhauCác định danh được khai báo trong cùng phạm vi (scope) không được trùng nhauPhải khác với từ khóa (dùng “@” khắc phục)Keyword17Constant18Một hằng là một biến nhưng trị không thay đổi const int a = 100; // giá trị ko thể thay đổiHằng bắt buộc phải được gán giá trị lúc khai báo Trị của hằng có thể được tính toán vào lúc biên dịch Hằng bao giờ cũng static ConstantƯu điểmChương trình dễ đọc, khắc phục những con số “magic number” trong code.Chương trình dễ sửa hơn.Tránh lỗi dễ dàng hơn, trình biên dịch sẽ báo lỗi nếu gán lại giá trị cho hằng1920Minh họa sử dụng hằngĐịnh nghĩa hằngConstantreadonly21const: phải được gán giá trị khi khai báoreadonly: ko cần khởi tạo trước, khi gán giá trị thì sau đó ko thay đổi đượcChưa được khởi gánKo được thay đổiVariable22Biến là nơi lưu dữ liệu của chương trìnhDữ liệu của biếnNằm trong bộ nhớ vật lý (physical RAM)Có thể thay đổi giá trịPhải khai báo trước khi dùngIdentifier: tên để đại diện cho biếnData type: dạng lưu trữ dữ liệu của biếnData type identifierVariable23Phạm vi (scope)Được xác định bởi cặp dấu { và }Có thể chứa phạm vi nhỏ hơnVị trí khai báo biếnTrong thân phương thức: biến cục bộTrong thân lớp: thuộc tínhBiến trong C# chỉ có tác dụng trong phạm vi mà nó được khai báoType cast24Ép kiểu: chuyển giá trị từ kiểu này sang kiểu khácVí dụChuyển từ int qua float và ngược lạiCó hai loạiÉp kiểu ngầm định (implicit type-cast)Ép kiểu chỉ định (explicit type-cast)Implicit type cast25Do C# tự thực hiệnKhông cần lập trình viên can thiệpXảy ra khiÉp từ kiểu nhỏ qua kiểu lớnÉp từ lớp dẫn xuất qua lớp cơ sởint i = 59;double x = i;string s = "Hello";object o = s;Implicit type-castFromTosbyte 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 float double char ushort, int, uint, long, ulong, float, double, decimal 26Explicit type-cast27Do lập trình viên chỉ địnhXảy ra khiÉp từ kiểu lớn qua kiểu nhỏ: có thể mất giá trịÉp từ lớp cơ sở qua lớp dẫn xuấtdouble x = 74.86;int i = (int)x; // i = 74string s = "Hello";object o = s;string s2 = (string)o;Using Convert class28Thường dùng khi cần chuyển đổi giữa các kiểu không có liên hệ với nhauConvert.toDataType(SourceValue)Ví dụ: chuyển từ chuỗi sang số thựcstring s1 = "56.8";double x = Convert.ToDouble(s1); // x = 56.8int i = Convert.ToInt32(s2); // i = 95string s2 = "95";byte j = Convert.ToByte(x); // j = 56, ít dùngConsole I/O29Để đọc ký tự văn bản từ cửa sổ consoleConsole.Read() giá trị trả về là intConsole.ReadLine() giá trị trả về là stringĐể xuất chuỗi ký tự dùngConsole.Write() / Console.WriteLine()Console I/O30Console.WriteLine()\n: ký tự xuống dòngConsole I/O31/ F5Xuất chuỗiĐọc chuỗiChờ đọc 1 dòng, mục đích là dừng màn hìnhBoxing & Unboxing32Kiểu giá trị có thể được chuyển thành kiểu đối tượngBoxingUnboxing UnboxingBoxingchecked & unchecked33throws OverFlowExceptionref, out, param34ref: tương tự như truyền tham chiếu trong C/C++Từ khoá ref phải được dùng lúc gọi hàmCác tham số truyền dạng ref phải được khởi tạo giá trị trước Khai báo ref trước kiểu dữ liệusử dụng ref cho tham số khi gọi hàmref, out, param35out: tương tự như refKhác ref là ko cần khởi tạo giá trị trước khi truyềnKhai báo cho tham sốDùng trước tham số khi gọi hàmref, out, param363 phần tử6 phần tửMảng arrayLuôn khai báo ở cuối danh sách tham số Keyword this37public class list{ private int size; ... public SetSize (int size) { this.size = size; }Loop38Tương tự như C: while, do while, forwhile { // phần thân while}do { // phần thân do while} while ;for( khởi tạo biến lặp; ; thay đổi biến lặp){ // phần thân for}Phải là giá trị bool: true, falseLoop39index = 10;while (index != 0){ Console.WriteLine(index); index--;}index = 0;do{ Console.WriteLine("Happens at least once"); }while (index , trong switchreturn43Thoát khỏi hàm voidTrả về 1 giá trị của hàmvoid Func1(int x) { if (x == 0) return; ...}int max(int a, int b) { if (a > b) return a; else return b;}Array44Chứa một số những biến có cùng kiểu dữ liệu.Truy xuất phần tử thông qua chỉ số (index)Chỉ số bắt đầu bằng 0.VDint[] myInteger = new int[5];string[] myString = {“BeMun”,”BeTien” };Datatype[ ] array-nameArray45Lấy kích thước mảng qua thuộc tính Lengthint Size = myArray.Length;Nếu thành phần của mảng là kiểu định trước, có thể dùng hàm Sort của Array để sắp xếpArray.Sort(myArray);Dùng hàm Reverse của Array để đảo thứ tự các phần tử trong mảngArray.Reverse(myArray);Array46Dùng phương thức tĩnh Sort của lớp Array để sort artistsDùng phương thức tĩnh Reverse của lớp Array để đảo thứ tự artistsMulti-dimensional Array47Khai báo mảng int 2 dòng 3 cộtint[,] myMatrix = new int[2,3];Có thể khởi gánint[,] 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-nameMulti-dimensional Array48Truy cập tuần tự theo kiểu mảng 1 chiềuTruy cập theo dạng dòng cột qua chỉ mục i và jJagged Array49Jagged là mảng mà mỗi phần tử là một mảng có kích thước khác nhauNhững mảng con này phải được khai báo riêngKhai báo mảng 3 dòng, mỗi dòng là một mảng 1 chiềuDatatype[ ][ ] array-nameint[][] 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àngKhai báo số cột riêng chotừng dòngJagged Array50Truy cập theo dòng, cộtTruy cập dùng foreachEnumeration51Dùng thay thế hằngTập hợp các giá trị hằng được đặt tênKhai báo trực tiếp trong namespaceLà kiểu dữ liệuenum 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ử dụngEnumeration52Enumeration kế thừa từ object (Equals, ToString()).Enumeration53SummaryCú pháp khá giống với C/C++Kiểu dữ liệu tham chiếu & giá trịTruyền tham số kiểu giá trị cho hàmType-castBoxing & UnboxingĐiều khiển lặp foreach duyệt tập hợpKiểu dữ liệu mảng54Bài tập thực hànhChương trình tính n! với n là tham số đưa vào từ dòng lệnh.Chương trình sinh mảng ngẫu nhiên các số nguyên. Liệt kê các số nguyên tố có trong mảng.Chương trình sinh mảng ngẫu nhiên các số nguyên. Liệt kê các số Fibonaci có trong mảng.HD: Để tạo số ngẫu nhiên ta sử dụng namespace: System.random55
Các file đính kèm theo tài liệu này:
- bai_giang_ngon_ngu_lap_trinh_c_nguyen_van_phong.ppt