Bài 17.1. Mảng 1 chiều trong C#

0
95
Bài số 21 trong 21 bài của khóa học Khóa học C# cơ bản

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é !

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:

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:

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:

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

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

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ị:

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:

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:

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:

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:

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

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.

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

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:

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

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

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)

Các bài viết trong khóa họcBài trước: Bài 16. Tham trị và tham chiếu, từ khóa ref, out trong C#
Là một học sinh cấp 3 có niềm đam mê mãnh liệt với lập trình.
Theo dõi
Thông báo của
guest
0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận