Sử dụng mảng trong C# (Bài 4)
Sử dụng mảng trong C# sẽ cho các bạn biết mảng là một tập hợp gồm nhiều phần tử có cùng kiểu dữ liệu. Mỗi phần tử trong mảng được truy cập thông qua chỉ số. Phần tử đầu tiên có chỉ số là 0 và phần tử cuối cùng có chỉ số n – 1 (trong đó n là số lượng phần tử có trong mảng).
Mảng được sử dụng trong các trường hợp như thao tác trên dãy số, quản lý danh sách nhân viên, danh sách hàng hoá, …
Sử dụng mảng trong C# – Phân loại mảng
Dựa vào cách mảng lưu trữ các phần tử, mảng có thể được phân thành 2 loại là mảng một chiều (Single-dimensional Arrays) và mảng đa chiều (Multi-dimensional Arrays).
Mảng một chiều
Mảng một chiều là mảng mà các phần tử của mảng được lưu trên một dòng. Hình bên dưới là một ví dụ về mảng có 6 phần tử các số nguyên.
Sử dụng một trong hai cách sau để định nghĩa mảng một chiều
// Cách 1
datatype[] arrayName; // Khai báo tên mảng và kiểu dữ liệu
arrayName = new datatype[length]; // Tạo mảng
// Cách 2
datatype[] arrayName = new datatype[length];
Ví dụ định nghĩa mảng tên intArray có 6 phần tử
int[] intArray = new int[6];
Mảng đa chiều
Không giống như mảng một chiều, mảng đa chiều cho phép chúng ta lưu trữ dữ liệu trên nhiều dòng. Kích thước của mảng được xác định dựa vào số dòng và số cột tương tự như một sheet trong Microsoft Excel và được phân làm 2 loại như sau
Rectangular Array là mảng có số cột trên mỗi dòng là như nhau. Hình bên dưới là ví dụ về mảng có 12 phần tử.
Cú pháp khai báo Rectangular Array
datatype[,] arrayName = new datatype[rows , columns];
Jagged Array tương tự Rectangular Array ngoại trừ số cột trên mỗi dòng có thể khác nhau. Hình bên dưới là một ví dụ
Đoạn code sau giải thích về việc sử dụng Jagged Array để lưu tên của các công ty
class JaggedArrayExample
{
static void Main (string[] args)
{
string[][] jArray = new string[2][];
jArray[0] = new string[] {"Intel", "Google"};
jArray[1] = new string[] {"Apple", "Microsoft", "Oracle"};
// jArray.GetLength(0) là số dòng
for (int i = 0; i < jArray.GetLength(0); i++)
{
// jArray[i].GetLength(0) là số cột
for (int j = 0; j < jArray[i].GetLength(0); j++)
{
Console.Write(jArray [i][j] + ", ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
Sử dụng mảng trong C# – Sử dụng foreach để duyệt mảng
Ngoài việc sử dụng vòng lặp for, chúng ta có thể sử dụng foreach theo cú pháp bên dưới để làm việc với mảng.
foreach(datatype variable in arrayName)
{
// Xử lý
}
Sử dụng mảng trong C# – Lớp Array
Array cung cấp nhiều thuộc tính và phương thức để làm việc với mảng. Bảng sau đây trình bày một số phương thức thường dùng của lớp Array
Phương thức | Mô tả |
SetValue(value, position) | Thiết lập giá trị cho phần tử dựa vào vị trí (position) |
GetValue(position) | Lấy giá trị của phần tử |
IndexOf(Array, element) | Tìm kiếm một phần tử (element) |
GetLength() | Cho biết số lượng phần tử trong mảng |
Reverse(Array) | Đảo ngược thứ tự các phần tử |
Sort(Array) | Sắp xếp các phần tử của mảng |
Chương trình sau sẽ giải thích việc sử dụng một số phương thức của lớp Array
class UsingArrayExample
{
static void Main(string[] args)
{
int[] intA = {3, 7, 1, 4, 2, 0, 11};
int[] tempA = intA;
Console.Write("Elements of array: ");
foreach (int i in intA)
{
Console.Write(i + " ");
}
Console.WriteLine();
// Đảo mảng
Array.Reverse(tempA);
Console.Write("Array after reversed: ");
foreach (int i in tempA)
{
Console.Write(i + " ");
}
Console.WriteLine();
// Sắp xếp mảng
Array.Sort(intA);
Console.Write("Array after sorted: ");
foreach (int i in intA)
{
Console.Write(i + " ");
}
Console.ReadLine();
}
}
}
Sử dụng mảng trong C# – Bài tập thực hành
Bài thực hành số 1: Viết một chương trình tạo một mảng một chiều các số nguyên chứa giá trị ngẫu nhiên. Sắp xếp các thành phần trong mảng theo thứ tự tăng dần và hiển thị kết quả. Làm tương tự với trường hợp sắp xếp mảng theo thứ tự giảm dần. Cho phép người dùng lựa chọn cách sắp xếp.
Bài thực hành số 2: Sử dụng mảng hai chiều, tạo 3 mảng có tên lần lượt là HCM, DN, BD. Ba mảng này lưu trữ điều kiện khí hậu của những thành phố tương tứng. Thêm tối thiểu 2 dòng trong mỗi mảng, trong đó lưu trữ thông tin về ngày, nhiệt độ C, độ ẩm.
Bài thực hành số 3: Viết chương trình tạo một mảng hai chiều không cùng kích thước. Cố định số dòng của mảng là 5, còn từng dòng có kích thước bằng giá trị của dòng, tứ là dòng thứ nhất có kích thước 1 (tức là có 1 cột), dòng thứ hai có kích thước là 2 (tức là 2 cột)…. Các giá trị phát sinh ngẫu nhiên. Hãy xuất kết quả của ma trận theo kiểu: a[i][j] = <giá trị aij>