Sử dụng mảng trong C# (Bài 3)

Sử dụng mảng trong C#. 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ảng trong c#

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ử.

Sử dụng mảng trong c#

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ụ

Sử dụng mảng trong c#

Đ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>