‘là 0 và tùy chọn phải khai báo biến tường minh trước ‘khi dùng
Option Base 1 Option Explicit
‘Khai báo một biến mảng toàn cục dùng chung a ‘Khai báo một hằng n dụng ý là số phần tử của mảng ‘Phạm vi truy xuất mặc định của a, n là private
Dim a(100) As Double Const n As Integer = 10
‘Định nghĩa các hàm/thủ tục
‘Thủ tục khởi tạo ngẫu nhiên các giá trị mảng a gồm ‘10 phần tử, các phần tử có giá trị <= 100
Có thể bạn quan tâm!
- Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 1
- Trong Mục Create, Chọn Mục Class Module Để Tạo Mới 1 Module Lớp
- Viết Mã Thử Nghiệm Lớp Doublearray
- Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 5
Xem toàn bộ 114 trang tài liệu này.
Sub InitArray()
Dim i As Integer
‘Khởi tạo bộ sinh số ngẫu nhiên từ 0 đến 1 ‘sử dụng cho hàm rnd sau này
Randomize
For i = 1 To n
a(i) = Rnd * 100
Next End Sub
‘Thủ tục in các giá trị của mảng a ra màn hình hộp thoại, ‘mỗi giá trị xuất hiện trong một lần hộp thoại xuất hiện, ‘click vào nút lệnh OK để hiển thị phần tử kế tiếp
Sub showArray()
Dim i
For i = 1 To n
MsgBox ("a[" & Str(i) & "] = " & Str(a(i))) Next
End Sub
‘Thủ tục xếp các phần tử của mảng a theo thứ tự tăng dần Sub sortArrayASC()
Dim i, j As Integer For i = 1 To n - 1
For j = i + 1 To n
If (a(i) > a(j)) Then Dim tg As Double tg = a(i)
a(i) = a(j) a(j) = tg
End If Next
Next End Sub
‘Hàm trả về giá trị True/False tương ứng khi ‘x thuộc mảng hoặc không
Function containInArray(x As Double) Dim i As Integer
Dim kt As Boolean kt = False
For i = 1 To n
If x = a(i) Then kt = True
Exit For
Next
containInArray = kt End Function
Bạn nên đọc kỹ các chú ý sau đây.
Trong đoạn mã trên:
+ Biến mảng a và hằng n không khai báo phạm vi truy xuất là public hay private, thì mặc định là private. Điều này có nghĩa là, bạn không thể truy xuất đến a hay n từ bên ngoài module commonFunction. Ví dụ sau đây minh họa với bạn điều đó. Bạn có thể truy xuất a, n từ khắp nơi trong phạm vi module commonFunction như trong đoạn mã trên nhưng sang module checkValidFunction bạn không thể truy xuất chúng nữa.
Hình 7.5 Không nhìn thấy được a và n từ ngoài module commonFunction Bạn có thể sửa cho a, n thành phạm vi public bằng cách khai báo như sau: Public a(100) As Double
Public Const n As Integer = 10
Như hình 7.6 dưới đây, bạn đang ở module checkvalidFunction, bạn hoàn toàn có thể nhìn thấy (truy xuất) a và n trong module commonFunction vì bạn đã có khai báo phạm vi truy xuất Public cho chúng theo cú pháp trên
Hình 7.6 Truy xuất a, n từ ngoài module chứa chúng
+ Các hàm, thủ tục có phạm vi truy xuất mặc định là Public. Do vậy, bạn có thể gọi các hàm/thủ tục containInArray(), InitArray(), showArray(), sortArray() từ khắp nơi. Bạn quan sát lại các hình 7.5 và 7.6. Tuy nhiên, bạn cũng có thể hạn chế phạm vi truy xuất này chỉ trong nội module commonFunction bằng khai báo từ khóa Private trước tên hàm mà bạn muốn.
Ví dụ: Bạn khai báo cho 02 thủ tục InitArray() và showArray() có phạm vi truy xuất là
private như sau:
Private Sub InitArray() Dim i As Integer Randomize
For i = 1 To n
a(i) = Rnd * 100
Next End Sub
Private Sub showArray() Dim i
For i = 1 To n
MsgBox ("a[" & Str(i) & "] = " & Str(a(i))) Next
End Sub
Khi đó, bạn không thể truy xuất đến thủ tục InitArray() và showArray() từ module checkValidFunction như trong hình 7.7 dưới đây. Tất nhiên, trong module commonFunction bạn vẫn gọi được 2 thủ tục trên một cách bình thường.
Hình 7.7: Không nhìn thấy InitArray() và showArray() từ module checkValidFunction
+ Để chạy thử các thủ tục trong đoạn mã trên, bạn có một vài cách, đơn giản nhất là bạn hãy chọn (bôi đen) thủ tục đó và ấn phím F5 như trong hình 7.8 dưới đây. Khi đó, các mã lệnh trong phần được chọn sẽ được dịch và chạy. Bạn hãy quan sát kết quả chạy chương trình của đoạn mã vừa chọn.
Hình 7.8 Chạy thử thủ tục InitArray() và showArray()
+ Đối với hàm (function) thì bạn có cách khác: gọi từ các thủ tục hoặc bạn chạy thử từ cửa sổ Immediate như trong hình 7.9 dưới đây. Để hiển thị cửa sổ Immediate bạn chọn lệnh View/Immediate Window từ trên thanh menu hoặc ấn tổ hợp phím Ctrl + G. Trong cửa sổ Immediate bạn có thể quan sát được các giá trị của các biến (với điều kiện phạm vi truy xuất public) hoặc giá trị của hàm bằng cú pháp: ? tên biến / tên hàm. Trong hình 7.9, trước tiên, thủ tục InitArray() được cho chạy và biến mảng a() có phạm vi truy xuất public. Sau đó, ở cửa sổ Immediate, để xem giá trị của a(1) được khởi tạo là bao nhiêu bạn cần viết: ?a(1) => kết quả a(1) = 22.3095118999481, để xem giá trị của hàm containInArray() bạn cần viết:
?containInArray(22.3095118999481) => kết quả trả về của hàm là True. Nếu gọi
?containInArray(1) => kết quả trả về của hàm là False
Hình 7.9 Chạy thử hàm trong cửa sổ Immediate
Như đã trình bày, trong nhiều trường hợp bạn không nên sử dụng biến, hằng toàn cục. Do đó, ví dụ trên sẽ được viết lại không sử dụng biến toàn cục như sau:
Option Compare Database Option Base 1
Option Explicit
Sub initArray(ByRef a() As Double, ByRef n As Integer)
Dim i As Integer n = 10
Randomize
For i = 1 To n
a(i) = Rnd * 100 Next
End Sub
Sub showArray(a() As Double, n As Integer)
Dim i
For i = 1 To n
MsgBox ("a[" & Str(i) & "] = " & Str(a(i))) Next
End Sub
Sub sortArrayASC(ByRef a() As Double, n As Integer) Dim i, j As Integer
For i = 1 To n - 1 For j = i + 1 To n
If (a(i) > a(j)) Then Dim tg As Double tg = a(i)
a(i) = a(j) a(j) = tg
End If Next
Next End Sub
Function containInArray(x As Double, a() As Double, n As Integer) Dim i As Integer
Dim kt As Boolean kt = False
For i = 1 To n
If x = a(i) Then kt = True Exit For
End If Next
containInArray = kt