I E= T*R
CÁC LỆNH ĐỊNH NGHĨA & KHAI BÁO 6.1 Tổng quát về code của 1 ứng dụng VB
6.5 Lệnh định nghĩa hằng gợi nhớ, định nghĩa biến, định nghĩa kiểu người dùng.
q 1 module VB (form, class, standard) gồm 2 loại phần tử : thuộc tính dữ liệu và các method (thủ tục). Các lệnh định nghĩa cho phép ta định nghĩa tính chất của các thuộc tính dữ liệu, các lệnh thực thi cho phép ta miêu tả giải thuật thi hành của các method (thủ tục).
q 2 lệnh định nghĩa dữ liệu chủ yếu là lệnh định nghĩa biến và lệnh định nghĩa hằng, trong 2 lệnh này có sử dụng tên kiểu dữ liệu. Tên kiểu dữ liệu có thể là định sẵn, có thể do người lập trình tự đặt. Lệnh định nghĩa kiểu sẽ phục vụ việc định nghĩa kiểu mới của người lập trình.
q Để VB kiểm tra việc định nghĩa biến bắt buộc trong 1 module nào đó, ta dùng lệnh sau ở đầu module đó.
Option Explicit
Lệnh định nghĩa hằng gợi nhớ.
q Cú pháp định nghĩa hằng gợi nhớ cơ bản : ConstAConst =Value
Lưu ý ta dùng chữ nghiêng để miêu tả phần tử mà người lập trình tự xác định theo yêu cầu riêng (dĩ nhiên phải thỏa mãn qui tắc VB), chữ đậm miêu tả phần tử bắt buộc và người lập trình phải viết y như vậy trong lệnh của họ.
Lệnh định nghĩa biến
q Cú pháp cơ bản của định nghĩa biến cục bộ trong function, Sub, Property :
http://www.foxitsoftware.com For evaluation only.
DimAVariable [As Type] StaticAVariable [As Type]
q Cú pháp cơ bản của định nghĩa biến cục bộ trong module (class, form, standard) : Private AVariable [As Type]
StaticAVariable [As Type]
q Cú pháp cơ bản của định nghĩa biến toàn cục : Public AVariable [As Type]
q Lưu ý hạn chế tối đa việc dùng biến toàn cục (trong OOP ta không cần dùng biến toàn cục). q Có thể dùng tiếp vĩ ngữ qui định kiểu (trong chương 5) thay thế cho tên kiểu. Nếu tên biến
không có tiếp vĩ ngữ và không có phần tên kiểu trong lệnh định nghĩa biến thì biến thuộc kiểu Variant. Cho phép nhiều phát biểu định nghĩa biến trên 1 hàng lệnh (dùng dấu ',' để ngăn cách chúng).
q Nên đặt tên biến theo ký hiệu Hungarian và luôn miêu tả tên kiểu kết hợp với biến trong lệnh định nghĩa biến, nhờ vậy chương trình sẽ rất trong sáng, dễ hiểu và dễ phát triển. Ví dụ :
Thay vì dùng lệnh sau : Private DispValue#
để định nghĩa biến thực chính xác kép tên là "DispValue", ta nên dùng lệnh định nghĩa sau :
Private dblDispValue As Double
Lệnh định nghĩa kiểu của người lập trình
q Nếu trong 1 module nào đó cần dữ liệu có cấu trúc đặc thù mà VB chưa cung cấp, người lập trình sẽ dùng phát biểu TYPE để định nghĩa kiểu này. Phát biểu này kết hợp tên kiểu (tự đặt) với 1 cấu trúc dữ liệu gồm nhiều field dữ liệu (do dó ta thường gọi kiểu này là kiểu record hay structure). Cú pháp như sau :
TypeTypeName
[AfieldNameAs Type]+
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
End Type
Ví dụ :
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
Lệnh định nghĩa kiểu Array
q Nếu trong 1 module nào đó cần danh sách gồm nhiều dữ liệu có cấu trúc đồng nhất, ta sẽ dùng phát biểu định nghĩa kiểu array để miêu tả danh sách này. Cú pháp cơ bản như sau :
Dimvarname[([subscripts])] [As [New] type]
trong đó subscripts là danh sách từ 1 đến n chiều cách nhau bằng dấu ',', mỗi chiều miêu tả phạm vi chỉ số các phần tử thuộc chiều đó ở dạng :
[lower To] upper.
§ Nếu chỉ số cận dưới của 1 chiều nào đó không được miêu tả thì VB chọn giá trị ngầm định (là 0 hay 1).
§ Phát biểu định nghĩa giá trị cận dưới ngầm định có cú pháp :
Option Base {0|1}
Lưu ý dấu {..} miêu tả có 1 và chỉ 1 lần. Nếu không có phát biểu này thì VB chọn cận dưới là 0.
Ví dụ :
Dim vector(50) As Double 'vector có 51 phần từ từ 0 - 51
http://www.foxitsoftware.com For evaluation only.
Dim MyArray (1 to 100, 1 to 50) As Double
Nếu số lượng phần tử của danh sách chưa biết tại thời điểm viết chương trình và chỉ biết tại thời điểm chạy, ta dùng 1 trong 2 cách sau :
q khai báo số lượng tĩnh tại thời điểm viết, cách này thường phí phạm bộ nhớ hay khai báo thiếu số lượng phần tử.
§ Thí dụ để giải hệ n phương trình tuyến tính, n ẩn số, ta có thể khai báo tĩnh ma trận thông số như sau :
Option Base 1
Dim matran(100,100) As Double
§ nhưng nếu đại đa số lần dùng ứng dụng này, ta chỉ giải các hệ phương trình có 2, 3,... ẩn số thì sẽ rất phí phạm bộ nhớ. Còn 1 lần chạy nào đó, nếu ta cần giải hệ 200 phương trình thì chương trình sẽ chạy sai.
q khai báo số lượng động tại thời điểm chạy. Cú pháp như sau :
Dimvarname() [As [New] type]
Ví dụ : Dim matran() As Double 'để trống số lượng ...
n = Val(txtInput.Text)
ReDim matran(n,n) 'phân phối phần tử cho ma trận
Lệnh định nghĩa thủ tục (subroutine) và hàm (function)
Được trình bày riêng trong chương 9.