2323
2.2 Mảng ñộng
Written by: Dương Thành Phết
Mảng ñộng là mảng không xác ñịnh rõ số phần tử khi
khai báo.
Cú pháp khai báo:
[Dim | Private | Public | Static] Tên_mng() As Kiu
Ví dụ: Dim St() As String
Cấp phát bộ nhớ:
ReDim Tên_mng(s phn t) As Kiu
Ví dụ :
Dim St() As String
ReDim St(9)
This is trial version
www.adultpdf.com
2424
Written by: Dương Thành Phết
Khi ñã khai báo và cấp phát vùng nhớ cho mảng
ñộng, khi cần ta vẫn có thể thay ñổi lại kích thước của
mảng bằng lệnh ReDim
Ví du :
Dim MyArray() As Integer ' Khai báo mảng ñộng.
Redim MyArray(5) ' cấp phát 5 phần tử.
For i = 1 To 5 ' Lặp 5 lần.
MyArray(i) = i
Next i
Redim MyArray(10)
For i = 1 To 10
MyArray(i) =i
Next i
This is trial version
www.adultpdf.com
2525
Written by: Dương Thành Phết
Mặc ñịnh, khi dùng lệnh Redim ñể cấp phát lại số
phần tử trong mảng thì các giá trị cũ sẽ bị mất ñi.
ðể giữ lại các giá trị cho các phần tử cũ trong mảng ta
phải dùng thêm từ khoá Preserve
Ví du :
Dim MyArray() As Integer ' Khai báo mảng ñộng.
Redim MyArray(5) ' cấp phát 5 phần tử.
For i = 1 To 5 ' Lặp 5 lần.
MyArray(i) = i khởi tạo giá trị cho mảng.
Next i
…
Redim Preserve MyArray(15)
'cấp phát lại 15 pt cho mảng nhưng vẫn giữ lại
‘các giá trị cũ của 5 phần tử ñầu.
This is trial version
www.adultpdf.com
2626
2.3 Mảng ña chiều
Written by: Dương Thành Phết
Visual Basic cho phép khai báo và sử dụng mảng ña
chiều.
Ví dụ khai báo mảng 2 chiều, mỗi chiều 10 phần tử.
Dim MatrixA(9, 9) As Double
Ta cũng có thể xác ñịnh rõ ràng các chỉ số trên, chỉ số
dưới của mảng ña chiều như ví dụ sau ñây:
Dim MatrixA(1 To 10, 1 To 10) As Double
This is trial version
www.adultpdf.com
2727
Written by: Dương Thành Phết
Lưu ý :
Mỗi một phần tử của mảng chiếm một vùng nhớ nhất
ñịnh, do ñó, ñể tiết kiệm bộ nhớ, ta chỉ nên khai báo
mảng với số phần tử vừa ñủ.
Không thể tạo mảng có quá 2.147.483.647 phần tử. Vì
có thể dẫn ñến lỗi “Out Of Memory” khi chạy chương
trình.
This is trial version
www.adultpdf.com
2828
2.4 Các xử lý trên mảng
Written by: Dương Thành Phết
Hàm v mng
Split(Chuỗi [, Dấu phân cách [, số phần tử ]]):
Cắt 1 chuỗi thành một mảng các chuổi con.
Join(Mảng [, Dấu phân cách]):
Trả về chuổi kết hợp các phần tử trong 1 mảng
VD:
Dim A() = Split(txtNhap.Text, "-")
txtKetqua.Text = Join(A, "/")
This is trial version
www.adultpdf.com
2929
Written by: Dương Thành Phết
Tìm kim các phn t tha ñiu kin cho trc
For i = 0 To n-1
IF A(i) = n Then
Thc hin các x lý
End If
Next
This is trial version
www.adultpdf.com
3030
Written by: Dương Thành Phết
Tìm giá trị nhỏ nhất/ lớn nhất và vị trí
Dim gtnn as Integer, vtgtnn as Integer
gtnn=A(0)
vttnn=0
For i = 0 To n-1
If( A(i) < gtnn then
gtnn=A(i)
vtgtnn=i
End If
Next
This is trial version
www.adultpdf.com
3131
Written by: Dương Thành Phết
d. Tính tổng của các phần tử trong mảng.
Dim Tong as Integer =0
For i = 0 to n-1
Tong=Tong + A(i)
Next
Ghi chú: Tương tự ta có yêu cầu tính toán khác
This is trial version
www.adultpdf.com
3232
Written by: Dương Thành Phết
Ví dụ: Tạo project xử lý mảng số nguyên
Yêu cầu:
Tạo 5 Text Box chứa 5 số nguyên ngẫu nhiên (từ
1 ñến 100) khi click vào nút nhập.
Tìm giá trị số lớn nhất và vị trí
Tính tổng giá trị các phần tử
Các Textbox luôn ReadOnly
This is trial version
www.adultpdf.com
3333
Written by: Dương Thành Phết
e. Sắp xếp tăng dần/ giảm các phần tử trong mảng
Sub Sapxep(ByVal a() As Integer, ByVal n As Integer)
Dim tam As Integer
Dim i As Integer, j As Integer
For i = 0 To n - 2
For j = i + 1 To n - 1
If a(i) > a(j) Then
tam = a(i)
a(i) = a(j)
a(j) = tam
End If
Next
Next
End Sub
2
12
8 5 1 6 4
i=1 j=2 j=5i=2 j=3 j=4i=3 j=7i=4 j=6i=5 i=6 i=7
This is trial version
www.adultpdf.com