Bài giảng môn Tin học đại cương - Chương 5: Các kiểu dữ liệu trong VB

pdf 28 trang phuongnguyen 7630
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học đại cương - Chương 5: Các kiểu dữ liệu trong VB", để 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:

  • pdfbai_giang_mon_tin_hoc_dai_cuong_chuong_5_cac_kieu_du_lieu_tr.pdf

Nội dung text: Bài giảng môn Tin học đại cương - Chương 5: Các kiểu dữ liệu trong VB

  1. MÔN TIN HỌC Ch ươ ng 5 CÁC KI ỂU DỮ LI ỆU TRONG VB 5.1 Biến d ữ li ệu & đị nh ngh ĩa bi ến 5.2 Các kiểu d ữ li ệu đị nh s ẵn c ủa VB 6.0. 5.3 Vi ệc dùng & t ạo class đố i t ượ ng 5.4 Các tính ch ất chính y ếu c ủa bi ến d ữ li ệu 5.5 Hằng g ợi nh ớ Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 129
  2. 5.1 Bi ến dữ li ệu  Mỗi ứng d ụng th ườ ng x ử lý nhi ều d ữ li ệu, ta dùng khái ni ệm "bi ến" để lưu tr ữ d ữ li ệu trong b ộ nh ớ máy tính, mỗi bi ến l ưu tr ữ 1 d ữ li ệu c ủa ch ươ ng trình.  Mặc dù VB không đòi h ỏi, nh ưng ta nên đị nh ngh ĩa rõ ràng t ừng bi ến tr ướ c khi truy xu ất nó để code c ủa ch ươ ng trình đượ c trong sáng, d ễ hi ểu, d ễ b ảo trì và phát tri ển.  Đị nh ngh ĩa 1 bi ến là:  Đị nh ngh ĩa tên nh ận d ạng cho bi ến,  Kết h ợp ki ểu v ới bi ến để xác đị nh c ấu trúc d ữ li ệu c ủa bi ến,  Đị nh ngh ĩa t ầm v ực truy xu ất bi ến.  Cú pháp đơ n gi ản c ủa l ệnh đị nh ngh ĩa bi ến: [Static|Public|Private|Dim] AVariable As Type  tại t ừng th ời điểm, bi ến ch ứa 1 giá tr ị (n ội dung) c ụ th ể. Theo th ời gian nội dung c ủa bi ến s ẽ b ị thay đổ i theo tính ch ất x ử lý c ủa code. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 130
  3. Đị nh nghĩa tên bi ến  Cách đặ t tên cho 1 bi ến (hay cho b ất k ỳ ph ần t ử trong ch ươ ng trình):  Tên bi ến có th ể dài đế n 255 ký t ự,  Ký t ự đầ u tiên ph ải là một ký t ự ch ữ (letter),  Các ký t ự ti ếp theo có th ể là các ký t ự ch ữ (letter), ký s ố (digit), d ấu gạch d ướ i,  Tên bi ến không đượ c ch ứa các ký t ự đặ c bi ệt nh ư các ký t ự: ^, &, ), (,%, $, #, @, !, ~, +, -, *,  VB không phân bi ệt ch ữ HOA hay ch ữ th ườ ng trong tên bi ến. Ví d ụ: Tên bi ến h ợp l ệ Tên bi ến không h ợp l ệ + Base1_ball + Base.1: vì có d ấu ch ấm + ThisIsLongButOk + Base&1: vì có d ấu & + 1Base_Ball: ký t ự đầ u là 1 s ố  Nên ch ọn tên bi ến ng ắn g ọn nh ưng th ể hi ện rõ ý ngh ĩa. Ví d ụ: Ta mu ốn có một bi ến để l ưu h ệ s ố lãi su ất ngân hàng (Interest Rate), ta nên dùng tên bi ến là: InterestRate ho ặc Irate ch ứ không nên dùng tên bi ến là IR Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 131
  4. Đị nh nghĩa tên bi ến (tt)  Với ví d ụ ở tr ướ c, dòng l ệnh sau đây: IterestRateEarned = Total*InterestRate sẽ d ễ hi ểu h ơn dòng l ệnh IE = T*IR  Khi vi ết tên bi ến ta nên vi ết hoa ch ữ đầ u tiên c ủa một t ừ có ý ngh ĩa. Ví d ụ: InterestRate s ẽ d ễ đọ c h ơn interestrate hay iNTERestRaTe  Không đượ c dùng tên bi ến trùng v ới các t ừ khoá nh ư: Print, Sub, End (t ừ khóa là nh ững t ừ mà ngôn ng ữ VB đã dùng cho nh ững thành ph ần xác đị nh c ủa ngôn ng ữ) Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 132
  5. 5.2 Các ki ểu dữ li ệu cơ bản đị nh sẵn của VB Byte: 1 byte, 0 to 255 Boolean: 2 bytes, True or False Integer: 2 bytes, -32,768 to 32,767 Long (long integer): 4 bytes -2,147,483,648 to 2,147,483,647 Single (single-precision floating-point):4 bytes -3.402823E38 to -1.401298E-45 ;1.401298E-45 to 3.402823E38 Double (double-precision floating-point): 8 bytes -1.79769313486231E308 to -4.94065645841247E-324; 4.94065645841247E-324 to 1.79769313486232E308 Currency (scaled integer): 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 133
  6. Các ki ểu dữ li ệu cơ bản đị nh sẵn của VB (tt) Decimal : 14 bytes +/-79,228,162,514,264,337,593,543,950,335 (không có d ấu ch ấm th ập phân) +/-7.9228162514264337593543950335 (có 28 ký s ố bên ph ải d ấu ch ấm) +/-0.0000000000000000000000000001 là s ố khác 0 nh ỏ nh ất. Date : 8 bytes; t ừ January 1, 100 tới December 31, 9999 Object: 4 bytes; ch ứa tham kh ảo đế n b ất k ỳ đố i t ượ ng nào String (variable-length): 10 bytes + độ dài c ủa chu ỗi 0 t ới 2G ký t ự String*n (fixed-length): chu ỗi có độ dài c ố đị nh 1 t ới 65,400 ký t ự Variant (with numbers) : 16 bytes Bất k ỳ s ố nào n ằm trong ph ạm vi ki ểu Double Variant (with characters): 22 bytes + độ dài chu ỗi cùng độ dài nh ư ki ểu String User-defined (using Type): ki ểu do ng ườ i dùng đị nh ngh ĩa (record) gồm nhi ều field, mỗi field có ki ểu riêng theo yêu c ầu. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 134
  7. Các ki ểu dữ li ệu cơ bản đị nh sẵn của VB (tt) Array : dãy nhi ều ph ần t ử có c ấu trúc d ữ li ệu đồ ng nh ất, mỗi ph ần t ử đượ c truy xu ất độ c l ập nh ờ ch ỉ s ố c ủa nó trong dãy. Ví d ụ: Dim vector(10) As Integer đị nh ngh ĩa bi ến vector là 1 dãy g ồm 10 ph ần t ử nguyên, vector(i) là tên nh ận dạng c ủa ph ần t ử th ứ i c ủa dãy này. Ngoài các ki ểu d ữ li ệu đị nh s ẵn, VB còn cung c ấp cho ng ườ i l ập trình 1 ph ươ ng ti ện để h ọ có th ể đị nh ngh ĩa b ất k ỳ ki ểu d ữ li ệu ch ưa cung c ấp s ẵn nh ưng l ại c ần thi ết cho ứng d ụng c ủa h ọ, ta g ọi các ki ểu này là ki ểu do ng ườ i dùng đị nh ngh ĩa. Thí d ụ sau đây là phát bi ểu đị nh ngh ĩa ki ểu miêu t ả các thông tin chính v ề máy tính cá nhân: Type SystemInfo CPU As Variant Memory As Long DiskDrives(25) As String ' Fixed-size array. VideoColors As Integer Cost As Currency PurchaseDate As Variant End Type Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 135
  8. Đặc tính chi ti ết về ki ểu String Ki ểu String (chu ỗi ký t ự):  String là ki ểu d ữ li ệu đượ c dùng để l ưu tr ữ chu ỗi các ký t ự ( độ dài b ất kỳ)  Giá tr ị chu ỗi ký t ự đượ c đặ t trong c ặp d ấu nháy kép (vd: "Môn Tin học")  Trên lý thuy ết, một bi ến thu ộc ki ểu String có th ể l ưu tr ữ đượ c đế n 2 t ỷ ký t ự nh ưng trong th ực t ế, độ dài c ủa chu ỗi b ị h ạn ch ế theo dung lượ ng b ộ nh ớ c ủa máy tính.  Có th ể th ực hi ện đượ c các phép toán n ối k ết chu ỗi (+,&) trên các chu ỗi ký t ự và có khá nhi ều hàm x ử lý chu ỗi có s ẵn.  Có th ể đị nh ngh ĩa một bi ến thu ộc ki ểu String nh ư sau: Dim AStringVariable As String Dim AStringVariable As String*100 Hay Dim AStringVariable$ Ti ếp v ĩ ng ữ $ đi sau tên bi ến dùng để khai báo một bi ến thu ộc ki ểu String (nh ưng ta không nên dùng cách này vì t ối ngh ĩa, khó b ảo trì). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 136
  9. Đặc tính chi ti ết về ki ểu Integer Ki ểu Integer (S ố nguyên):  Integer là ki ểu d ữ li ệu đượ c dùng để l ưu tr ữ các s ố nguyên ng ắn nằm trong kho ảng t ừ - 32768 đế n 32767.  Số nguyên đượ c l ưu tr ữ trong b ộ nh ớ b ằng 2 byte.  Có th ể th ực hi ện đượ c các phép toán s ố h ọc (nh ư +,-,*,/, ) trên các dữ li ệu thu ộc ki ểu Integer.  Khai báo một bi ến thu ộc ki ểu Integer nh ư sau: Dim AnIntegerVariable As Integer Hay Dim AnIntegerVariable% Ti ếp v ĩ ng ữ % đi sau tên bi ến đượ c dùng để khai báo một bi ến thu ộc ki ểu Integer. Vd: Dim Age As Integer Age = 24 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 137
  10. Đặc tính chi ti ết về ki ểu Long Ki ểu Long (S ố nguyên dài):  Dùng để l ưu tr ữ các s ố nguyên l ớn n ằm trong kho ảng t ừ: -2,147,483,648 đế n 2,147,483,647  Số nguyên dài đượ c l ưu tr ữ trong b ộ nh ớ b ằng 4 byte.  Có th ể th ực hi ện đượ c các phép toán s ố h ọc (nh ư +,-,*,/, ) trên các dữ li ệu thu ộc ki ểu Long.  Khai báo một bi ến thu ộc ki ểu Long nh ư sau: Dim ALongIntegerVariable As Long Hay Dim AnIntegerVariable& Ti ếp v ĩ ng ữ & đi sau tên bi ến đượ c dùng để khai báo một bi ến thu ộc ki ểu Long. Vd: Dim EarthAge As Long EarthAge = 3276979 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 138
  11. Đặc tính chi ti ết về ki ểu Byte Ki ểu Byte (S ố nguyên d ươ ng nh ỏ):  Dùng để l ưu tr ữ các s ố nguyên không âm n ằm trong t ầm tr ị t ừ: 0 đế n 255  Chi ếm 1 byte trong b ộ nh ớ.  Có th ể th ực hi ện đượ c các phép toán s ố h ọc (nh ư +,-,*,/, ) trên các d ữ li ệu thu ộc ki ểu Byte.  Ki ểu d ữ li ệu này r ất hi ệu d ụng trong vi ệc l ưu tr ữ các s ố nguyên nh ỏ vì nó chi ếm ít b ộ nh ớ, t ốc độ x ử lý nhanh. Ví d ụ: Khi c ần l ưu tu ổi c ủa một ng ườ i chúng ta không nên dùng ki ểu Integer hay Long mà nên dùng ki ểu Byte vì tu ổi c ủa một ng ườ i luôn là một s ố không âm, có giá tr ị t ối đa th ườ ng nh ỏ hơn 120. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 139
  12. Đặc tính chi ti ết về ki ểu Boolean Ki ểu Byte (tt):  Khai báo cho một bi ến thu ộc ki ểu Byte nh ư sau: Dim AByteVariable As Byte 'không có ti ếp v ĩ ng ữ Ví d ụ: Dim Age As Byte Age = 100 Ki ểu Boolean (giá tr ị lu ận lý):  Là ki ểu d ữ li ệu l ưu tr ữ hai giá tr ị lu ận lý True/False.  Đượ c l ưu tr ữ trong máy tính b ằng 2 byte.  Khai báo Dim ABooleanVariable As Boolean Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 140
  13. Đặc tính chi ti ết về ki ểu Single Ki ểu Single (s ố th ực có độ chính xác đơ n - Single Precision):  Lưu tr ữ các s ố th ực có độ chính xác đơ n (g ần đúng v ới giá tr ị g ốc v ới độ chính xác ở mức 7 ch ữ s ố) Ví d ụ s ố 1234.567 thì ký s ố 7 (bên ph ải nh ất) có th ể không chính xác.  Ki ểu d ữ li ệu này chi ếm 4 byte trong b ộ nh ớ và miêu t ả các giá tr ị trong ph ạm vi: Từ -3.402823E38 đế n -1.401298E-45 cho các giá tr ị âm và t ừ 1.401298E-45 đế n 3.402823E38 cho các giá tr ị d ươ ng  Có th ể th ực hi ện các phép toán s ố h ọc trên ki ểu d ữ li ệu này nh ưng th ườ ng ch ậm h ơn so v ớI các bi ến thu ộc ki ểu Integer hay Long. Do cách ch ứa s ố Single ch ỉ ở mức g ần đúng nên các phép toán trên các d ữ li ệu thu ộc ki ểu này s ẽ t ạo kết qu ả g ần đúng (nh ưng đủ dùng trong đạ i đa s ố yêu c ầu th ực t ế).  Khai báo nh ư sau: Dim ASingleVariable As Single Hay Dim ASingleVariable! 'Ti ếp v ĩ ng ữ là d ấu ! Ví d ụ: Dim InterestRate As Single, Earned!, Total As Single Earned = InterestRate * Total Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 141
  14. Đặc tính chi ti ết về ki ểu Double Ki ểu Double (s ố th ực có độ chính xác kép - Double Precision):  Lưu tr ữ các s ố th ực có độ chính xác kép (g ần đúng v ới giá tr ị g ốc v ới độ chính xác ở mức 16 ch ữ s ố). Ví d ụ s ố 1234.57890123456 thì ký s ố bên ph ải nh ất (6) có th ể không chính xác.  Ki ểu d ữ li ệu này chi ếm 8 byte trong b ộ nh ớ và miêu t ả các giá tr ị trong ph ạm vi: -1.797693234862232E308 đế n -4.94065645841247E-324 và 4.94065645841247E-324 đế n 1.797693234862232E308  Có th ể th ực hi ện các phép toán s ố h ọc trên ki ểu d ữ li ệu này nh ưng r ất ch ậm (ch ậm h ơn c ả ki ểu Single). Do cách ch ứa s ố Double ch ỉ ở mức g ần đúng nên các phép toán trên các d ữ li ệu thu ộc ki ểu này s ẽ t ạo k ết qu ả g ần đúng (nh ưng quá đủ dùng trong đạ i đa s ố yêu c ầu th ực t ế).  Khai báo nh ư sau: Dim ADoubleVariable As Double Hay Dim ADoubleVariable# ‘ Ti ếp v ĩ ng ữ là d ấu # Ví d ụ: Dim InterestRate As Double, Earned#, Total As Double Earned = InterestRate * Total Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 142
  15. Đặc tính chi ti ết về ki ểu Currency Ki ểu Currency (Ti ền T ệ)  Ki ểu Currency đượ c dùng để l ưu các d ữ li ệu thu ộc ki ểu ti ền t ệ (s ố lượ ng ti ền).  Đượ c l ưu tr ữ trong b ộ nh ớ b ằng 8 byte.  Có th ể có 4 ch ữ s ố ở bên ph ải d ấu ch ấm th ập phân và 15 ch ữ s ố ở bên trái d ấu th ập phân.  Có t ầm tr ị: - 922337203685477.5808 đế n 922337203685477.5807  Có th ể th ực hi ện đượ c các phép toán s ố h ọc trên ki ểu d ữ li ệu này nh ưng t ốc độ x ử lý r ất ch ậm nh ư đố i v ới các s ố th ực có độ chính xác kép, song nó là ki ểu d ữ li ệu ưa dùng cho các phép tính tài chính.  Khai báo: Dim ACurrencyVariable As Currency Hay Dim ACurrencyVariable@ 'Ti ếp v ĩ ng ữ là d ấu @ Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 143
  16. Đặc tính chi ti ết về ki ểu Date Ki ểu Date (Ngày tháng)  Dùng để l ưu tr ữ các d ữ li ệu thu ộc ki ểu ngày gi ờ cho b ất k ỳ th ời điểm nào t ừ 0h00 ngày 01/01/100 đế n 0h00 ngày 31/12/9999.  Ki ểu Date đượ c l ưu tr ữ trong máy tính b ằng 8 bytes.  Dữ li ệu thu ộc ki ểu Date ph ải đượ c bao b ởi c ặp d ấu # ở hai đầ u. Ví d ụ: Millenium = #January 1, 2000# Millenium = #Jan 1, 2000# Millenium = #1/1/ 2000#  Nếu ta ch ưa gán tr ị cho bi ến thu ộc ki ểu Date thì VB mặc nh ận đó là lúc 0:0:0 cùng ngày.  Có th ể dùng d ạng th ức AM/PM hay d ạng 24 gi ờ để bi ểu di ễn cho giá tr ị gi ờ Ví d ụ: PreMillenium = #December 31, 1999 11:59:59PM# hay PreMillenium = #December 31, 1999 23:59:59#  Khai báo một bi ến thu ộc ki ểu Date nh ư sau: Dim ADateVariable As Date ‘Không có ti ếp v ĩ ng ữ Ví d ụ: Dim PreMillenium As Date Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 144
  17. Đặc tính chi ti ết về ki ểu Variant Ki ểu Variant (Ki ểu d ữ li ệu bi ến đổ i)  Ki ểu d ữ li ệu này đượ c thi ết k ế để l ưu mọi d ữ li ệu thu ộc ki ểu đị nh s ẵn c ủa VB. Ví d ụ nh ư: Date, String, Double, Integer  Nếu không khai báo ki ểu rõ ràng cho 1 bi ến thì bi ến này s ẽ đượ c hi ểu là thu ộc ki ểu này.  VB s ẽ chuy ển đổ i d ữ li ệu thu ộc ki ểu Variant thành một ki ểu d ữ li ệu khác cho phù h ợp (khi gán d ữ li ệu, ). Ví d ụ: String ← Variant,Integer ← Variant,Date ← Variant  Tuy nhiên vi ệc chuy ển đổ i ki ểu nh ư trên s ẽ d ẫn đế n nhi ều l ỗi không l ườ ng tr ướ c đượ c.  Dùng ki ểu Variant thay cho một ki ểu c ụ th ể s ẽ làm ch ậm t ốc độ x ử lý c ủa ch ươ ng trình do ph ải t ốn th ờI gian chuy ển đổ i và t ốn nhi ều b ộ nh ớ h ơn.  Khai báo một bi ến thu ộc ki ểu Variant nh ư sau: Dim AVariantVariable As Variant Hay Dim AVariantVariable 'Mặc nhiên thu ộc ki ểu Variant Ví d ụ: Dim x, y, z As Integer 'x,y là ki ểu Variant Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 145
  18. 5.3 Vi ệc dùng các class đối t ượng có sẵn  Nh ư chúng ta đã trình bày trong ch ươ ng 3, VB h ỗ tr ợ vi ệc l ập trình OOP ở 1 mức độ nh ất đị nh: o VB cung c ấp 1 s ố class đố i t ượ ng, ng ườ i l ập trình có th ể dùng chúng ở b ất kỳ project ứng d ụng nào, ta có th ể nói r ằng tên c ủa các class đị nh s ẳn này cũng là ki ểu đị nh s ẵn c ủa VB. o VB cho phép dùng các class đố i t ượ ng đượ c ng ườ i khác vi ết thông qua công ngh ệ COM, ActiveX Control (s ẽ trình bày trong ch ươ ng 12). o VB cho ng ườ i l ập trình đị nh ngh ĩa các class mới ngay trong project ph ần mềm của h ọ nh ờ khái ni ệm "class module" (s ẽ đượ c trình bày chi ti ết trong ch ươ ng 6). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 146
  19. Vi ệc dùng các class đối t ượng có sẵn (tt)  Dù ở d ạng nào, mỗi class đề u có tên nh ận d ạng, tên này chính là tên ki ểu và đượ c dùng trong phát bi ểu đị nh ngh ĩa bi ến đố i t ượ ng: Dim pclipbd As Clipboard Set pclipbd = New Clipboard  Lưu ý r ằng bi ến thu ộc ki ểu class không ch ứa tr ực ti ếp đố i t ượ ng, nó ch ỉ là tham kh ảo (ph ươ ng ti ện truy xu ất) đế n đố i t ượ ng. Do đó tr ướ c khi dùng bi ến đố i t ượ ng, nh ất thi ết ph ải t ạo đố i t ượ ng (th ườ ng thông qua hàm New) để nh ận tham kh ảo đế n đố i t ượ ng rồi gán tham kh ảo này vào bi ến nh ư thí d ụ trên. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 147
  20. Qui trình t ạo 1 class mới để dùng trong project  Ấn chu ột ph ải trong c ửa s ổ Project, d ời chu ột t ới mục "Add" r ồi ch ọn mục "Class Module" trong danh sách.  Khi c ửa s ổ "Add class module" hi ển th ị, ch ọn icon "Class module" r ồi ấn "Open" để t ạo ra class mới.  thi ết l ập tên class module cho phù h ợp (trong c ửa s ổ thu ộc tính), tên này chính là tên ki ểu đượ c dùng trong phát bi ểu đị nh ngh ĩa bi ến đố i t ượ ng.  ấn kép chu ột vào mục tên class mới t ạo ra để hi ển th ị c ửa s ổ code đặ c t ả cho class đó. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 148
  21. Cửa s ổ đặ c t ả class  Đị nh ngh ĩa t ừng thu ộc tính d ữ li ệu và t ừng method c ủa class theo cú pháp VB (s ẽ đượ c trình bày sau).  Debug t ừng method c ủa class xem nó ho ạt độ ng đúng ch ức n ăng mong mu ốn tr ướ c khi dùng (s ẽ trình bày ho ạt độ ng debug sau).  Mỗi class có 2 method đặ c bi ệt: o Private Sub Class_Initialize(): miêu t ả các hành độ ng khi đố i t ượ ng vừa đượ c t ạo ra. o Private Sub Class_Terminate(): miêu t ả các hành độ ng khi đố i t ượ ng sắp s ửa b ị xóa. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 149
  22. 5.4 Đặt tên bi ến theo cách "ký hi ệu Hungarian" Ký hi ệu Hungarian  Một s ố l ập trình viên th ườ ng thích b ổ sung thêm một ti ếp đầ u ng ữ vào tên bi ến để nêu rõ ki ểu c ủa bi ến, nh ờ đó t ăng độ d ễ đọ c cho ch ươ ng trình. Ví d ụ: sngInterestRate: Bi ến có độ chính xác đơ n (Single) intCount: Bi ến thu ộc ki ểu Integer strName: Bi ến thu ộc ki ểu String  Qui ướ c trên g ọi là ký hi ệu Hungarian (do Charles Simonge, một l ập trình viên g ốc Hungari c ủa Miscrosoft) đề x ướ ng. L ưu ý r ằng b ạn v ẫn ph ải khai báo ki ểu cho các bi ến trên và ki ểu ph ải t ươ ng thích v ới ti ếp đầ u ng ữ đã dùng v ới tên bi ến.  Một s ố ki ểu và ti ếp đầ u ng ữ t ươ ng ứng: String str Integer int Single sng Currency cur Boolean bln Long lng Double dbl Variant vnt Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 150
  23. Các l ưu ý về bi ến  Trong một ng ữ c ảnh (trong 1 ch ươ ng trình con, trong 1 module, c ấp toàn c ục), không th ể dùng hai bi ến cùng tên (VB không phân bi ệt ch ữ HOA hay ch ữ th ườ ng).  Tên bi ến là ph ần tên, không k ể đế n ti ếp v ĩ ng ữ miêu t ả ki ểu k ết h ợp. Ví d ụ: Bi ến a% và bi ến a! là trùng nhau, VB s ẽ đư a ra thông báo l ỗi: “Duplicate Definition”  Sau khi đị nh ngh ĩa bi ến, VB s ẽ kh ởi độ ng tr ị ban đầ u cho bi ến đó. Ví d ụ: o Bi ến thu ộc ki ểu Variant có giá tr ị ng ầm đị nh là “Empty” (r ỗng), giá tr ị “Empty” sẽ bi ến mất khi ta gán cho bi ến một giá tr ị c ụ th ể. o Bi ến chu ỗi có giá tr ị ng ầm đị nh là chu ỗI r ỗng "" (hai d ấu nháy li ền nhau). o Bi ến s ố có giá tr ị ng ầm đị nh là 0.  Không nên tin vào tr ị ng ầm đị nh c ủa bi ến, ph ải gán giá tr ị cho bi ến tr ướ c khi dùng chúng.  1 bi ến t ươ ng ứng v ới 1 vùng nh ớ, do đó khi gán một giá tr ị cho bi ến, giá tr ị c ũ của bi ến s ẽ b ị mất đi. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 151
  24. Tầm vực truy xuất bi ến  Tầm v ực c ủa một bi ến là t ập các l ệnh đượ c phép truy xu ất bi ến đó.  Nh ư đượ c miêu t ả trong silde 7 (ch ươ ng 1), VB cho phép 3 c ấp độ t ầm v ực sau: o Cục b ộ trong th ủ t ục: b ất k ỳ l ệnh nào trong th ủ t ục đề u có th ể truy xu ất đượ c bi ến c ục b ộ trong th ủ t ục đó. Private Sub Command1_Click() Dim strGreeting As String 'Khai báo c ục b ộ End Sub o Cục b ộ trong module : b ất k ỳ l ệnh nào trong module đề u có th ể truy xu ất đượ c bi ến c ục b ộ trong module đó. Private strAddr As String 'bi ến c ục b ộ trong module Public strName As String 'bi ến toàn c ục o Toàn c ục: b ất k ỳ l ệnh nào trong ch ươ ng trình c ũng có th ể truy xu ất đượ c bi ến toàn c ục.  Trong một ng ữ c ảnh (cùng 1 th ủ t ục, cùng 1 module, hay c ấp toàn c ục), không th ể dùng hai bi ến cùng tên (VB không phân bi ệt ch ữ HOA hay ch ữ th ườ ng).Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 152
  25. Thời gian sống của bi ến  Bi ến là 1 th ực th ể nên c ũng có th ời gian s ống h ữu h ạn, th ời gian s ống của bi ến th ườ ng ph ụ thu ộc vào t ầm v ực c ủa bi ến đó: o Bi ến c ục b ộ trong th ủ t ục: đượ c t ạo ra lúc th ủ t ục đượ c g ọi và mất đi khi th ủ t ục k ết thúc vi ệc x ử lý và điều khi ển đượ c tr ả v ề l ệnh g ọi. o Bi ến c ục b ộ trong module : đượ c t ạo ra lúc module đượ c t ạo ra và mất đi khi module b ị xóa. • Các (standard) modules có th ời gian s ống t ừ lúc ch ươ ng trình ch ạy cho đế n khi ch ươ ng trình k ết thúc. • Các đố i t ượ ng c ủa class module hay form module đượ c t ạo ra khi có yêu c ầu c ụ th ể. T ạo đố i t ượ ng ngh ĩa là t ạo các thu ộc tính c ủa nó, các thu ộc tính c ủa đố i t ượ ng s ẽ mất đi khi đố i t ượ ng b ị xóa. o Bi ến toàn c ục: đượ c t ạo ra lúc ch ươ ng trình b ắt đầ u ch ạy và ch ỉ mất đi khi ch ươ ng trình k ết thúc. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 153
  26. Thời gian sống của bi ến (tt)  Mu ốn kéo dài th ời gian s ống c ủa 1 bi ến, ta th ườ ng dùng 2 cách sau: o Nâng c ấp t ầm v ực: t ừ c ục b ộ trong th ủ t ục lên c ục b ộ trong module hay lên toàn c ục Cách này ít đượ c dùng t ườ ng minh vì nó s ẽ thay đổ i t ầm v ực c ủa bi ến. Để kh ắc ph ục điều này, VB cung c ấp khái ni ệm "Static" k ết h ợp v ới bi ến: bi ến có thu ộc tính "Static" s ẽ t ồn t ại mãi và ch ỉ mất đi khi ch ươ ng trình kết thúc b ất ch ấp t ầm v ực c ủa nó ra sao. Private Sub Command1_Click() Dim strGreeting As String 'bi ến c ục b ộ Static strAddr As String 'bi ến c ục b ộ có th ời gian s ống lâu dài theo ứng d ụng. End Sub o Ghi giá tr ị bi ến ra môi tr ườ ng ch ứa tin b ền v ững (file trên đĩ a) tr ướ c khi bi ến b ị xóa. Khi c ần l ại giá tr ị c ủa bi ến này, ta đọ c giá tr ị c ủa nó t ừ file vào. Đây là ph ươ ng pháp thông d ụng để trao đổ i d ữ li ệu gi ữa 2 ứng d ụng khác nhau hay gi ữa 2 l ần ch ạy khác nhau c ủa cùng 1 ứng d ụng. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 154
  27. 5.5 Hằng gợi nhớ  Nh ư ta đã bi ết, ta đị nh ngh ĩa bi ến để l ưu tr ữ d ữ li ệu c ủa ch ươ ng trình. Ngay sau khi đượ c đị nh ngh ĩa, giá tr ị ban đầ u c ủa bi ến th ườ ng ch ưa đượ c xác đị nh t ườ ng minh, do đó ta ph ải thi ết l ập (gán) giá tr ị cho bi ến tr ướ c khi dùng l ại tr ị c ủa bi ến.  Có 3 cách khác nhau để thi ết l ập (gán) giá tr ị cho 1 bi ến:  Từ t ươ ng tác v ới ng ườ i dùng, bi ến k ết h ợp v ới đố i t ượ ng giao di ện tươ ng ứng s ẽ đượ c gán giá tr ị mà ng ườ i dùng nh ập vào.  Các tham s ố đượ c truy ền khi g ọi th ủ t ục, khi hoàn thành code trong th ủ t ục s ẽ gán tr ị vào tham s ố.  Nh ưng cách c ơ b ản và ph ổ bi ến nh ất là dùng phát bi ểu gán v ới cú pháp sau: AVariable = AExpression Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 155
  28. Hằng gợi nhớ  Bi ểu th ức đơ n gi ản nh ất là 1 giá tr ị, giá tr ị này có th ể đượ c dùng nhi ều n ơi trong ch ươ ng trình.  Hằng g ợi nh ớ (Constant) là khái ni ệm cho phép ng ườ i l ập trình kết h ợp 1 tên g ợi nh ớ v ới 1 giá tr ị để khi c ần dùng giá tr ị đó, ta không vi ết l ại chi ti ết c ụ th ể c ủa tr ị mà ch ỉ dùng tên g ợi nh ớ.  Cú pháp c ủa phát bi ểu đị nh ngh ĩa h ằng g ợi nh ớ: Const ConstName = Value Ví d ụ: Const PI = 3.1416  Lợi ích c ủa vi ệc dùng h ằng g ợi nh ớ:  Ch ươ ng trình s ẽ trong sáng, d ễ đọ c h ơn, d ẫn đế n vi ệc b ảo trì, nâng cấp ch ươ ng trình đượ c thu ận ti ện h ơn.  Ti ết ki ệm đượ c b ộ nh ớ so v ới vi ệc dùng bi ến.  Rút ng ắn đượ c các câu l ệnh quá dài Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 5: Các ki ểu d ữ li ệu trong VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 156