Bài giảng môn Tin học đại cương - Chương 5: Các kiểu dữ liệu trong VB
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:
- bai_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
- 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
- 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
- Đị 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
- Đị 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.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
- 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
- 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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- Đặ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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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