Mảng đa chiều

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Quá trình phân tích, thiết kế cho hệ thống quản lý công chức - tiền lương của UBDS-GĐ&TE pdf (Trang 42 - 45)

VII. Mảng và truy cập tuần tự

3. Mảng đa chiều

Có thể dùng các mảng có nhiều chiều; thường được gọI là mảng đa chiều [multidimensional array]. Cũng như các danh sách dữ liệu dẫn đến một chỉ số dướI đơn ( các mảng một chiều), các bảng dữ liệu dẫn đến các chỉ số dướI kép ( mảng hai chiều).

Ta có qui ước: tham chiếu khoản nhập đầu tiên cho số lượng hàng và khoản nhập thứ hai để cho số lượng cột. Theo qui ước này, ta có thể mô tả đoạn mã của bảng cửu chương dướI dạng điền trọn một hàng, theo từng cột nhập thứ hai để cho số lượng cột. Theo qui ước này, ta có thể mô tả đoạn mã của bảng cửu chương dướI dạng điền trọn một hàng, theo từng cột, trước khi dờI đến hàng kế tiếp.

Mảng được sử dụng trong chương trình ARRAYS là mảng một chiều. Visual basic cho phép khai báo mảng nhiều chiều. ví dụ sau khi khai báo mảng hai chiều :

Static MyArray (0 to 3,1 to 4) Các phần tử mảng được liệt kê như sau:

MyArray (0,1) My Array (0,2) MyArray (0,3) MyArray (0,4) MyArray(1,1) MyArray (1,2) MyArray (1,3) MyArray (1,4) MyArray(2,1) MyArray (2,2) MyArray (2,3) MyArray (2,4)

MyArray(3,1) MyArray (3,2) MyArray (3,3) MyArray (3,4) Tương tự khai báo mảng ba chiều

Dim MyArray (1 to 3, 1 to 7, 1 to 5).

Visual Basic cho phép mảng khai báo mảng tốI đa có 60 chiều! Sau đây là mã lệnh cho phép gán giá trị 3 vào các phần tử mảng hai chiều

Static MyArray (1 to 10, 1 to 10) Dim Counter 1, Counter 2

For Counter 1 = 1 to 10 For Counter 2 = 1 to 10

MyArray (Counter 1, Counter 3) =3 Next

Next

4.Mảng động và mảng cố định

Trong Visual Basic, các mảng không thể kết thúc mở. Mặc dù, các giới hạn khá lớn, tuỳ thuộc khá nhiều vào lượng bộ nhớ đang có, ta phảI báo cho Visual Basic biết phảI chừa riêng một lượng bộ nhớ là bao nhiêu cho mảng trước khi dùng nó.

Có hai kiểu mảng trong Visual Basic: mảng cố định [fixed array], ở đó việc phân bổ bộ nhớ không bao giờ thay đổI trong khi đang chạy chương trình, và

mảng động [dynamic arrays], ở đó có thể thay đổI kích cỡ ngay khi chạy chương trình.

 Ưu điểm của mảng cố định là: do bộ nhớ được chừa riêng ngay tạI đầu chương trình, ta hiếm khi gặp sự cố cạn kiệt bộ nhớ trong khi chương trình đang chạy.

Ưu điểm của mảng động là: Khả năng linh hoạt của chúng; có thể thay đổI kích cớ để đáp ứng những gì mà chương trình thường gặp.

Có thể cả mảng động và mảng cố định sẵn dùng cho toàn bộ ứng dụng, cho một Form hay một module cụ thể, hoặc chỉ trong phạm vi của một thủ tục hay hàm. Khi dùng mảng bao giờ cũng phảI khai báo sao cho số lượng cần phảI vừa đủ theo yêu cầu ứng dụng cần xây dựng chương trình, không nên lãng phí bộ nhớ. Tuy nhiên có nhiều trường hợp kích thước mảng phụ thuộc lúc chương trình thực hiện (run – time), chúng ta không thể xác định trước được. Visual Basic cung cấp một khả năng đáp ứng trường hợp này: khai báo mảng kích thước thay đổI - mảng động. Ví dụ sau khi khai báo mảng động:

Sub cmdArray 1_Click() Dim Counter

‘ khai báo mảng Array 1 là mảng động Static Array 1() As Integer ‘ Thay đổI kích thước mảng Array 1

ReDim Array 1( 1 to 15) As Integer For Counter = 1 to 15

Array 1( Counter) = Counter Next.

Thay đổI lạI kích thước mảng Array 1 ReDim Array 1( 1 to 5) As Integer End Sub

Đầu tiên khi khai báo

Static Array 1() As Integer.

Kích thước mảng Array 1 chưa xác định. Lệnh sau sẽ cố định mảng Array 1 có 15 phần tử:

ReDim Array 1( 1 to 15) As Integer

Sau một số xử lý ( ví dụ gán giá trị cho 15 phần tử ), mảng Array 1 được cố địng lạI chỉ còn 5 phần tử

ReDim Array 1(1 to 5) As Integer

Một lưu ý khi thay đổI kích thước mảng, các nộI dung cũ sẽ bị mất,nếu ta muốn giữu lạI giá trị cũ của 5 phần tử còn lạI sau khi thay đổI, ta cần viết lạI như sau:

ReDim Preserve Array 1( 1 to 5) As Integer.

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Quá trình phân tích, thiết kế cho hệ thống quản lý công chức - tiền lương của UBDS-GĐ&TE pdf (Trang 42 - 45)

Tải bản đầy đủ (PDF)

(129 trang)