Trang chủ Liên hệ

Bài 21 C# cơ bản - Mảng 1 chiều trong C#

CÔNG TY TNHH THIẾT BỊ ĐO LƯỜNG VÀ ĐIỀU KHIỂN 03/03/2023

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

Khái niệm về mảng trong C#. Tại sao phải sử dụng mảng?

Khái niệm về mảng

Mảng là

Đặc điểm của mảng:

Tại sao phải sử dụng mảng?

Để trả lời câu hỏi này ta thử xét trường hợp chúng ta cần chứa họ tên của 10 sinh viên trong trường.

 Những lợi ích khi sử dụng mảng:

Khai báo, khởi tạo và sử dụng mảng 1 chiều trong C#

Khai báo mảng 1 chiều

Cú pháp:

<kiểu dữ liệu> [] <tên mảng>;

Trong đó:

Để sử dụng được mảng ta phải khởi tạo giá trị hoặc cấp phát vùng nhớ cho mảng. Cấp phát vùng nhớ:

/*
             * Khai báo mảng 1 chiều kiểu string và có tên là mctt.
             * Sau đó thực hiện cấp phát vùng nhớ với số phần tử tối đa của mảng là 3.
             */

string[] mctt  = new string[3];

Sau khi mảng được cấp phát vùng nhớ thì các phần tử trong mảng sẽ mang giá trị mặc định:

Chúng ta có thể khởi tạo giá trị khác mà chúng ta mong muốn ngay khi cấp phát vùng nhớ bằng cú pháp sau:

<kiểu dữ liệu>[] <tên mảng> = new <kiểu dữ liệu>[] { <giá trị 1>, …, <giá trị n> };

Khởi tạo giá trị

Cú pháp:

<kiểu dữ liệu>[] <tên mảng> = { <giá trị 1>, …, <giá trị n> };

Ví dụ: int[] IntArray = { 3, 9, 10 };

Về bản chất thì cách này trình biên dịch vẫn xem xét số phần tử khởi tạo và cấp phát vùng nhớ cho biến mảng sau đó thực khởi tạo giá trị cho các phần tử trong mảng. Nhưng cách viết này có vẻ nhanh và gọn hơn so với cách cấp phát vùng nhớ rồi mới khởi tạo giá trị.

Tóm lại ta có 3 cách khai báo và khởi tạo sau:

string[] Array = new string[3];

string[] strmctt = new string[] { "mctt", "Free Education" };

int[] IntArray = { 3, 9, 10 };

Sử dụng mảng

Kiểu mảng có thể dùng làm:

// Khai báo, cấp phát và khởi tạo mảng kiểu string và tên là mctt
string[] strmctt = new string[] { "mctt", "Free Education" };
/*
 * Vì chỉ số phần tử được đánh số từ 0 nên muốn truy xuất đến phần tử thứ 2 của mảng
thì chỉ số phần tử là 1
*/        
            Console.WriteLine(strmctt[1]);

Một số thuộc tính và phương thức đặc trưng của mảng 1 chiều:

Tên thuộc tính hoặc phương thức

Ý nghĩa

Length

Thuộc tính trả về số nguyên kiểu int là số phần tử tối đa của mảng

LongLength

Thuộc tính trả về số nguyên kiểu long là số phần tử tối đa của mảng

GetLength(<số chiều>)

Trả về số nguyên kiểu int là số phần tử trong chiều đã xác định. Lưu ý chiều của mảng là các số nguyên và được đánh số từ 0. Cho nên đối với mảng 1 chiều thì số chiều là 0.

GetLongLength(<số chiều>)

Tương tự GetLength nhưng trả về số nguyên kiểu long

Sort()

Phương thức thực hiện sắp xếp mảng theo một thứ tự

Clear()

Phương thức xóa hết dữ liệu trong mảng và đưa về giá trị mặc định của kiểu. Lưu ý là chỉ xóa giá trị, vùng nhớ vẫn còn đó và có thể tiếp tục sử dụng mà không cần cấp phát.

Copy()

Thực hiện copy giá trị của mảng ra một vùng nhớ mới (phép gán thông thường thì 2 đối tượng sẽ dùng chung vùng nhớ rất nguy hiểm vì đối tượng này thay đổi dẫn đến đối tượng kia cũng thay đổi)

Reverse()

Phương thức thực hiện đảo ngược thứ tự của mảng 1 chiều

Còn rất nhiều thuộc tính và phương thức khác, mình chỉ giới thiệu một số cái hay dùng còn lại các bạn có thể tự khám phá.

Cách duyệt mảng 1 chiều:

int[] strmctt= new int[3];
            for (int i = 0; i < 3; i++) // Vì các phần tử có chỉ số là 0 1 2 nên điều kiện dừng là i < 3
            {
                // Do something
            }

int[] strmctt= new int[3];

            /*
             * Thay số 3 thành thuộc tính Length.
             * Bây giờ bạn có thay đổi số phần tử thì chỉ cần thay đổi ở khai báo thôi là xong!
             */

            for (int i = 0; i < strmctt.Length; i++)
            {
                // Do something
            }

Ví dụ chương trình sử dụng mảng 1 chiều:

Trước khi vào ví dụ thì các bạn hãy xem lại ví dụ chương trình tính năm âm lịch từ năm dương lịch đã nhập ở bài CẤU TRÚC RẼ NHÁNH SWITCH CASE. Có vẻ code của chúng ta hơi dài, bây giờ mình hãy thử tổ chức lại chương trình đó bằng cách sử dụng mảng.

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bai_21_01
{
    class Program
    {
        static void Main(string[] args)
        {
            int NamSinh; //Bien chua nam can tinh
            string[] StrCan = { "Canh", "Tan", "Nham", "Quy", "Giap", "At", "Binh", "Mau", "Ky" };
            string[] StrChi = { "Than", "Dau", "Tuat", "Hoi", "Ty", "Suu", "Dan", "Meo", "Thin", "Ty", "Ngo", "Mui" };

            Console.Write("Nhap vao nam bat ky: ");
            NamSinh = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Nam {0}  co nam an lich la {1} {2}", NamSinh, StrCan[NamSinh % 10], StrChi[NamSinh % 12]);
            Console.ReadLine();
        }
    }
}

Kết luận

Nội dung bài này giúp các bạn nắm được:

Bài sau chúng ta sẽ tìm hiểu về MẢNG 2 CHIỀU TRONG C#

Bài viết liên quan