06/04/2021, 14:48

Mảng trong Visual Basic (Array) - VB căn bản

Trong bài này chúng ta sẽ tìm hiểu kiểu dữ liệu mảng trong Visual Basic, đây còn gọi là kiểu Array, dùng để lưu trữ nhiều dữ liệu tạo thành một danh sách mảng. Về cơ bản thì mảng là một biến, được dùng để lưu trữ nhiều phần tử có cùng kiểu dữ liệu, và trong bộ nhớ chúng sẽ được lưu trữ gần nhau. ...

Trong bài này chúng ta sẽ tìm hiểu kiểu dữ liệu mảng trong Visual Basic, đây còn gọi là kiểu Array, dùng để lưu trữ nhiều dữ liệu tạo thành một danh sách mảng.

Về cơ bản thì mảng là một biến, được dùng để lưu trữ nhiều phần tử có cùng kiểu dữ liệu, và trong bộ nhớ chúng sẽ được lưu trữ gần nhau. Mỗi mảng phải xác định tổng số phần tử lúc khai báo, nên nếu bạn dùng không hết thì trong bộ nhớ nó vẫn được lưu trữ giá trị rỗng.

Các phần tử của mảng sẽ được đánh số thứ tự bắt đầu tư 0, ta gọi đây là chỉ mục của mảng. Chỉ mục này giúp ta có thể truy cập đến một phần tử mong muốn trong mảng.

Hình ảnh dưới đây thể hiện một mảng có n phần tử, và chỉ mục sẽ được đánh từ 0 đến (n-1).

csharp arrays representation png

Bạn biết tại sao phần tử cuối cùng là n-1 không? Tại vì phần tử đầu tiên là 0 nên phần tử cuối cùng sẽ là n-1.

1. Khai báo mảng trong Visual Basic

Để khai báo một mảng (array) thì ta sử dụng cú pháp sau:

Dim array_name As [Data_Type](); 

Ở đây, array_name là tên của mảng và Data_type là kiểu dữ liệu của các phần tử cần lưu trữ trong mảng.

Ví dụ: Sau đây là các cách khác nhau để khai báo một mảng với các kiểu dữ liệu khác nhau bằng ngôn ngữ lập trình Visual Basic.

' Lưu trữ kiểu Int
Dim numbers As Integer()

' Lưu trữ kiểu String
Dim names As String()

' Lưu trữ kiểu Double
Dim ranges As Double()

2. Gán giá trị cho mảng lúc khai báo

Trong Visual Basic, bạn có thể gán giá trị cho các phần tử mảng ngay lúc khai báo, bằng cách sử dụng từ khóa New để khởi tạo Object đúng như kiểu dữ liệu mong muốn.

Sau đây là các cách khác nhau để khai báo và khởi tạo các phần tử của mảng, bằng cách sử dụng từ khóa New trong VB.

' Khai báo và khởi tạo một mảng có kích thước là 5
Dim array As Integer() = New Integer(4) {}

' Khai báo và gán phần tử cùng một lúc
Dim array2 As Integer() = New Integer(4) {1, 2, 3, 4, 5}

' Khởi tạo mảng gồm 5 phần tử sẽ cho biết kích thước của mảng là 5
Dim array3 As Integer() = New Integer() {1, 2, 3, 4, 5}

' Một cách khác để khởi tạo mảng mà không khai báo kích thước
Dim array4 As Integer() = {1, 2, 3, 4, 5}

' Khai báo một mảng, sau đó gán phần tử cho mảng
Dim array5 As Integer()
array5 = New Integer() {1, 2, 3, 4, 5}

Trong ví dụ đầu tiên, chúng ta đã khai báo và khởi tạo một mảng số nguyên với kích thước là 5 , tức là mảng có thể chứa các phần tử từ array[0] đến array[4].

Trong ví dụ thứ hai, chúng ta đã khai báo và khởi tạo một mảng giống như câu lệnh đầu tiên, nhưng gán luôn giá trị cho mảng.

Trong ví dụ thứ ba và thứ tư, chúng ta khởi tạo một mảng với các giá trị, nhưng không chỉ định bất kỳ kích thước cho mảng. Tuy nhiên, kích thước của mảng có thể được xác định bởi số phần tử, vì vậy việc chỉ định số phần tử là không cần thiết nếu trong lúc khai báo chúng ta gán luôn các phần tử cho mảng.

Trong ví dụ thứ năm, chúng ta đã khai báo một mảng mà không cần khởi tạo, và sau đó sử dụng từ khóa New để gán giá trị cho mảng.

3. Truy cập đến các phần tử trong mảng

Trong Visual Basic, chúng ta có thể sử dụng các vòng lặp for và For Each để duyệt qua các phần tử trong mảng.

Sau đây là đoạn code truy cập đến các phần tử trong mảng bằng cách sử dụng các số chỉ mục.

Dim array As Integer() = New Integer(4) {1, 2, 3, 4, 5}

' Lấy giá trị phần tử thứ 2 (chỉ mục là 1) gán vào biến a
Dim a As Integer = array(1)

' Lấy giá trị phần tử thứ 5 (chỉ mục là 4) gán vào biến b
Dim b As Integer = array(4)

Sau đây là ví dụ về khai báo, khởi tạo và truy cập đến các phần tử trong mảng thông qua chỉ mục trong Visual Basic.

Module Module1
    Sub Main()
        Dim array As Integer() = New Integer(4) {1, 2, 3, 4, 5}
        Console.WriteLine(array(0))
        Console.WriteLine(array(1))
        Console.WriteLine(array(2))
        Console.WriteLine(array(3))
        Console.WriteLine(array(4))
        Console.WriteLine("Press Enter Key to Exit..")
        Console.ReadLine()
    End Sub
End Module

Trong ví dụ trên, chúng ta đã khai báo và khởi tạo một mảng có 5 phần tử, sau đó truy cập đến các phần tử của mảng bằng cách sử dụng các số chỉ mục.

Chạy chương trình trên sẽ thu được kết quả là:

csharp access arrays with index example result png

4. Truy cập các phần tử mảng bằng vòng lặp For

Bây giờ ta sẽ làm một ví dụ đơn giản, đó là sử dụng vòng lặp for để in ra các phần tử của mảng.

Module Module1
    Sub Main()
        Dim array As Integer() = New Integer(4) {1, 2, 3, 4, 5}
        For i As Integer = 0 To array.Length - 1
            Console.WriteLine(array(i))
        Next
        Console.WriteLine("Press Enter Key to Exit..")
        Console.ReadLine()
    End Sub
End Module

Trong đó array.Length là độ dài của mảng. Nó trả về tổng số phần tử nên khi lặp tap phải trừ đi 1, bởi chỉ mục bắt đầu từ 0.

5. Truy cập các phần tử mảng bằng vòng lặp For Each

Vòng lặp For Each thì chúng ta không cần phải đếm tổng số phần tử mảng, bởi nó sẽ lặp lần lượt qua các phần tử cho đến phần tử cuối cùng.

Module Module1
    Sub Main()
        Dim array As Integer() = New Integer(4) {1, 2, 3, 4, 5}
        For Each i As Integer In array
            Console.WriteLine(i)
        Next
        Console.WriteLine("Press Enter Key to Exit..")
        Console.ReadLine()
    End Sub
End Module

Chạy chương trình này ta sẽ thu được kết quả như ví dụ ở phần 3.

6. Mảng hai chiều trong Visual Basic

Cũng như các ngôn ngữ khác, Visual Basic cho phép bạn tạo mảng nhiều chiều để lưu trữ dữ liệu giống như một table.

Thực tế thì ta có thể tạo ra mảng 3 chiều, 4 chiều đều được. Tuy nhiên thực tế thì ta thường sử dụng mảng hai chiều mà thôi. Vì vậy trong phần này mình chủ yếu nói về mảng 2 chiều nhé.

Để khai báo mảng 2 chiều thì ta sử dụng cú pháp sau:

Dim arr As Integer(,) = New Integer(3, 1) {}

Và đây là khai báo mảng ba chiều.

Dim arr1 As Integer(,,) = New Integer(3, 1, 2) {}

Như vậy muốn khai báo mảng n chiều thì đặt n-1 dấu phẩy lúc khai báo.

Sau đây là một vài ví dụ về cách khai báo mảng 2 chiều trong Visual Basic.

' 2 chiều
Dim intarr As Integer(,) = New Integer(2, 1) {{4, 5}, {5, 0}, {3, 1}}

' 2 chiều
Dim intarr1 As Integer(,) = New Integer(,) {{4, 5}, {5, 0}, {3, 1}}

Để truy xuất các phần tử trong mảng hai chiều thì ta phải sử dụng vòng lặp lồng nhau.

Module Module1
    Sub Main()
        ' Two Dimensional Array
        Dim array2D As Integer(,) = New Integer(2, 1) {{4, 5}, {5, 0}, {3, 1}}

        Console.WriteLine("---Mang hai chieu---")
        For i As Integer = 0 To 3 - 1
            For j As Integer = 0 To 2 - 1
                Console.WriteLine("a[{0},{1}] = {2}", i, j, array2D(i, j))
            Next
        Next

        Console.WriteLine("Press Enter Key to Exit..")
        Console.ReadLine()
    End Sub
End Module

Trên là hướng dẫn cách sử dụng mảng (array) trong Visual Basic. Hy vọng những ví dụ trên sẽ giúp bạn biết cách xử lý các phần tử của mảng.

Vũ Văn Thanh

12 chủ đề

2597 bài viết

0