Mảng dữ liệu là tập hợp tất cả các phẩn tử có chung một kiểu dữ liệu.

Mảng giúp chúng ta có thể lưu giữ các biến có cùng kiểu giữ liệu, không phải khai báo từng biến một bằng cách thủ công, tốn công sức

Mảng có thể chứa rất nhiều mục dữ liệu(phần tử) nhưng kíc thước cần phải được khai báo khi mảng được tạo ra (trước khi được sử dụng)

Mỗi phần tử trong một mảng được truy cập(gán hoặc lấy giá trị) thông qua chỉ mục .

Chỉ mục(index) là một con số chỉ ra vị trí của phần tử được lưu trữ trong mảng . Chỉ mục được đánh số bắt đầu là 0 phần tử thứ 2 sẽ có chỉ số là 1 …cho đến khi chỉ số thứ n sẽ có chỉ số lad n-1.

Giả thiết ta có 1 mảng với kích thước là 50, trong đó chứa thông tin là tên của các nhân viên. Bạn có thể liên tưởng như hình vẽ sau

 

      news6_Csharp_hinh1

 

 

Như vậy ta thấy trong phạm vi của mảng các phần tử phân biệt với nhau dựa vào chỉ số ,  phần dữ liệu chính là dữ liệu chứa trong mỗi phần tử thuộc mảng .

 

Mảng một chiều

 

Kiểu_dữ_liệu[] tên_mảng = new  Kiểu_dữ_liệu[số_phần_tử] ;

 

Ví dụ :  int[] a = new  int[5];

   Kiểu dữ liệu là int có nghĩa trong mảng này chỉ chứa được kiểu dữ liệu int chứ không chứa được kiểu dữ liệu khác .

  a là tên mảng  và 5 là số phẩn tử có nghĩa là mảng này được tạo ra có 5 phần tử (a0 , a1 , a2 , a3 ,a4).

 

Khởi tạo các phần tử của mảng

Chúng ta có thể khởi tạo các phần tử của một mảng ngay lúc khai báo mảng bằng cách đặt những giá trị bên trong dấu ngoặc ({}). C# cung cấp hai cú pháp để khởi tạo các thành phần của mảng, một cú pháp dài và một cú pháp ngắn:

   

int[] b = new int[5]{ 1, 3, 5, 7, 9 };

Hoặc 

int[] c = { 1, 3, 5, 7, 9 };

 

Không có sự khác biệt giữa hai cú pháp trên, và hầu hết các chương trình đều sử dụng cú pháp ngắn hơn do sự tự nhiên và lười đánh nhiều lệnh của người lập trình.

 

 

 

Mảng nhiều chiều trong C#

Ở đây ta có thể liên tưởng một chút nếu mảng một chiều là một hàng các ô nhớ thì mảng hai chiều như một bàn cờ và mảng ba chiều như một khối rubik 

 

Ví dụ  :    int[ , ] a = new  int[2 ,3];

 

Ta có thể thấy dấu phẩy [ , ] phần  int[ , ]  một dấy phẩy phân cấp có nghĩ trong mảng này có hai chiều . và mỗi chiều có ba phần tử

và tiếp theo ta gán cho nó .

  a[0,0] = 5 ;   a[0,1] = 3 ;   a[0,2] = 9 ;   

   a[1,0] = 1 ;   a[1,1] = 7 ;   a[1,2] = 6 ;

 

Và ta sẽ được một mảng như sau :

                                       1

 

Ta có ví dụ về mảng hai chiều: Điêm trung bình của một học sinh bao gồm 3 môn và mỗi môn sẽ có 5 điểm

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication22
{
class Program
{
static void Main(string[] args)
{
float[,] diem = new float[35];

Console.WriteLine("Nhap diem cho hoc sinh ");
for (int = 1; i < 4; i++)
{
Console.WriteLine("Nhap diem cho mon thu {0}", i );
for (int = 1; j < 6; j++)
{
Console.Write("Nhap diem thu {0}: ", j );
diem[i, j] = float.Parse(Console.ReadLine());
}
}
Console.WriteLine("\n\tDiem1\tDiem2\tDiem3\tDiem4\tDiem5\n");
for (int = 1; i < 4; i++)
{
Console.Write("Mon{0}\t", i );
for (int = 1; j < 6; j++)
Console.Write(diem[i, j] + "\t");
Console.WriteLine();
}
Console.ReadLine();
}
}
}

 

 

Nếu ta sử dụng nhiều chiều hơn thì ta sẽ làm như  sau 

                                int[ , , ] a = new  int[2 ,3 ,4];

 

Mảng lơm chởm (jagged array)

 Mảng lởm chởm (jagged array) là mảng một chiều trong đó mỗi phẩn tử lại là một mảng một chiều khác(Mảng con) . Các mảng con này có kích thước (số phần tử ) khác nhau (Nếu các mảng con có kíc thước giống nhau thì nó sẽ trở thành mảng hai chiều).

                                        2

 

 

Ta viết như sau :

     int [][] a = new int[3][]; 

     

Ta đã tạo ra mảng hai chiều chiều đầu bằng 3 còn chiều sau thì chưa biết . 

Ta sẽ khởi tạo số phần tử cho các chiều con như sau : 

      a[0] = new int[5]; 

      a[0] = new int[4]; 

      a[0] = new int[2]; 

 

Ví dụ yêu cầu: viết 1 chương trình cho phép nhập vào tên của 5 người , sau đó sắp xếp danh sách tăng dần và in ra màn hình

 

 news6_Csharp_hinh11

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

NO COMMENTS

LEAVE A REPLY


*