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.. http://www.thayphet.net Cú pháp khai báo: [Dim | Private | Public | Static] Tên_
Trang 12.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.
http://www.thayphet.net
Cú pháp khai báo:
[Dim | Private | Public | Static] Tên_m,ng() As Kiu
Cấp phát bộ nhớ:
ReDim Tên_m,ng(s0 ph7n t8) As Kiu
ReDim St(9)
This is trial version www.adultpdf.com
Trang 2Written 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
http://www.thayphet.net
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
Trang 3Written 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
http://www.thayphet.net
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
Trang 42.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
http://www.thayphet.net
This is trial version www.adultpdf.com
Trang 5Written 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.
http://www.thayphet.net
This is trial version www.adultpdf.com
Trang 62.4 Các xử lý trên mảng
Written by: Dương Thành Phết
Hàm v@ m,ng
http://www.thayphet.net
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
Trang 7Written by: Dương Thành Phết
Tìm kim các ph7n t8 thBa ñi@u ki"n cho trCDc
For i = 0 To n-1
IF A(i) = n Then
ThIc hi"n các x8 lý End If
Next
http://www.thayphet.net
This is trial version www.adultpdf.com
Trang 8Written by: Dương Thành Phết http://www.thayphet.net
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
Trang 9Written by: Dương Thành Phết http://www.thayphet.net
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
Trang 10Written by: Dương Thành Phết http://www.thayphet.net
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
Trang 11Written by: Dương Thành Phết http://www.thayphet.net
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
i=1 j=2 i=2 j=3 i=3 j=4 i=4 j=5 i=5 j=6 i=6 j=7 i=7
This is trial version www.adultpdf.com