Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

32 626 0
Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

4/10/2012 Chương Nền tảng ngôn ngữ C# Giảng viên: ThS Phạm Thanh An Khoa công nghệ thông tin Đại học Ngân hàng Tp Hồ Chí Minh Nội dung trình bày         Kiểu liệu Biến Biểu thức Câu lệnh Toán tử Namespace Các dẫn biên dịch Xử lý ngoại lệ Mô tả kiểu liệu C# System-defined types Object User-defined types String Array Primitive types Boolean Exception Delegate Class1 Enum Structure1 Multicast Delegate Class2 Delegate1 Class3 Single Byte ValueType Double Int16 Decimal Int32 TimeSpan Char Enum1 DateTime Int64 Guid 4/10/2012 Kiểu liệu  C# ngữ mạnh kiểu liệu Phải khai báo kiểu biến, đối tượng sử dụng  C# chia thành hai tập hợp kiểu liệu chính:     integer, float, string, byte, buttons, v.v Kiểu xây dựng sẵn (built- in) Kiểu người dùng định nghĩa (user-defined) người lập trình tạo (lớp, struct, v.v) Kiểu liệu (tt)  C# phân tập hợp kiểu liệu thành hai loại: Kiểu liệu giá trị (value type): int, char , structures  Kiểu liệu tham chiếu (reference type): classes, interfaces, arrays strings  Kiểu liệu xây dựng sẵn Kiểu C# Số Byte Kiểu NET Mơ tả Ví dụ object Kiểu liệu sở cho tất kiểu liệu khác object o = null; string Lưu trữ giá trị chuỗi string s = “hello”; short Int16 Số nguyên có dấu giá trị từ -32768 đến 32767 ushort Uint16 Số nguyên không dấu – 65.535 int Int32 Số nguyên có dấu –2.147.483.647 2.147.483.647 uint Uint32 Số nguyên không dấu – 4.294.967.295 int val = 12; 4/10/2012 Kiểu liệu xây dựng sẵn (tt) Kiểu C# Số Byte Kiểu NET Mơ tả Ví dụ sbyte Sbyte byte long Int64 Kiểu số nguyên có dấu có giá trị khoảng : -9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807 ulong Uint64 Số ngun khơng dấu từ đến Số ngun có dấu ( từ -128 đến 127) Số nguyên không dấu từ - 255 18446744073709551615 Kiểu liệu xây dựng sẵn (tt) Kiểu C# Số Byte Mô tả Kiểu NET Ví dụ float Single Kiểu dấu chấm động, giá trị xấp xỉ từ 3,4E- 38 đến 3,4E+38, với chữ số có nghĩa Có thêm hậu tố F sau giá trị double Double Kiểu dấu chấm động có độ xác gấp đơi, giá trị xấp xỉ 1.7E-308 1.7E+308, với 15,16 chữ số có nghĩa Decimal Chính xác đến 28 số giá trị thập phân, dùng tính tốn tài chính, địi hỏi hầu tố “m” hay “M” theo sau giá trị decimal float val = 1.23F; Kiểu liệu xây dựng sẵn (tt) Kiểu C# Số Byte Kiểu NET Mơ tả Ví dụ bool Boolean Giá trị logic true/ false bool val1 = true; bool val2 = false; char Char Ký tự Unicdoe char val = 'h'; 4/10/2012 Kiểu liệu xây dựng sẵn (tt)  Ghi chú:   Kiểu giá trị logic nhận giá trị true hay false Khác với C/C++, giá trị nguyên gán vào biến kiểu logic C# khơng có chuyển đổi ngầm định Biên dịch: xuất lỗi Error CS0029 : Cannot implicitly convert type 'int' to 'bool' Kiểu liệu xây dựng sẵn (tt)  Kiểu liệu ký tự thể ký tự Unicode   Bao gồm ký tự đơn giản, ký tự theo mã Unicode ký tự thoát khác bao dấu nháy đơn Ký tự thoát ký tự đặc biệt bao gồm hai ký tự liên tiếp ký tự dầu tiên dấu chéo ‘\’ Ví dụ, \t dấu tab Giá trị mặc định kiểu liệu Kiểu Numeric (int,float,short) Bool Char Enum String Kiểu tham chiếu Giá trị mặc định 0.0 false ‘\0’ null null 4/10/2012 Các ký tự đặc biệt Ký tự Ý nghĩa \' Dấu nháy đơn \" Dấu nháy kép \\ Dấu chéo (Backslash) \0 Ký tự Null \a Alert Các ký tự đặc biệt (tt) Ký tự Ý nghĩa \b Backspace \f Sang trang Form feed \n Dòng mời (Newline) \r Đầu dòng (Carriage return) \t Tab ngang (Horizontal tab) \v Tab dọc (Vertical tab) Chuyển đổi kiểu liệu   Chuyển đổi kiểu liệu qua kiểu liệ khác Có cách: chuyển đổi tường minh ngầm định   Chuyển đổi ngầm định thực cách tự động đảm bảo không thông tin Từ kiểu nhỏ sang kiểu lớn short x = 10; int y = x; // chuyển đổi ngầm định  Trường hợp không thực short x; int y = 100; x = y; // Không biên dịch, lỗi !!! 4/10/2012 Chuyển đổi kiểu liệu (tt) short x; int y = 500; x = (short) y; // Ép kiểu tường minh, trình biên dịch khơng báo lỗi Để chuyển đổi ký tự sang mã ASCII   (int)'A‘ Để chuyển số sang ký tự ta thực sau:   (char)65 Chuyển đổi ngầm định From sbyte To 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 Chuyển đổi tường Do lập trình viên định  Xảy   Ép từ kiểu lớn qua kiểu nhỏ: giá trị double x = 74.86; int i = (int))x; // i = 74  Ép từ lớp sở qua lớp dẫn xuất string s = "Hello"; object o = s; string s2 = (string)o; 4/10/2012 Ví dụ sử dụng kiểu liệu Khai bao trước sử dụng  Gán giá trị trước sử dụng Khai báo  public class App { public static void Main() { int width, height; width = 2; height = 4; int area = width * height; Khai báo + khởi đầu int x; int y = x * 2; Lỗi } } Ví dụ using System; class TestDefaultValues { static void Main() { int number, result; number=5; result=100 * number; Console.WriteLine (“Result is {0} when 100 is multiplied by number {1}”, result, number); } } Ví dụ: chuyển đổi kiểu liệu int double string Chuyển đổi ngầm định i = 5; d = 3.2; s = "496"; d = i; Chuyển đổi tường minh i = (int) d; Chuyển đổi tường minh i = System.Convert.ToInt32(s); 4/10/2012 Input / Output C#  Sử dụng phương thức lớp Console không gian tên System Console.ReadLine() Console.WriteLine() Định danh Là tên mà người lập trình định cho kiểu liệu, phương thức, tên biến, hằng, lớp hay đối tượng  Định danh khơng trùng với từ khóa C#  Định danh phải bắt đầu với ký tự chữ hay dấu gạch dưới,   ký tự lại phải ký tự chữ cái, chữ số, dấu gạch C# phân biệt chữ hoa chữ thường  Ví dụ:  Định danh đúng: result , _score, footballTeam, plan9  Định danh sai: result%, footballTeam$, 9plan  Các từ khóa C# Các từ khóa C# abstract as base bool break byte case catch char checked class const continue decimal default delegate double else enum event explicit extern false finally fixed float for foreach get goto if implicit in operator int out interface override internal params is partial lock private long protected namespace public new readonly null ref object return sbyte sealed set short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using value virtual void volatile where while yield 4/10/2012 Biến Biến nơi lưu liệu chương trình  Dữ liệu biến     Nằm nhớ vật lý (physical RAM) Có thể thay đổi giá trị Phải khai báo trước dùng   Định danh: tên để đại diện cho biến Kiểu liệu: dạng lưu trữ liệu biến Biến (tt) Bạn khai báo kết hợp khởi đầu giá trị cho biến  Tên biến khơng trùng với từ khóa C#, muốn sử dụng từ khóa làm tên biến phải thêm @ trước từ khóa  Khai báo biến: int tuoi;   tên biến ; tuoi = 21 ; Console.WriteLine(tuoi); Ví dụ 4/10/2012 Ví dụ: khai báo biến using System; using System.Collections.Generic; using System.Text; namespace InitializingVariables { class Values { static void Main( ) { int myInt = 7; System.Console.WriteLine(“Khởi đâu, myInt: {0}", myInt); myInt = 5; System.Console.WriteLine(“Sau gán, myInt: {0}", myInt); } } } Output: Khởi đầu, myInt: sau gán, myInt: Ví dụ: sử dụng từ khóa làm tên biến using System; class VariableDemo { public static void Main() { string @string; @string = ”Su dung tu khoa lam ten bien”; Console.WriteLine (@string); } } Hằng Hằng biến mà giá trị khơng thể thay đổi  Phải gán giá trị khai báo  Khai báo  = ; const int DoSoi = 100; // Độ C const int DoDong = 0; // Độ C System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong ); System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi ); 10 4/10/2012 Toán tử  Toán tử tăng giảm Luong = Luong * 2; Luong = Luong – 100.000; C# cung cấp phép toán tự gán Toán tử Toán tử Toán tử : ++ , - Toán tử tăng giảm tiền tố tăng giảm hậu tố, var2 =10    var1 = ++var2; // var1 = 11, var2 = 11 var1 = var2++; //var1 = 10 , var2 = 11 18 4/10/2012 Toán tử quan hệ Toán tử logic Độ ưu tiên toán tử Một ngơi 19 4/10/2012 Độ ưu tiên tốn tử Tốn tử ba ? :  Ví dụ  maxValue = value1 > value2 ? value1 : value2; Namespace  Sử dụng namespace Nhằm tránh xung đột tên, giúp cho việc sử dụng thư viện khác từ nhà cung cấp  Giảm bớt độ phức tạp sử dụng lại mã cho ứng dụng khác  C# đưa từ khóa using đề khai báo sử dụng namespace chương trình:  20 4/10/2012 Namespace  Để tạo namespace dùng cú pháp sau: namespace { < Định nghĩa lớp A> < Định nghĩa lớp B > } Namespace class { } class { } class { } class { } SamsungTelevision namespace Samsung { class Television { } SamsungWalkMan class WalkMan { } SonyTelevision } namespace Sony { class Television { } SonyWalkMan class Walkman { } } Namespace lồng namespace Sony { namespace Television { class T14inches { } class T21inches { } } } namespace Sony.Television { class T14inches { } class T21inches { } } 21 4/10/2012 Ví dụ : namespace namespace MyLib { using System; public class Tester { public static int Main() { for (int i =0; i < 10; i++) { Console.WriteLine( “i: {0}”, i); } return 0; } } } Ví dụ : namespace lồng namespace MyLib  Từ bên để truy cập { lớp Tester dùng cú pháp namespace Demo sau: MyLib.Demo.Tester { using System; public class Tester { public static int Main() { for (int i =0; i < 10; i++) { Console.WriteLine( “i: {0}”, i); } return 0; } } } Ví dụ namespace Sony { class Television { } class WalkMan { Television MyEntertainment = new Television(); } } 22 4/10/2012 Ví dụ (tt) using Sony; using Samsung; using System; namespace Sony { namespace Television { class T14inches { public T14inches() { Console.WriteLine ("A 14 inches Television"); } } class T21inches { public T21inches() { Console.WriteLine ("A 21 inches Television"); } } }//end of namespace Television }//end of namespace Sony Ví dụ (tt) namespace Samsung { class Television { Sony.Television.T14inches myEntertainment = new Sony.Television.T14inches(); } } class Test { static void Main() { Samsung.Television myEntertainment = new Samsung.Television(); } } Sử dụng dẫn namespace  Sử dụng namespace Sony.Television.T14inches Television = new Sony.Television.T14inches();  Sử dụng dẫn namespace using Sony.Television; T14inches Television = new T14inches(); T21inches Television2 = new T21inches(); 23 4/10/2012 Xung đột using Sony; using Samsung; class Test { static void Main() { Television MyEntertainment = new Television(); } } Error: Vì hai namesapce Sony Samsung có tên lớp Television Ví dụ (tt) Phải sử dụng namespace using Sony; using Samsung; class Test { static void Main() { Samsung.Television MyEntertainment = new Samsung.Television(); } } Sử dụng bí danh (alias)  Sử dụng bí danh: using T21inches = Sony.Televisions.T21inches; class Test { static void Main() { T21inches M = new T21inches(); } } using = 24 4/10/2012 Ví dụ: Khai báo khác khối using System; namespace MyLib { namespace Demo2 { public class Tester { public static int Main() { Demo1.Example1.Show1(); Demo1.Example2.Show2(); return 0; } } } // end Demo2 namespace Demo1 { class Example1 { public static void Show1() { Console.WriteLine(“Lop Example1”); } } // end MyLib } } // end Demo1 Ví dụ: Khai báo khác khối namespace MyLib.Demo1 { class Example2 { public static void Show2() { Console.WriteLine(“Lop Example2”); } } }  Lớp Example2 có namespace MyLib.Demo1 với lớp Example1 hai khai báo không khối Xử lý ngoại lệ (exception handling)  Một chương trình ?   Đọc file đĩa, file bị xóa Chia cho số Trong lập trình, chương trình phải lường trước tình có thẻ gây lỗi  Các ngoại lệ sử dụng để đón trước bắt lỗi xảy chương trình  25 4/10/2012 Xử lý ngoại lệ (tt)  Net framwork cung cấp lớp ngoại lệ lưu giữ thơng tin ngoại lệ Phát sinh bắt giữ ngoại lệ  Trong C#, phát sinh (throw) đối tượng ngoại lệ   Kiểu liệu System.Exception, hay đối tượng dẫn xuất từ kiểu liệu Câu lệnh throw :   throw new System.Exception(); throw new IOException(); Phát sinh bắt giữ ngoại lệ (tt) Khi gặp ngoại lệ, làm ngừng việc thực thi câu lệnh tiếp theo, CLR tìm kiếm trình xử lý ngoại lệ  Nếu trình xử lý ngoại lệ khơng tìm thấy phương thức thời, CLR tiếp tục tìm phương thức gọi tìm thấy  Nếu CLR trả lớp Main() mà khơng tìm thấy trình xử lý ngoại lệ nào, kết thúc chương trình  26 4/10/2012 Sử dụng khối try … catch try { ; }  Trạng thái lỗi xử lí catch khối catch {  Có thể có nhiều khối catch ; }  Khối Finally có finally khơng {  Khối finally ln thực ; dù có lỗi xảy hay khơng } Ví dụ Khối try … catch  Bắt đầu thực câu lệnh khối try  Nếu khơng có lỗi xuất hiện, việc thực thi tiến hành cuối khối try, chuyển đến khối finally  Nếu có lỗi xuất khối try, thực thi nhảy đến khối catch  Vào cuối khối catch , việc thực thi chuyển khối finally  Khối finally thực thi (có thể có khơng) 27 4/10/2012 Ví trụ: try … catch using System; class ExceptionDemo { static void Main() { int dividend = 50; int userInput = 0; int quotient = 0; Console.WriteLine ("Enter a number : "); try { userInput = Convert.ToInt32 (Console.ReadLine()); quotient = divident /userInput; } Ví trụ: try … catch catch (System.FormatException excepE) { Console.WriteLine (excepE); } catch (System.DivideByZeroException excepE) { Console.WriteLine ("catch block"); Console.WriteLine (excepE); Console.WriteLine(""); } Ví trụ: try … catch finally { Console.WriteLine ("finally block"); if (quotient != 0) { Console.WriteLine("The Integer Quotient of 50 divided by {0} is {1}", userInput, quotient); } } } } 28 4/10/2012 Ví dụ  Một khối catch bắt giữ tất ngoại lệ Kiểu giá trị kiểu tham chiếu  C# chia kiểu liệu vào hai loại - int, char and structures - classes, interfaces, arrays and strings Kiểu giá trị kiểu tham chiếu  Lưu giá trị trong nhớ  Trên stack  Chứa địa chỉa đối tượng Heap = null có nghĩa khơng có đối tượng tham chiếu 29 4/10/2012 Ví dụ kiểu giá trị  Output: Ví dụ kiểu tham chiếu Output So sánh kiểu giá trị kiểu tham chiếu Value Reference Biến lưu trữ Giá trị thực Tham chiếu Vị trí Stack Heap Giá trị mặc định Null Tham số cho phương thức Copy giá trị Copy tham chiếu 30 4/10/2012 Lưu ý  Tất kiểu liệu C# kế thừa từ kiểu object, định nghĩa namespace system Convert Class Ví dụ: sử dụng lớp Convert 31 4/10/2012 Q&A Thank you all for your attention and patient ! 32 ... từ - 327 68 đến 327 67 ushort Uint16 Số nguyên không dấu – 65.535 int Int 32 Số nguyên có dấu ? ?2. 147.483.647 2. 147.483.647 uint Uint 32 Số nguyên không dấu – 4 .29 4.967 .29 5 int val = 12; 4/10 /20 12 Kiểu... giá trị khoảng : -9 .22 3.370.036.854.775.808 đến 9 .22 3.3 72. 036.854.775.807 ulong Uint64 Số nguyên không dấu từ đến Số nguyên có dấu ( từ - 128 đến 127 ) Số nguyên không dấu từ - 25 5 18446744073709551615... =10    var1 = ++var2; // var1 = 11, var2 = 11 var1 = var2++; //var1 = 10 , var2 = 11 18 4/10 /20 12 Toán tử quan hệ Toán tử logic Độ ưu tiên tốn tử Một ngơi 19 4/10 /20 12 Độ ưu tiên tốn tử Tốn

Ngày đăng: 27/05/2014, 14:58

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan