1 / 123

Ngôn ngữ C#

Ngôn ngữ C#. 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 phân nhánh switch, lệnh nhảy Lệnh lặp for, while, do while, foreach Mảng 1 chiều, đa chiều Kiểu enumeration. Cấu trúc chương trình C#.

ronia
Download Presentation

Ngôn ngữ C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ngônngữ C#

  2. 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 phân nhánh switch, lệnh nhảy • Lệnh lặp for, while, do while, foreach • Mảng 1 chiều, đa chiều • Kiểu enumeration

  3. Cấu trúc chương trình C# • using <namespace sử dụng> • …namespace <Tên Namespace>{ [Khóa truy xuất] class <Tên lớp> { • publicstaticvoid Main(){ … • } • // thành viên khác … • } • // lớp khác … *.cs

  4. Cấu trúc chương trình C# • using: làm code gọn hơn, không cần phải dùng tên của namspace • using System. • namespace của chương trình: ko bắt buộc. Dùng để hạn chế phạm vi của một tên, làm cho tên này chỉ có ý nghĩa trong vùng đã định nghĩa. • Giả sử có một người nói Tùng là một kỹ sư, từ kỹ sư phải đi kèm với một lĩnh vực nhất định nào đó, vì nếu không thì chúng ta sẽ không biết được là anh ta là kỹ sư cầu đường, cơ khí hay phần mềm. Khi đó một lập trình viên C# sẽ bảo rằng Tùng là CauDuong.KySu phân biệt với CoKhi.KySu hay hanMem.KySu. Namespace trong trường hợp này là CauDuong, CoKhi, PhanMem sẽ hạn chế phạm vi của những từ theo sau.

  5. Cấu trúc chương trình C# Nếu ko có namespace  namespace mặc định ko tên Namespace có thể chứa: struct, interface, delegate, enum Trường hợp đơn giản nhất: 1 lớp, 1 file cs và namespace mặc định

  6. Cấu trúc chương trình C# class: kiểu trong C# được định nghĩa là một lớp (class), và các thể hiện riêng của từng lớp được gọi là đối tượng (object). Tối thiểu có 1 lớp chứa hàm entry point Main của chương trình. Phương thức chính là các hàm được định nghĩa trong lớp. Các phương thức này chỉ ra rằng các hành động mà lớp có thể làm được cùng với cách thức làm hành động đó. public static void Main(): đầu vào của lớp (entry point) và được CRL gọi đầu tiên khi thực thi. 6

  7. Data Type • Bao gồm • Lớp đối tượng object • ký tự char • Chuỗi string • Số nguyên có dấu sbyte, short, int, long • Số nguyên không dấu byte, ushort, uint, ulong • Số thực float, double, decimal • Kiểu logic bool • Alias của các lớp dữ liệu trong .NET • string System.String • int System.Int32 • object System.Object

  8. Data Type Data Type Built-in User defined • Sử dụng kiểu dữ liệu • Định nghĩa trước (C#) • Built-in : int, long, string, object… • Chương trình định nghĩa • Class, struct, enum… • Person, Student, Employee…

  9. The built-in value type

  10. The built-in reference type • object: Sytem.Object • Kiể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.String • Chuỗi ký tự Unicode • string s1 = “Hi”; • string s2 = “Hi Hi “; • string s = s1 + s2;

  11. The built-in reference type

  12. Phân loại kiểu dữ liệu Data type Phân loại theo cách thức lưu trữ dữ liệu Value type Reference type int num; long count; Object obj = new Object(); String str = “reference type”;

  13. 59 i 7.83 x 59 a Value Type int i = 59; double x = 7.83; int a = i; • Chứa giá trị trực tiếp • Không thể null • Phải chứa giá trị xác định • Bao gồm • Primitive type • double, char, int, float • Enum • struct

  14. s1 s3 s2 Reference type strings1 = "Hello"; strings2 = "Bye"; strings3; s3 = s1; "Hello" "Bye" • Chỉ tới nơi chứa dữ liệu • Có thể null • null: không chỉ tới bất kỳ đâu • Bao gồm • Lớp (class) • string, object • Giao diện (interface) • Mảng (array) • Đại diện (delegate)

  15. Value type vs. Reference type

  16. identifier • Định danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trình • Khi đặt định danh: nên có tính gợi nhớ • Tạo ra định danh mới • HelloWorld, Program, Perform,… •  phải khai báo trước khi sử dụng • Dùng định danh có sẵn • Console, WriteLine, ReadLine,… •  phải chỉ ra nơi chứa định danh (namespace)

  17. Identifier • Bao gồm chữ cái, chữ số, ký tự gạch dưới • Khô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ường • ChuongTrinh và chuongtrinh là khác nhau • Các định danh được khai báo trong cùng phạm vi (scope) không được trùng nhau • Phải khác với từ khóa (dùng “@” khắc phục)

  18. Keyword

  19. Constant Một hằng là một biến nhưng trị không thay đổi const int a = 100; // giá trị ko thể thay đổi Hằ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

  20. Constant • Ưu điểm • Chươ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ằng

  21. Constant Định nghĩa hằng Minh họa sử dụng hằng

  22. Chưa được khởi gán Ko được thay đổi readonly const: phảiđượcgángiátrịkhikhaibáo readonly: kocầnkhởitạotrước, khigángiátrịthìsauđókothayđổiđược

  23. Variable Data type identifier • Biến là nơi lưu dữ liệu của chương trình • Dữ liệu của biến • Nằm trong bộ nhớ vật lý (physical RAM) • Có thể thay đổi giá trị • Phải khai báo trước khi dùng • Identifier: tên để đại diện cho biến • Data type: dạng lưu trữ dữ liệu của biến

  24. Variable • Phạm vi (scope) • Được xác định bởi cặp dấu { và } • Có thể chứa phạm vi nhỏ hơn • Vị trí khai báo biến • Trong thân phương thức: biến cục bộ • Trong thân lớp(trong class): thuộc tính • Biến trong C# chỉ có tác dụng trong phạm vi mà nó được khai báo

  25. Variables Nguyên tắc đặt tên biến

  26. Variables stringstrName, strSSN ; intintAge; decimaldecPayRate ; decimaldecTax=0.1 ; boolblnInsured ; long lngPopulation ; decimal decDT, decCD, decCR; decimal decHour, decSumSal, decDiemTB, decSum=0; decimal decTAX = 0.12, decHSLUONG=3.16; Const decimal decDISCOUNT_RATE = 0.15M; Note: Constants are named using all uppercase letters EXCEPT the prefix.

  27. Type cast • Ép kiểu: chuyển giá trị từ kiểu này sang kiểu khác • Ví dụ • Chuyển từ int qua float và ngược lại • Có hai loại • Ép kiểu ngầm định (implicit type-cast) • Ép kiểu chỉ định (explicit type-cast)

  28. inti = 59; doublex = i; string s ="Hello"; object o = s; Implicit type cast • Do C# tự thực hiện • Không cần lập trình viên can thiệp • Xả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ở

  29. Implicit type-cast

  30. doublex = 74.86; inti = (int)x; // i = 74 strings ="Hello"; objecto = s; strings2 = (string)o; Explicit type-cast • Do lập trình viên chỉ định • Xả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ất

  31. strings1 = "56.8"; strings2 ="95"; doublex = Convert.ToDouble(s1);// x = 56.8 inti = Convert.ToInt32(s2);// i = 95 bytej = Convert.ToByte(x);// j = 56, ít dùng Using Convert class Thường dùng khi cần chuyển đổi giữa các kiểu không có liên hệ với nhau Convert.toDataType(SourceValue) Ví dụ: chuyển từ chuỗi sang số thực

  32. Console I/O • Để đọc ký tự văn bản từ cửa sổ console • Console.Read() giá trị trả về là int • Console.ReadLine() giá trị trả về là string • Để xuất chuỗi ký tự dùng • Console.Write() / Console.WriteLine()

  33. Console I/O 33

  34. Console I/O \n: ký tự xuống dòng Console.WriteLine()

  35. Console I/O / F5 Đọc chuỗi Xuất chuỗi Chờ đọc 1 dòng, mục đích là dừng màn hình

  36. Addition.cs Console I/O Addition.cs 1 // Fig. 3.11: Addition.cs 2 // An addition program. 3 using System; 4 class Addition 5 { 6 staticvoid Main( string[] args ) 7 { 8string firstNumber, // first string entered by user 9 secondNumber; // second string entered by user 10 int number1, // first number to add 11 number2, // second number to add 12 sum; // sum of number1 and number2 13// prompt for and read first number from user as string 14 Console.Write( "Please enter the first integer: " ); 15 firstNumber = Console.ReadLine(); 16 // read second number from user as string 17 Console.Write( "\nPlease enter the second integer: " ); 18 secondNumber = Console.ReadLine(); 19 // convert numbers from type string to type int 20 number1 = Int32.Parse( firstNumber ); 21 number2 = Int32.Parse( secondNumber ); 22 // add numbers 23 sum = number1 + number2;

  37. Console I/O 32 // display results 33 Console.WriteLine( "\nThe sum is {0}.", sum ); 34 35 } // end method Main 36 37 } // end class Addition Please enter the first integer: 45 Please enter the second integer: 72 The sum is 117.

  38. Boxing & Unboxing Boxing Unboxing • Kiểu giá trị có thể được chuyển thành kiểu đối tượng • Boxing • Unboxing

  39. checked & unchecked throwsOverFlowException

  40. Operators Arithmetic Operations Relational Operators Assignment Operators Increment and Decrement Operators Logical and Conditional Operators

  41. Arithmetic Operations Notes: Must be written in a straight line There are no exponents Division can vary depending on the variables used When dividing two integers the result is always rounded down to an integer. To be more exact use a variable that supports decimals

  42. Arithmetic Operations

  43. Arithmetic Operations Thứ tự thực hiện

  44. Arithmetic Operations Step 1. y = 2 * 5 * 5 + 3 * 5 + 7; 2 * 5 is 10 (Leftmost multiplication) Step 2. y = 10 * 5 + 3 * 5 + 7; 10 * 5 is 50 (Leftmost multiplication) Step 3. y = 50 + 3 * 5 + 7; 3 * 5 is 15 (Multiplication before addition) Step 4. y = 50 + 15 + 7; 50 + 15 is 65 (Leftmost addition) Step 5. y = 65 + 7; 65 + 7 is 72 (Last addition) Step 6. y = 72; (Last operation—place 72 into y) Fig. 3.17 Order in which a second-degree polynomial is evaluated.

  45. Relational Operators

  46. Comparison.cs Relational Operators 18 // read in second number from user 19 Console.Write( "\nPlease enter second integer: " ); 20 number2 = Int32.Parse( Console.ReadLine() ); 21 22 if ( number1 == number2 ) 23 Console.WriteLine( number1 + " == " + number2 ); 24 25 if ( number1 != number2 ) 26 Console.WriteLine( number1 + " != " + number2 ); 27 28 if ( number1 < number2 ) 29 Console.WriteLine( number1 + " < " + number2 ); 30 31 if ( number1 > number2 ) 32 Console.WriteLine( number1 + " > " + number2 ); 33 1 // Fig. 3.19: Comparison.cs 2 // Using if statements, relational operators and equality 3 // operators. 4 5 using System; 6 7 class Comparison 8 { 9 static void Main( string[] args ) 10 { 11 int number1, // first number to compare 12 number2; // second number to compare 13 14 // read in first number from user 15 Console.Write( "Please enter first integer: " ); 16 number1 = Int32.Parse( Console.ReadLine() ); 17

  47. Relational Operators 34 if ( number1 <= number2 ) 35 Console.WriteLine( number1 + " <= " + number2 ); 36 37 if ( number1 >= number2 ) 38 Console.WriteLine( number1 + " >= " + number2 ); 39 40 } // end method Main 41 42 } // end class Comparison Please enter first integer: 2000 Please enter second integer: 1000 2000 != 1000 2000 > 1000 2000 >= 1000 Please enter first integer: 1000 Please enter second integer: 2000 1000 != 2000 1000 < 2000 1000 <= 2000 Please enter first integer: 1000 Please enter second integer: 1000 1000 == 1000 1000 <= 1000 1000 >= 1000

  48. Relational Operators

  49. Compound Assignment Operators Assignment operators Can reduce code x += 2 is the same as x = x + 2 Can be done with all the math operators ++, -=, *=, /=, and %=

  50. Assignment Operators

More Related