Chuyên đề Ngôn ngữ lập trình 3

pdf 35 trang phuongnguyen 9060
Bạn đang xem 20 trang mẫu của tài liệu "Chuyên đề Ngôn ngữ lập trình 3", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfchuyen_de_ngon_ngu_lap_trinh_3.pdf

Nội dung text: Chuyên đề Ngôn ngữ lập trình 3

  1. ĐẠI HỌC AN GIANG KHOA KỸ THUẬT – CÔNG NGHỆ – MÔITRƯỜNG BÀI THI THIẾT KẾ BÀI GIẢNG ĐIỆN TỬ LẦN V-2013 GV dự thi: Huỳnh Cao Thế Cường
  2. CHUYÊN ĐỀ NGÔN NGỮ LẬP TRÌNH 3 Giảng viên: Huỳnh Cao Thế Cường Địa điểm: ND202 Dành cho sinh viên lớp DH12TH
  3. Nội dung môn học Tổng quan Giới thiệu về ngôn ngữ lập trình C# Biến và kiểu dữ liệu trong C# Cấu trúc điều khiển trong C# Lớp và đối tượng trong C# Thao tác với các file và luồng dữ liệung trong C# 3
  4. Nội dung bài học Khái niệm kiểu dữ liệu Kiểu giá trị Kiểu tham chiếu Bộ thu gom rác Biến và hằng Câu hỏi củng cố 4
  5. Kiểu dữ liệu là gì? Common Type System Hình thái Xử Cấu lý trúc Kiểu dữ liệu Biểu Giá diễn trị 5
  6. Common Type System Type Value Type Reference Type User Primitive Enum Pointer Interface Self describing defined User Boxed Delegate defined 6
  7. Các kiểu dữ liệu • Kiểu dữ liệu trong .NET được chia thành hai loại: • Kiểu giá trị (Value Types) • Kiểu tham chiếu (Reference Types) • Mỗi kiểu dữ liệu trong .NET là một đối tượng, nghĩa là nó có các thuộc tính và phương thức riêng. 7
  8. Các kiểu dữ liệu Predefined Types Value Reference Types Types Struct Enumeration String Object Types Types Simply Types Numeric Bool Types Floating- Integer Decimal point Types Types Sbyte, byte, short, ushort, int, uint, long, ulong, char Double Float 8
  9. Kiểu giá trị (Value Types) • Các thể hiện của kiểu giá trị được lưu trữ trong một vùng nhớ được gọi là stack • Xét ví dụ: public void Method1() stack { int i=4; int y=i; y=4 Hai biến có hai vùng } i=4 nhớ khác nhau 9
  10. Kiểu tham chiếu (Reference Types) • Kiểu tham chiếu lưu trữ địa chỉ dữ liệu của chúng trên stack. • Dữ liệu thực sự mà các địa chỉ tham chiếu tới được lưu trữ trong một vùng bộ nhớ được gọi là heap • Hầu hết các kiểu dữ liệu trong .NET Framework là kiểu tham chiếu. • Xét ví dụ sau: public void Method1() stack heap { cls1 obj = new cls1(); cls1 obj1 = obj; obj1(ref) } obj(ref) cls1 Cả hai biến tham chiếu obj và obj1 đều chỉ đến một thể hiện của đối tượng cls1 10
  11. Bộ thu gom rác (Garbage collector) • Garbage collector tiến hành hủy các đối tượng không còn được tham chiếu, giúp giải phóng vùng nhớ heap • Xét ví dụ sau: public void Method1() stack heap { int i = 4; int y = 2; cls1(ref) class1 cls1 = new class1(); y=2 cls1 Object } i = 4 Các biến kiểu giá trị i, y, cls(ref) sẽ bị hủy. Tuy nhiên Kết thúc phương đối tượng cls1 vẫn tồn tại trong bộ nhớ cho đến khi thức Method1 bộ thu gom rác tiến hành làm việc 11
  12. Các kiểu giá trị (Value Types) Kiểu số Kiểu Kiểu liệt kê Kiểu luận lý giá trị Kiểu do người dùng định nghĩa 12
  13. Các kiểu giá trị (Value Types) • Kiểu số • Là kiểu cơ sở do .NET Framework cung cấp • Mỗi kiểu số có kích thước riêng DựaLàm vào thế miền nào đểgiá Vấn đề trịlựa của chọn kiểu kiểu số số Cần lưu trữ các dữ liệu dạng số sau: phù hợp với yêu • Lương của nhân viên Số nguyên từ cầu lưu trữ? • Tuổi của người 500,000 20,000,000 • Điểm của sinh viên Số nguyên từ 1 130 tuổi Số thập phân từ 0.0 10.0 điểm 13
  14. Miền giá trị của kiểu số Kiểu/Alias C# Kích thước Miền giá trị (range) LươngĐiểmTuổi củacủa của sinhnhân người viên viên 0.0 10.0 System.Sbyte/sbyte 1 byte -128 127 500.0001 20.000.000130 System.byte/byte 1 byte 0 255 System.Short/short 2 bytes -32768 32767 System.Integer/int 4 bytes -2147483648 21474836487 System.Uinteger/uint 4 bytes 0 4294967295 System.Long/long 8 bytes -9223372036854775808 9223372036854775807 System.Single/float 4 bytes -3.402823E+38 3.402823E+38 System.Double/double 8 bytes -1.79769313486232E+308 1.79769313486232E+308 System.Decimal/double 16 bytes -79228162514264337593543950335 79228162514264337593543950335 System.Char/char 2 bytes N/A System.Boolean/bool 4 bytes N/A 14
  15. Các kiểu giá trị • Việc sử dụng alias hoàn toàn tương đương với cách sử dụng tên kiểu theo cách đầy đủ, tuy nhiên hầu hết các lập trình viên sử dụng alias để chúng ngắn gọn hơn. • Khi gán các biến kiểu giá trị với nhau, dữ liệu được sao chép từ biến này tới biến kia và được lưu trữ tại hai vị trí khác nhau trên stack • Các kiểu giá trị thường được dùng để trình bày các giá trị đơn giản Slide 11 15
  16. Các kiểu giá trị • Kiểu liệt kê (Enumerations) • Kiểu liệt kê là các ký hiệu có liên quan với nhau chứa các giá trị cố định. • Kiểu liệt kê được dùng để cung cấp một danh sách chọn lựa cho lập trình viên sử dụng • Lưu ý: khi khai báo kiểu liệt kê chỉ có thể sử dụng các kiểu số nguyên như byte, sbyte, short, ushort, int, uint, long hoặc ulong. 16
  17. Kiểu liệt kê (Enumerations) • Khi nào nên sử dụng kiểu liệt kê? Vấn đề Giải pháp Khó nhớ Cần lưu trữ nhân xưng Sử dụng kiểu liệt kê • Mr, Ms, Mrs, Dr • Sử dụng kiểu số nguyên enum Titles : int { Mr, Ms, Mrs, Dr }; • 1  Mr Titles nx = Titles.Dr; • 2  Ms Console.WriteLine("{0}.", nx); • 3  Mrs // In ra màn hình "Dr." • 4  Dr int nx = 4; // Ngầm hiểu đang lưu trữ nhân xưng là Dr Slide 11 17
  18. Các kiểu giá trị • Kiểu do người dùng định nghĩa (User-defined Types) • Kiểu do người dùng định nghĩa còn được gọi là các struct. Giống như các kiểu giá trị khác, các thể hiện của kiểu do người dùng định nghĩa được lưu trữ trên stack • struct là một kiểu cấu trúc hỗn hợp của nhiều kiểu khác nhằm mục đích dễ dàng làm việc với dạng dữ liệu có liên quan với nhau • struct có cấu trúc tương tự như class, tuy nhiên struct có kiểu giá trị còn class có kiểu tham chiếu. 18
  19. Kiểu do người dùng định nghĩa dữ liệu • Khi nào nên sử dụng kiểu do người dùng định nghĩa dữ liệu? Thông tin học sinh Thông tin khách hàng • Mã số • Số điện thoại • Họ và tên • Họ và tên • Ngày sinh • Địa chỉ liên lạc • Giới tính • Tên lớp • Địa chỉ liên lạc Các thông tin có liên quan của một đối tượng 19
  20. Kiểu do người dùng định nghĩa dữ liệu Khai báo Sử dụng struct HocSinh HocSinh hs; { hs.MaSo = “A01”; public string MaSo; hs.HoTen = “Hoàng Thị Ngọc”; public string HoTen; hs.NgaySinh = public DateTime NgaySinh; DateTime.Parse(“24/1/1998”); public bool GioiTinh; hs.GioiTinh = false; public string TenLop; Hs.DiaChi = “An Giang”; public string DiaChi; } 20
  21. Các kiểu tham chiếu (Reference Types) • Các kiểu tham chiếu thường dùng xây dựng sẵn trong .NET Framework Kiểu Ý nghĩa sử dụng System.Object Kiểu tổng quát System.String Kiểu chuỗi System.Text.StringBuilder Kiểu chuỗi động System.Array Kiểu mảng 21
  22. Sử dụng string và StringBuilder  Kiểu string dùng để lưu trữ dữ liệu dạng chuỗi chuỗi như: Họ tên, quê quán, địa chỉ,  Ví dụ sử dụng string: string s; s = “Ngon"; // s=“Ngon" s += " ngu"; // s=“Ngon ngu” s += " lap"; // s=“Ngon ngu lap” s += " trinh"; // s=“Ngon ngu lap trinh” Console.WriteLine(s);  Lưu ý  Đoạn mã lệnh trên sẽ cấp phát bốn chuỗi mới trong bộ nhớ.  Khi có bất kỳ sửa đổi đối với chuỗi tại thời điểm vận hành sẽ tạo nên một chuỗi mới và bỏ đi chuỗi cũ.  Chỉ chuỗi sau cùng là có một tham chiếu; ba chuỗi kia sẽ bị hủy khi bộ thu gom rác làm việc 22
  23. Sử dụng string và StringBuilder • Ngăn ngừa các loại chuỗi tạm thời này giúp tránh gom rác không cần thiết, cải thiện hiệu suất hoạt động • Có một số cách để ngăn ngừa các chuỗi tạm thời: • Sử dụng các phương thức Concat, Join, hay Format của lớp String ghép nhiều chuỗi nhỏ thành chuỗi lớn. • Sử dụng lớp StringBuilder để tạo các chuỗi dạng dynamic (có thể biến đổi - mutable) 23
  24. Sử dụng string và StringBuilder • Ví dụ cách sử dụng StringBuilder System.Text.StringBuilder sb = new System.Text.StringBuilder(30); sb.Append (“Ngon"); // Xây dựng chuỗi sb.Append(" ngu"); //Chèn chuỗi con “ ngu” vào sau chuỗi sb sb.Append(" lap"); sb.Append(" trinh"); string s = sb.ToString(); // Sao chép kết quả Console.WriteLine(s); 24
  25. Biến • Định nghĩa • Biến là một vùng nhớ dùng để lưu trữ dữ liệu • Để tạo một biến chúng ta phải khai báo kiểu của biến và gán cho biến một tên duy nhất – định danh • Cú pháp: [ Kiểu truy xuất ] Kiểu dữ liệu Định danh ; • Trong đó • Kiểu truy xuất : vd: public, private, protected • Kiểu dữ liệu: vd: int , long , float • Định danh : • Bao gồm các ký tự a-z, A-Z, 0-9, _ • Phải bắt đầu là ký tự alphabet hoặc _ • Các định danh không được trùng với các từ khoá trong C# 25
  26. Sử dụng biến • Trước khi sử dụng một biến, thì biến đó phải được khởi tạo. • Ví dụ int x; //Khai báo biến trước. x = 5; // Khởi gán giá trị và sử dụng int x = 1 //Khai báo và khởi gán cùng lúc int x = 10, y = 20; //Khai báo nhiều biến 26
  27. Hằng • Hằng là một biến nhưng giá trị của hằng không thay đổi const int a = 100; // giá trị này không thể bị thay đổi • Hằng bắt buộc phải được gán giá trị lúc khai báo. • Giá trị của hằng phải được tính toán vào lúc biên dịch vậy không thể gán giá trị của hằng từ giá trị của biến. • Hằng làm cho chương trình đọc dễ dàng hơn, bằng cách thay thế những con số bằng những tên mang có ý nghĩa. 27
  28. Hằng • Hằng được phân thành ba loại: • Giá trị hằng (literal) • x = 100; • Biểu tượng hằng (symbolic constants) • const int DoSoi = 100; • Kiểu liệu kê (enumerations) • enum Titles : int { Mr, Ms, Mrs, Dr }; Titles nx = Titles.Dr; //Dr có giá trị là 3 28
  29. Câu hỏi củng cố Câu 1: Phát biểu nào sau đây về kiểu dữ liệu trong C# là ĐÚNG 1. Mỗi kiểu dữ liệu hoặc là kiểu giá trị hoặc là kiểu tham chiếu 2. Các kiểu giá trị luôn được tạo trên bộ nhớ heap 3. Các kiểu tham chiếu luôn được tạo trên bộ nhớ stack 4. Kiểu dữ liệu trong .NET được mô tả chi tiết trong một cấu trúc gọi là Common Type System A 1, 3 B 2, 3 C 1, 4 D 3, 4 29
  30. Câu hỏi củng cố Câu 2: Thành phần .NET dùng để hủy các đối tượng không được tham chiếu trong bộ nhớ heap là: A Common Type System B Common Language Runtime C Garbage Collector D Class Loader 30
  31. Câu hỏi củng cố Câu 3: Kiểu dữ liệu nào là số nguyên 8-bytes A char B long C short D byte 31
  32. Câu hỏi củng cố Câu 4: Cho các chuỗi sau: a ) Abc b) M/H c) a_1 d) Student Number e) 25or6to4 f) string g) _time h) first-Name Liệt kê các định danh hợp lệ Abc, a_1, _time Liệt kê các định danh không hợp lệ M/H, Student Number, 25or6to4, string, first-Name Có ký tự không được phép sử Bắt đầu là Trùng với từ khóa dụng trong định danh: ký tự số string /, Khoảng trắng, - 32
  33. Câu hỏi củng cố Câu 5: Cho đoạn mã sau: class Class1 { static void Main() { const int y = 1,z = 2; const string x = "Hello"; string X = "World"; Console.WriteLine(y + z); Console.WriteLine(x + " " + X); Console.ReadLine(); } } Liệt kê các biến X Liệt kê các hằng y, z, x 33
  34. Giải đáp thắc mắc 34