TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCMTRUNG TÂM TIN HỌC Các kiểu dữ liệu Cá kiể iá t ị V l T − Các kiểu giá trị Value Types − Các kiểu tham chiếu Reference Types... Các kiểu dữ liệu• C
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 2: Các khái niệm và nguyên tắc
cơ bản của NET Framework
Trang 3Tổng quan về NET Framework
cụ phát triển ứng dụng NET ụ p g ụ g
trình ứng dụng và các service thế hệ kế tiếp
hành các chức năng mà đối tượng đó cung cấp
các loại dịch vụ từ hệ điều hành
Trang 4TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tổng quan về NET Framework
Trang 5Tổng quan về NET Framework
Trang 6TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 2: Các khái niệm và nguyên tắc
cơ bản của NET Framework
• Biế à hằ
Trang 7Các kiểu dữ liệu
• Khái niệm
ể
• Cách tạo và sử dụng các kiểu dữ liệu
• Chuyển đổi giữa các kiểu dữ liệu
Trang 8TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 9Các kiểu dữ liệu
Kiể dữ liệ t NET đ hi thà h hiề l i
− Kiểu dữ liệu trong NET được chia thành nhiều loại:
• Kiểu giá trị (Value Types)
• Kiểu tham chiếu (Reference Types)
• Kiểu do người dùng định nghĩa (User-defined Types)
• Kiểu liệt kê (Enumerations)
− 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 Một trong
Trang 10TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
Cá kiể iá t ị (V l T )
− Các kiểu giá trị (Value Types)
− Các kiểu tham chiếu (Reference Types)
Trang 11Các kiểu dữ liệu
• Các kiểu giá trị (Value Types)
Bao gồm các kiểu dữ liệu số học ngày giờ kiểu luận lý kiểu
− Bao gồm các kiểu dữ liệu số học, ngày giờ, kiểu luận lý, kiểu
do người dùng định nghĩa và kiểu liệt kê
− Các biến có kiểu giá trị là những biến chứa trực tiếp dữ liệu
ế
của chúng thay vì chứa một tham chiếu tới dữ liệu được lưu trữ tại một nơi nào đó trong bộ nhớ (memory)
− Các instance của kiểu giá trị được lưu trữ trong một vùng nhớ Các instance của kiểu giá trị được lưu trữ trong một vùng nhớ
được gọi là stack, ở đó tại thời điểm vận hành (runtime) có
thể tạo (create), đọc (read), cập nhật (update), và loại bỏ
Trang 12TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
• Các kiểu giá trị (Value Types)
Các kiểu giá trị tổng quát:
− Các kiểu giá trị tổng quát:
• Các kiểu giá trị được xây dựng sẵn (Built-in types)
• Các kiểu do người dùng định nghĩa (User-defined types) Các kiểu do người dùng định nghĩa (User defined types)
• Các kiểu liệt kê (Enumerations)
Trang 13Các kiểu dữ liệu
Là các kiểu cơ sở do NET Framework cung cấp các kiểu dữ
− Là các kiểu cơ sở do NET Framework cung cấp, các kiểu dữ liệu khác đều được xây dựng dựa trên các kiểu dữ liệu cơ sở này
− Tất cả các kiểu dạng số (numeric types) được xây dựng sẵn đều thuộc loại kiểu giá trị
− Bảng sau liệt kê các kiểu số thường dùng nhất:
− Bảng sau liệt kê các kiểu số thường dùng nhất:
Trang 14TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Kiểu/Alias C# Kích thước Miền giá trị (Range)
System.SByte y y /sbyte y 1 byte y -128 Æ 127
System.Short/short 2 bytes -32768 Æ 32767
System Integer/int 4 bytes 2147483648 Æ 2147483647
System.Integer/int 4 bytes -2147483648 Æ 2147483647
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 Æ1.79769313486232E+308
Trang 15Kiểu/Alias C# Kích thước Miền giá trị (Range)
System.Char/char 2 bytes y N/A
System.Boolean/bool 4 bytes N/A
System.DateTime
(Date/ date) 8 bytes 1/1/0001 12:00:00 AM Æ12/31/9999 11:59:59 PM/3 /9999 59 59
− 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 y y ập
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
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
Trang 16TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
Kiểu do người dùng định nghĩa còn được gọi là các struct
− 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 instance của các kiểu do người dùng định nghĩa được lưu trữ trên stack và chứa trực tiếp dữ liệu của chúng
− 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 quan hệ
− struct có cấu trúc tương tự như class, tuy nhiên struct có kiểu
Trang 18TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 19public string Ma_so;
public string Ho_ten;
public date Ngay_sinh;
Trang 20TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 22TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 23Các kiểu dữ liệu
• Kiểu liệt kê (Enumerations)
− Ví dụ:
enum Titles : int { Mr, Ms, Mrs, Dr };
− Nếu bạn tạo một instance của kiểu Titles , Visual Studio
sẽ hiển thị một danh sách các giá trị có sẵn để gán giá trị cho biến
Trang 24TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 25Các kiểu dữ liệu
• Cách khai báo các kiểu giá trị
− Các kiểu giá trị có một khởi tạo (constructor) ngầm định,
do vậy bạn không cần phải bao gồm trong phần khai báo
từ khóa New như khi khai báo với class
− Ví dụ:
bool b = false;
− Trong C# mỗi câu lệnh được kết thúc bởi dấu “ ; ”
Trang 26TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
• Cách khai báo các kiểu giá trị
− .NET 2.0 cung cấp một kiểu mới đó là kiểu Nullable cho
phép kiểm tra liệu một biến đã được gán giá trị hay chưa
− Ví dụ:
Nullable<bool> b = null;
// C# cho phép sử dụng ký hiệu thể hiện nhanh như sau
Trang 28TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
Cá kiể iá t ị (V l T )
− Các kiểu giá trị (Value Types)
− Các kiểu tham chiếu (Reference Types)
Trang 29Các kiểu dữ liệu
Các kiểu tham chiếu lưu trữ địa chỉ dữ liệu của chúng cũng
− Các kiểu tham chiếu lưu trữ địa chỉ dữ liệu của chúng, cũng
được hiểu như là một con trỏ (pointer), trên stack
− Dữ liệu thực sự mà các tham chiếu đị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 trong NET Framework là kiểu tham chiếu Các kiểu tham chiếu cung cấp rất nhiều cho tính linh động,
Các kiểu tham chiếu cung cấp rất nhiều cho tính linh động, uyển chuyển, chúng mang đến khả năng thực thi hoàn hảo khi gởi chúng tới các phương thức
Trang 30TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
Thời điểm vận hành (runtime) quản lý bộ nhớ bằng việc sử
− Thời điểm vận hành (runtime) quản lý bộ nhớ bằng việc sử
dụng heap thông qua một tiến trình được gọi là garbage collection Garbage collection sẽ khởi tạo bộ nhớ theo chu kỳ
dựa theo nhu cầu bằng cách loại bỏ các đối tượng không còn
dựa theo nhu cầu bằng cách loại bỏ các đối tượng không còn được tham chiếu nữa
− Có khoảng 2500 kiểu tham chiếu được xây dựng sẵn
NET F k (khô đ dẫ ấ ừtrong NET Framework (không được dẫn xuất từ
Trang 31− Các kiểu tham chiếu thường dùng:
System.Object Kiểu tổng quát
System.String Dữ liệu dạng Text
System Text StringBuilder Dữ liệu dạng Dynamic text
System.Text.StringBuilder Dữ liệu dạng Dynamic text
System.Array Mảng dữ liệu
Bộ đệm (Buffer) cho tập tin, thiết bị
Trang 32TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 33Các kiểu dữ liệu
Đoạn mã lệnh sau đây sẽ cấp phát bốn chuỗi mới trong bộ
− Đoạn mã lệnh sau đây sẽ cấp phát bốn chuỗi mới trong bộ nhớ:
string s;
" b t" // " b t"
s = "wombat"; // "wombat"
s += " kangaroo"; // "wombat kangaroo"
s += " wallaby"; // "wombat kangaroo wallaby"
s += " koala"; // "wombat kangaroo wallaby koala" ; // g y Console.WriteLine(s);
− Chỉ chuỗi sau cùng là có một tham chiếu; ba chuỗi kia sẽ
Trang 34TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
Việc ngăn ngừa các loại chuỗi tạm thời này giúp tránh gom
− Việc 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 item trong một câu lệnh đơn lẻ
• Sử dụng lớp StringBuilder để tạo các chuỗi dạng dynamic (có
Trang 35Các kiểu dữ liệu
− Đoạn mã lệnh sau đây giải thích cách sử dụng StringBuilder
System.Text.StringBuilder sb = new System.Text.StringBuilder(30);
sb.Append("wombat"); // Build string.
Trang 36TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
− Ví dụ:
int i = 1;
double d = 1.0001;
Trang 37− Có thể thực hiện việc chuyển đổi kiểu tường minh bằng cách sử dụng toán tử chuyển kiểu (hay ép kiểu - cast operator) nó có dạng:
Biến = (kiểu cần chuyển đổi)<biểu thức chuyển đổi>
Trang 38TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 39− Ví dụ:
int i = 123;
object o = (object) i; // cơ chế boxing
Trang 40TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 42TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
• Sự chuyển đổi giữa các kiểu
ử
− Sử dụng các phương thức Convert:
• Các thành viên public được chia sẽ của lớp System.Convert
có thể được sử dụng để chuyển đổi một kiểu dữ liệu cơ sở ợ ụ g y ộ ệ tới kiểu dữ liệu cơ sở khác
• Sử dụng Object Browser để xem và tìm hiểu những phương thức chuyển đổi sẵn có (Để mở công cụ Object Browser:
thức chuyển đổi sẵn có (Để mở công cụ Object Browser:
Trang 44TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
}
Trang 45string strNumber = System.Convert.ToString(SoThuc);
Trang 46TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các kiểu dữ liệu
• Sự chuyển đổi giữa các kiểu
− Sử dụng phương thức Parse của kiểu dữ liệu:
• Ví dụ 1: gán giá trị vào cho biến có kiểu ngày
Trang 47Bài 2: Các khái niệm và nguyên tắc
cơ bản của NET Framework
Trang 48TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Định dạng hiển thị kiểu dữ liệu
• C hay c: Sử dụng để định dạng đồng tiền Mặc định, là dấu dollar [$].
• D hay d: Sử dụng để định dạng số thập phân.
• E hay e: Sử dụng để thể hiện dạng số mũ.
• F hay f: Sử dụng cho định dạng dấu chấm tĩnh.
• G hay g: Viết tắt của general Ký tự này dùng để định dạng kiểu chấm tĩnh G hay g: Viết tắt của general Ký tự này dùng để định dạng kiểu chấm tĩnh
hay số mũ.
• N hay n: Sử dụng định dạng số học cơ bản (với dấu phẩy)
• X hay x: Sử dụng định dạng thập lục Nếu bạn dùng X viết hoa thì ký tự X hay x: Sử dụng định dạng thập lục Nếu bạn dùng X viết hoa thì ký tự
thập lục cũng sẽ được viết hoa.
Trang 49Biến và Hằng
• Khái niệm
• Cách khai báo
Trang 50TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
−Biến có thể lưu trữ dữ liệu dạng chuỗi, dạng số, dạng ngày
giờ … tuỳ thuộc vào kiểu dữ liệu của biến
−Hằng là những giá trị không thay đổi trong suốt quá trình hoạt động của ứng dụng
−Ví dụ:
Trang 51Biến và Hằng
• Một ố l ý khi đặt tê h biế à hằ
• Một số lưu ý khi đặt tên cho biến và hằng:
− Có ý nghĩa gần với giá trị lưu trữ
ế
− Tên biến có phân biệt chữ HOA, chữ thường
− Tuân theo quy tắc đặt tên biến:
• Không có khoảng trắng
• Không có dấu
• Không đặt trùng với các từ khóa
• Không đặt trùng với các từ khóa
• Không sử dụng các ký tự đặt biệt (#, $, %, +, -, …)
Trang 52TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 54TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Tên biến.Thuộc tính: lấy thông tin liên quan đến đối tượng
• Tên biến.Phương thức: đối tượng thực hiện hành động g ợ g ự ệ ộ g
Ví dụ:
int So a = int.Parse(txtSo a.Text); _ ( _ );
Trang 56TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 2: Các khái niệm và nguyên tắc
cơ bản của NET Framework
Trang 57• Toán tử dịch chuyển bit
• Toán tử dịch chuyển bit
• Kiểm tra kiểu dữ liệu
Trang 58TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 59Các toán tử
• Toán tử gán
• Toán tử gán
Trang 60TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
a = c; // Lỗi : Biến phải được khởi tạo trước khi sử dụng.
1 = a; // Lỗi : Trong phép gán, đích phải là một biến.
c = (a + b); // OK.
(a + b) = c; // Lỗi : Trong phép gán, đích phải là một biến.
Trang 61Các toán tử
• Toán tử gán
• Toán tử gán
−Ví dụ 2: phép gán các tham chiếu (giả sử đã có class ID)
Id id1 = new Id("Frank" 1);
Id id2 = new Id("Emma", 2);
id2 = id1;
Trang 62TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 64TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Toán tử luận lý điều kiện
• Toán tử luận lý điều kiện
Trang 65Các toán tử
• Toán tử luận lý điều kiện
−Bảng chân trị:
Trang 66TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Toán tử luận lý điều kiện
• Toán tử luận lý điều kiện
−Ví dụ:
Trang 67Các toán tử
• Toán tử logic
Logical NOT ~a Phép đảo giá trị bit
Logical AND a & b Trả về 1 nếu cả hai bit đều là 1, ngược
lại trả về 0 Logical OR a | b Trả về 0 nếu cả hai bit đều là 0, ngược
lại trả về 1 Logical XOR a ^ b Trả về 1 nếu và chỉ nếu một trong hai
Logical XOR a b Trả về 1 nếu và chỉ nếu một trong hai
bit là 1, ngược lại trả về 0
Trang 68TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Trang 69Các toán tử
• Toán tử ghép phép gán logic
Logic ghép AND b &= a b = (Type) (b & (a)) Logic ghép OR g g p b |= a | b = (Type) (b | (a)) ( yp ) ( | ( )) Logic ghép XOR b ˆ= a b = (Type) (b ˆ (a))
Trang 70TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Toán tử so sánh
• Toán tử so sánh
Trang 71Các toán tử
• Toán tử dịch chuyển bit
Chuyển dịch trái
(Shift left) a << n
Chuyển dịch tất cả các bit về bên trái n lần, phủ đầy 0 các bit phải tương ứng với bit chuyển dịch
với bit chuyển dịch
Chuyển dịch phải
(Shift right) a >> n
Chuyển dịch tất cả các bit về bên phải n lần, phủ đầy 0 các bit trái tương ứng với bit chuyển dịch
Trang 72TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Toán tử ghép phép gán dịch chuyển bit
Chuyển dịch trái a <<= n b = (Type) (b << (a))
Chuyển dịch phải a >>= n b = (Type) (b >> (a))
Trang 73Các toán tử
• Toán tử dịch chuyển bit
−Ví dụ:
−Kết quả hiển thị ra màn hình:q ị
Trang 74TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Toán tử tiền tố (Prefix) và hậu tố (Postfix)
− Các toán tử tăng (++) và giảm ( ) được sử dụng để làm tiền tố và hậu tố Trong trường hợp tiền tố các toán tử tăng hoặc giảm được
hậu tố Trong trường hợp tiền tố, các toán tử tăng hoặc giảm được đặt trước biến kiểu dữ liệu đơn giản
− Ví dụ:
++a Ù a = a + 1 a Ù a = a – 1 int b = 6;
Trang 75Các toán tử
• Toán tử tiền tố (Prefix) và hậu tố (Postfix)
−Ví dụ:
−
Trang 76TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các toán tử
• Kiểm tra kiểu dữ liệu
−Trong C# để kiểm tra kiểu sử dụng toán tử: is và as
−Cú pháp:
Kết_quả_kiểm = Biểu_thức is Kiểu
−Nếu Kết_quả_kiểm là true Æ Biểu_thức có thể chuyển
đổi thành công tới Kiểu với việc ép kiểu tường minh
hoặc boxing/unboxing ngầm định Nếu Biểu thức là null hoặc boxing/unboxing ngầm định Nếu Biểu_thức là null