Bài 17.1. Mảng 1 Chiều Trong C# - Khóa Học C# Không Khó 2021

Tiếp tục với series C# Không Khó. Mình sẽ giới thiệu cho các bạn kiến thức về mảng 1 chiều trong C#. Đây là một phần kiến thức tương đối khó chịu, dễ làm người học nản nhưng không kém phần quan trọng trong các bài toán lập trình. Chi tiết như thế nào, cùng tìm hiểu trong bài viết ngày hôm nay nhé !

  1. Bài toán
  2. Mảng 1 chiều trong C#
    1. Truy cập vào phần tử trong mảng
    2. Gán giá trị cho phần tử trong mảng
    3. Lặp qua các phần tử trong mảng
  3. Giải quyết bài toán bằng mảng 1 chiều trong C#
  4. Tổng kết

Bài toán

Để dễ hiểu hơn mình sẽ có một bài toán như sau: Cho 6 số nguyên lần lượt là điểm thi Toán, Văn Anh, Lý, Hóa, Sinh của một học sinh. Các giá trị lần lượt là 10, 9, 9, 10, 0.5, 8. Tính số điểm trung bình của 6 môn trên.

Bài toán trên dễ dàng được giải quyết bằng cách khai báo 6 biến kiểu thực (double) rồi lấy tổng của cả 6 biến chia 6 để ra được trung bình công. Chi tiết bài làm bằng C# như sau:

using System.IO; using System; namespace LTKK { class Program { static void Main() { double toan = 10; double van = 9; double anh = 9; double ly = 10; double hoa = 0.5; double sinh = 8; Console.Write("Trung binh cong 6 mon la: "); Console.WriteLine((toan + van + anh + ly + hoa + sinh) / 6); Console.ReadKey(); // dừng màn hình } } }

Chương trình này cho ra kết quả chính xác rằng điểm trung bình của 6 môn trên là 7.75:

Trung binh cong 6 mon la: 7.75

Bài toán này cũng sẽ được giải quyết tương tự bằng cách khai báo biến lưu trữ giá trị điểm số cho từng môn học ví dụ như các bài toán có 12, 13 môn học … Trong bài toán trên mình đã khai báo 6 biến để giả dụ người lập trình có tái sử dụng sẽ dễ dùng hơn.

Dễ dàng giải quyết là vậy vì chúng ta chỉ cần tính toán cho 6 hay 12, 13 giá trị nhưng vấn đề lúc này đặt ra là giả sử chúng ta phải tính trung bình cộng cho cả nghìn, cả triệu con số thì sao ? Vẫn cách giải quyết đó thì chúng ta phải khai báo tương đương với cả nghìn cả triệu biến để có thể lưu trữ hết lượng thông tin đó. Điều này thực sự là quá sức với một con người, bạn nào cao siêu hơn thì có thể dùng … ờm … cơ sở dữ liệu :)))

Để giải quyết vấn đề nan giải trên mình sẽ giới thiệu về mảng 1 chiều ngay sau đây.

Mảng 1 chiều trong C#

Mảng là một cấu trúc dữ liệu lưu trữ một tập hợp các giá trị với số lượng cố định và có cùng kiểu dữ liệu. Cách khai báo một mảng trong C# như sau:

<kiểu dữ liệu>[] <tên biến> = new <kiểu dữ liệu>[<số lượng phần tử>];

Mình sẽ trình bày dưới đây cách khai báo lần lượt là một mảng kiểu int gồm 10 phần tử, một mảng kiểu thực gồm 6 phần tử và một mảng kiểu char gồm 100 phần tử:

int[] a = new int[10]; double[] b = new double[6]; char[] c = new char[100];

Ngoài ra các bạn có thể khai báo cho mảng mà có sẵn giá trị như sau:

<kiểu dữ liệu>[] <tên biến> = new <kiểu dữ liệu>[] { <giá trị của từng phần tử> };

Lưu ý: Giá trị của từng phần tử ở đây phải cùng kiểu với kiểu khai báo, mỗi phần tử phân tách nhau bởi dấu ,. Độ dài của mảng sẽ tự động được tính tùy theo số lượng phần tử bạn khai báo.

Ví dụ về cách khai báo mang sẵn giá trị:

int[] a = new int[] {5, 10, 5}; char[] c = new char[] {'a', 'b', 'c', 'd'};

Truy cập vào phần tử trong mảng

Để có thể truy cập vào một phần tử ở một vị trí trong mảng ra dùng như sau:

<biến kiểu mảng>[<chỉ số>];

Lưu ý: Chỉ số ở đây sẽ bắt đầu từ 0 và kết thúc tại n – 1, nếu như các bạn cố gắng truy cập bên ngoài phạm vi chỉ số này chương trình sẽ báo lỗi.

Giả sử như chúng ta muốn truy cập vào vị trí 3 của một mảng gồm 6 phần tử ta dùng a[3], muốn truy cập vào vị trí 0 của mảng ta dùng a[0]. Nhưng không có phần tử vị trí số 6 mà thay vào đó là phẩn tử vị trí số 5. Một điều đáng mừng là, các giá trị sau khi truy cập sẽ được sử dụng như là một biến số thông thường, nó cũng có thể in ra, cũng có thể bị gán. Nói chung, nó vẫn là một biến thông thường nhưng khác một điều rằng nó nằm trong 1 mảng và chỉ được truy cập bằng chỉ số.

Gán giá trị cho phần tử trong mảng

Như đã nói ở trên, một phần tử trong mảng có thể bị gán miến là giá trị gán cho phần tử đó có cùng kiểu dữ liệu trong mảng. Đây là điểm thường thấy ở các ngôn ngữ biên dịch. Để làm được điều này ta dùng như sau:

<biến kiểu mảng>[<chỉ số>] = <giá trị>;

Lặp qua các phần tử trong mảng

Nhờ việc có thể truy cập từng phần tử thông qua chỉ số mà chúng ta có thể sử dụng vòng lặp để lặp qua mảng một cách dễ dàng hơn:

using System.IO; using System; namespace LTKK { class Program { static void Main() { int[] a = new int[10]; // khai báo mảng gồm 10 phần tử for (int i = 0; i < 10; ++i) { // lưu ý: chỉ số của mảng bắt đầu từ 0 kết thúc tại n - 1 a[i] = i * 5; // gán cho vị trí i một giá trị bằng 5 lần i Console.WriteLine(a[i]); // in ra giá trị tại phần tử thứ i } Console.ReadKey(); // dừng màn hình } } }

Vòng lặp for là vòng lặp thường thấy nhất để lặp qua các phần tử trong mảng. Ngoài ra, các bạn có thể làm tương tự với vòng lặp while hay do-while.

Kết quả chương trình trên:

0 5 10 15 20 25 30 35 40 45

Giải quyết bài toán bằng mảng 1 chiều trong C#

Khi đã rõ đôi chút về mảng 1 chiều trong C# rồi thì bài toán trên chúng ta có thể rút ngắn lại bằng cách sử dụng mảng 1 chiều.

Đầu tiên, chúng ta khai báo một mảng kiểu thực gồm 6 phần tử, giá trị của mỗi phần tử tương đương với giá trị điểm của Toán, Văn, Anh, Lý, Hóa, Sinh. Ở đây chúng ta sẽ dùng cách khai báo mang sẵn phần tử.

double[] diem = new double[] {10, 9, 9, 10, 0.5, 8};

Tiếp tục mình sẽ sử dụng một biến kiểu thực là lưu trữ tổng của cả 6 môn học, phục vụ cho việc tính trung bình công.

double tong = 0.0;

Để có thể tính tổng của cả 6 môn học mình sẽ lặp qua các phần tử trong mảng, mỗi phần tử mình cộng tổng của nó vào biến tong.

for (int i = 0; i < 6; ++i) { tong += diem[i]; }

Bước cuối cùng mình in ra trung bình cộng của cả 6 môn học bằng cách lấy tổng giá trị điểm của cả 6 môn học chia cho 6:

Console.WriteLine(tong / 6);

Chung quy lại cả chương trình như sau:

using System.IO; using System; namespace LTKK { class Program { static void Main() { double[] diem = new double[] {10, 9, 9, 10, 0.5, 8}; double tong = 0.0; for (int i = 0; i < 6; ++i) { tong += diem[i]; } Console.WriteLine(tong / 6); Console.ReadKey(); // dừng màn hình } } }

Chương trình này cho ra kết quả:

7.75

Như vậy nhờ việc dùng mảng 1 chiều trong C#, chương trình của chúng ta ngắn hơn rất nhiều. Vì lẽ đó, chúng ta có thể sử dụng tương tự với cả nghìn, cả triệu phần tử nhé. Hãy sử dụng một cách khôn ngoan vì mảng là một cấu trúc dữ liệu cực kì mạnh mẽ và ứng dụng rộng rãi.

Tổng kết

Trong bài học ngày hôm này mình đã trình bày cho các bạn về mảng 1 chiều trong C#. Bài học tiếp theo mình sẽ đi sâu hơn về phần này bằng cách trình bày cho các bạn về các thuộc tính của mảng 1 chiều, phương thức được dùng trong mảng 1 chiều để các bạn có cái nhìn tổng quan hơn sâu rộng hơn về nó nhé ! Cảm ơn bạn đã đọc bài viết này. Hãy tiếp tục ủng hộ Lập trình không khó trong các bài viết tiếp theo nhé !

(ngoài ra các bạn có thể thử sức với các bài tập sau)

  • luyencode.net – Hình Phạt
  • luyencode.net – Tìm kiếm trong mảng
  • luyencode.net – Trung bình cộng của mảng

Từ khóa » Gán Giá Trị Cho Mảng C#