+ Thiết kế giao diện
+ Cài đặt 1 lớp doubleArray hỗ trợ xử lý các thao tác cần thiết với mảng số thực
+ Cài đặt các hàm hành xử cho các sự kiện ứng với giao diện trên form, sử dụng lớp doubleArray.
Chạy thử chương trình
Như vậy, ở đây chúng ta cần quan tâm đến các bươc thực hiện, các phần khác đã rõ ràng.
Thiết kế giao diện
Đề nghị bạn hãy thiết kế một form đặt tên là frmArrayCalculate có giao diện dạng như sau:
Giao diện trên bao gồm:
+ 03 Lable, bạn đặt tên tùy ý. Thuộc tính Text của mỗi Lable bạn thiết lập như trên hình
+ 03 TextBox, bạn đặt tên lần lượt là txtNum, txtResult, txtSortedArray theo thứ tự từ trên xuống dưới.
+ 02 nút lệnh, bạn đặt tên lần lượt là cmdInitArray và cmdSortArrayASC theo thứ tự từ trái sang phải.
Cài đặt lớp doubleArray
Bạn hãy định nghĩa một Class Module, đặt tên là doubleArray như trong đoạn mã dưới đây. Các thuộc tính và hàm của lớp đã được mô tả chi tiết trong ví dụ của phần Class
Module. Ở đây, chúng ta định nghĩa thêm một hàm toString() trả về một chuỗi là các phần tử của mảng được phân tách nhau bởi dấu cách (space).
Option Compare Database Option Base 1
Option Explicit
Private a(350) As Double Private n As Integer
Public Property Get count() As Integer count = n
End Property
Public Property Let count(ByVal value As Integer) n = value
End Property
Sub initArray()
Dim i As Integer Randomize
For i = 1 To n
a(i) = Rnd * 100 a(i) = Round(a(i), 2)
Next End Sub
Function toString() Dim st As String st = ""
Dim i
For i = 1 To n
If (i < n) Then
st = st + CStr(a(i)) + " "
Else
st = st + CStr(a(i)) End If
Next
toString = st End Function
Sub showArray() Dim i
For i = 1 To n
MsgBox ("a[" & Str(i) & "] = " & Str(a(i))) Next
End Sub
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
Cài đặt các hàm cho các sự kiện
Ở đây, ta cài đặt 02 sự kiện OnClick của 02 nút lệnh như sau. Toàn bộ đoạn mã lệnh sau được đặt trong một MSCO Module có tên là Form_frmArrayCalcute
Option Compare Database Option Explicit
'Khai bao mot doi tuong doubleArray su dung chung trong toan chuong trinh Dim DA As doubleArray
Private Sub cmdInitArray_Click() Dim stResult As String stResult = ""
Dim stNum As String
Me.txtResult.SetFocus Me.txtResult = "" Me.txtNum.SetFocus stNum = Me.txtNum.Text
'Kiem tra xem co nhap so cac phan tu cua mang hay khong? If (stNum = "") Then
MsgBox "Ban phai nhap so phan tu cua mang!" Exit Sub
End If
'Kiem tra xem co nhap vao mot so hay khong? If (IsNumeric(stNum) = False) Then
MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub
End If
'Kiem tra xem co la mot so thap phan hay khong?
Dim pos1, pos2 As Integer pos1 = -1
pos2 = -1
pos1 = InStr(1, stNum, ",", vbTextCompare) pos2 = InStr(1, stNum, ".", vbTextCompare) If (pos1 > 0) Or (pos2 > 0) Then
MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub
End If
Dim num As Integer num = CInt(stNum)
If (num = Null) Or (num > 350) Then
MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub
End If
Set DA = New doubleArray DA.count = num
DA.initArray Me.txtResult.SetFocus Me.txtResult.Text = DA.toString
End Sub
Private Sub cmdSortArrayASC_Click()
Me.txtSortedArray.SetFocus Me.txtSortedArray.Text = ""
If (DA Is Nothing) Then
MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub
End If
If (IsEmpty(DA) = True) Then
MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub
End If
If (IsNull(DA) = True) Then
MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub
End If
DA.sortArrayASC Me.txtSortedArray.SetFocus Me.txtSortedArray.Text = DA.toString
End Sub
Private Sub Form_Load() Set DA = Nothing
End Sub
Kết quả
Bạn hãy nhập vào ô “Số phần tử của mảng” (ví dụ: 10) sau đó click vào nút lệnh “Khởi tạo ngẫu nhiên mảng”. Kết quả khởi tạo sẽ được hiển thị trong ô “Kết quả khởi tạo ngẫu nhiên mảng”.
Bạn tiếp tục click vào nút lệnh “Sắp xếp mảng ASC”. Kết quả sắp xếp mảng được hiển thị trong ô “Kết quả sắp xếp mảng”.
Bạn hãy tự thử nghiệm các trường hợp khác của chương trình.
Đây là một trường hợp chạy chương trình.
3. Kiểu dữ liệu, hằng và biến
3.1 Kiểu dữ liệu
Một kiểu dữ liệu là tập hợp các giá trị mà một biến thuộc về kiểu đó có thể nhận được. Kiểu dữ liệu được đặc trưng bởi hai yếu tố:
Tập các giá trị thuộc về nó
Kiểu dữ liệu | Kích thước (byte) | Ký tự phân loại | Có thể chứa |
Byte | 1 | Không có | Số nguyên từ 0 đến 255 |
Integer | 2 | % | Số nguyên từ -215 đến 215 – 1 |
Long | 4 | & | Số nguyên từ 231 đến 231 – 1 |
Có thể bạn quan tâm!
- Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 2
- 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 - 6
- = 2: T = Sqr(N): Found = False Do While (I <= T) And (Not Found)
- Tham Chiếu Đến Microsoft Dao 3.6 Object Library
Xem toàn bộ 114 trang tài liệu này.
Tập hợp các phép toán (toán tử) có thể được thực hiện trên nó VBA cung cấp các kiểu dữ liệu sau đây:
4 | ! | Số dấu chấm động từ -3.4*1038 đến 3.4*1038 | |
Double | 8 | # | Số dấu chấm động từ -1.79*10308 đến 1.79*10308 |
Currency | 8 | @ | Số nguyên được chia tỷ lệ với 4 số lẻ phần thập phân từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807 |
String | 10 + 2 byte cho mỗi ký tự | $ | Chuỗi ký tự dài tối đa 2 tỷ byte, chuỗi có độ dài cố định có thể dài tối đa 65400 ký tự |
Boolean | 2 | Không có | True hoặc False |
Date | 8 | Không có | Giá trị ngày giờ từ 1/1/100 đến 31/12/9999 |
Object | 4 | Không có | Bất kỳ tham chiếu đối tượng nào |
Variant | 16 đến khoảng 2 tỷ byte | Không có | Bất kỳ loại dữ liệu nào |
Có thể ngầm định định nghĩa kiểu dữ liệu cho biến bằng cách nối thêm một ký tự phân loại dữ liệu vào sau tên biến trong lần đầu tiên sử dụng biến.
Ngoài những kiểu dữ liệu VBA đã xây dựng sẵn, VBA còn cung cấp cho người dùng cú pháp để họ tự xây dựng kiểu dữ liệu của riêng mình, phù hợp với yêu cầu của ứng dụng. Đó là kiểu dữ liệu do người dùng định nghĩa (Kiểu cấu trúc).
Cú pháp khai báo:
[Private | Public]
Type varname
elementname [([subscripts])] As type [elementname [([subscripts])] As type]
. . .
End Type
Trong đó:
Public | Private: từ khóa xác định phạm vi truy xuất của kiểu dữ liệu tương ứng cho tất cả các thủ tục trong tất cả các module thuộc tất cả các dự án | chỉ trong phạm vi module chứa nó.
varname: tên kiểu dữ liệu được đặt theo quy tắc đặt tên của VB
elementname: tên các thành phần của kiểu dữ liệu
subscript: đặt chỉ số cho mảng nếu thành phần dữ liệu tương ứng là mảng type: là một trong những kiểu của VBA hoặc kiểu đã được định nghĩa trước. Ví dụ:
Type StateData
CityCode (1 To 100) As Integer 'Thành phần dữ liệu là một mảng 100 phần tử có chỉ số từ 1 đến 100.
County As String * 30
‘Thành phần dữ liệu là một xâu tối đa là 30 ký tự
End Type
‘Khai báo một biến mảng 100 phần tử có chỉ số từ 1 đến 100, mỗi phần tử là một cấu trúc kiểu StateData.
Dim Washington(1 To 100) As StateData
Kiểu cấu trúc chỉ được định nghĩa trong phần khai báo của các loại module, không được định nghĩa trong các hàm, thủ tục con. Trong Standard Module và Class Module, phạm vi truy xuất của kiểu cấu trúc mặc định là public.
Cú pháp truy xuất các thành phần của kiểu cấu trúc:
varname.elementname
Trong đó:
varname: là tên biến kiểu cấu trúc elementname: tên thành phần của kiểu cấu trúc. Ví dụ:
Với cấu trúc và khai báo biến của ví dụ trước, ta có các truy xuất hợp lệ sau:
Washington(1).CityCode(1) = 1
Washington(1).County = “100”
3.2 Hằng
Hằng là đại lượng có giá trị không đổi trong suốt thời gian chương trình thi hành. Cú pháp khai báo:
[Public | Private] Const constname [As type] = expression
Trong đó:
Public | Private: từ khóa xác định phạm vi truy xuất của hằng tương ứng cho tất cả các thủ tục trong tất cả các module thuộc tất cả các dự án | chỉ trong phạm vi module chứa nó. Các từ khóa này chỉ được viết trong phần khai báo của module, không được viết trong phạm vi thủ tục, hàm (mặc dù hằng có thể khai báo trong thủ tục, hàm). Private là phạm vi truy xuất mặc định