Mảng trong Visual Basic (Array)
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)
.
Bài viết này được đăng tại [free tuts .net]
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.
Vậy, khi bạn khai báo mảng có kích thước là n thì số cần nhập vào là (n - 1)
Ví dụ: Khai báo 10 phần tử
Dim array As Integer() = New Integer(9) {}
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à:
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.