Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 2

‘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!

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ể 1


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 2

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() 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() 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 3

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 4

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 5


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

Xem tất cả 114 trang.

Ngày đăng: 19/01/2024
Trang chủ Tài liệu miễn phí