You are on page 1of 27

BÀI 5:

KIỂU MẢNG (ARRAY)


2
Nội dung:
1. Khai báo và tạo mảng 1 chiều
2. Truy xuất các phần tử trong mảng 1 chiều
3. Nhập DL vào mảng và xuất DL từ mảng
4. Xử lý mảng 1 chiều dùng for và foreach
5. Mảng 2 chiều và mảng nhiều chiều
6. Sao chép mảng

BUSINESS INFORMATION TECHNOLOGY


Khai báo và tạo mảng
1 chiều
4
Mảng là gì?
 Mảng là dãy các phần tử có cùng tên, cùng
kiểu.
 Thứ tự của các phần tử là cố định
 Kích thước/số phần tử của mảng là cố định.
Phần tử

mảng có 0 1 2 3 4 Chỉ số
5 phần
tử … … … … …

BUSINESS INFORMATION TECHNOLOGY


5
Khai báo mảng 1 chiều
<kiểu DL> [ ] <tên mảng>;
 Ngoặc vuông [] nghĩa là mảng
 Ví dụ:
 Khai báo mảng số nguyên:
int [] A;
 Khai báo mảng chuỗi:
string [] ten;
 Khai báo mảng số thực:
float [] luong;

BUSINESS INFORMATION TECHNOLOGY


6
Tạo mảng
<tên mảng> = new <kiểu DL> [số p.tử]

 Ví dụ tạo mảng A có 5 phần tử nguyên:


A = new int[5];

0 1 2 3 4
A … … … … …

BUSINESS INFORMATION TECHNOLOGY


7
Tạo và gán giá trị cho mảng
 Tạo và gán giá trị cho mảng có thể làm đồng
thời:
A = {2, 4, 6, 8, 10};

0 1 2 3 4
A 2 4 6 8 10

 Toán tử new không cần thiết khi sử dụng dấu


ngoặc nhọn khởi tạo mảng.

BUSINESS INFORMATION TECHNOLOGY


Ví dụ: Tạo mảng 8

 Tạo mảng chứa tên của các thứ trong


tuần
string[] daysOfWeek =
{"Monday","Tuesday","Wednesday","Thursday",
"Friday","Saturday","Sunday"};

BUSINESS INFORMATION TECHNOLOGY


Truy xuất các phần tử
của mảng
Làm thế nào để truy xuất phần tử mảng?10
 Các phần tử trong mảng được truy xuất thông
qua các chỉ số được đặt trong cặp dấu ngoặc
vuông [] (indexer)
 Mảng A có n phần tử thì khi truy xuất ta có thể viết
A[i] với i = 0 --> n-1
 Chiều dài/số phần tử của mảng A là A.Length
 Phần tử đầu tiên có chỉ số là 0
 Phần tử cuối cùng có chỉ số A.Length-1

BUSINESS INFORMATION TECHNOLOGY


11
Ví dụ
 Tạo mảng b là đảo ngược nội dung mảng a
int[] a = new int[] {1,2,3,4,5,6,7,8,9,10};
int n = a.Length; //n là chiều dài của mảng a

// Khai báo mảng b


int[] b = new int[n];

// Gán giá trị cho mảng b và in ra


for (int i = 0; i < n; i++)
{
b[i] = a[n-i-1];
Console.Write(b[i]+ " ");
}

BUSINESS INFORMATION TECHNOLOGY


Mảng: Nhập và xuất dữ liệu
13
Đọc dữ liệu từ bàn phím vào mảng
 Đầu tiên nhập từ bàn phím chiều dài của mảng
Console.Write("Nhap so phan tu cua mang: ");
int n = int.Parse(Console.ReadLine());

 Kế tiếp, khai báo mảng có kích thước đã nhập và


nhập số liệu cho các phần tử của mảng
int[] a = new int[n];
for (int i=0; i<n; i++)
{
a[i] = int.Parse(Console.ReadLine());
}

BUSINESS INFORMATION TECHNOLOGY


14
Ví dụ:
 Đọc mảng nguyên có n phần tử từ bàn phím và
kiểm tra nó có đối xứng không?

1 2 2 1 1 2 3 2 1 1 2 3 3 2 1

bool dx = true;
for (int i=0; i<(a.Length+1)/2; i++)
{ if (a[i] != a[n-i-1])
{
dx = false;
}
}

BUSINESS INFORMATION TECHNOLOGY


15
In mảng ra màn hình
 Xử lý các phần tử của mảng
 In các phần tử ra màn hình
 Tách các phần tử bằng khoảng trắng
hoặc in xuống dòng
string[] a = {"one", "two", "three", "four", "five"};

for (int i = 0; i < a.Length; i++)


{
// In mỗi phần tử mảng a trên mỗi dòng riêng biệt
Console.WriteLine("a[{0}] = {1}", i, a[i]);
}

BUSINESS INFORMATION TECHNOLOGY


Truy xuất các phần tử
của mảng dùng
for và foreach
17
Xử lý mảng: lệnh for
 Dùng vòng lặp for để xử lý mảng khi:
 Cần theo dõi các chỉ số
 Xửlý không nhất thiết theo trình tự từ phần đầu đến
phần cuối
 Trong thân vòng sử dụng phần tử của mảng thông
qua chỉ số vòng lặp (<tên mảng>[<chỉ số>]):

for (int i = 0; i < a.Length; i++)


{
b[i] = a[i] * a[i];
}

BUSINESS INFORMATION TECHNOLOGY


18
Ví dụ:
 In mảng số nguyên đảo ngược thứ tự
Console.WriteLine("Mang dao nguoc: ");
for (int i = a.Length-1; i >= 0; i--)
{
Console.Write(a[i] + " ");
}
// Kết quả: 10 9 8 7 6 5 4 3 2 1

 Tạo các phần tử của mảng bằng các chỉ số nhân với 5.
for (int i = 0; i < a.Length-1; i++)
{
a[i] = i * 5;
}

BUSINESS INFORMATION TECHNOLOGY


19
Xử lý mảng: lệnh foreach
 Cú pháp:
foreach (<kiểu DL> <tên biến> in <tên mảng>)
{
<lệnh>;
}
 Sử dụng khi không dùng chỉ mục
 Tất cả các phần tử được truy xuất cùng một cách
 Các phần tử không thể được cập nhật (read only)

BUSINESS INFORMATION TECHNOLOGY


Ví dụ: 20
 In tất cả các phần tử của mảng chuỗi:
string[] thudo =
{
"Ha Noi",
"Washington",
"London",
"Paris",
"Moscow"
};
foreach (string td in thudo)
{
Console.WriteLine(td);
}

BUSINESS INFORMATION TECHNOLOGY


Ví dụ: 21
 Incác hàng dấu * tương ứng với các giá trị của
mảng:

BUSINESS INFORMATION TECHNOLOGY


22
Tóm tắt
 Mảng là một dãy các phần tử cùng kiểu, có độ
dài cố định.
 Các phần tử của mảng có thể được truy xuất
thông qua chỉ số
 Có thể đọc và cập nhật
 Việcxử lý các phần tử trong mảng có thể được
thực hiện với các vòng lặp for và foreach

BUSINESS INFORMATION TECHNOLOGY


23
Bài tập ở lớp (1)
1. Viết một chương khai báo mảng gồm 20 số
nguyên và khởi tạo mỗi phần tử bằng chỉ số của
nó nhân với 10. In mảng ra màn hình
2. Viết chương trình tìm số lớn nhất, nhỏ nhất
trong mảng

BUSINESS INFORMATION TECHNOLOGY


24
Bài tập ở lớp (2)
3. Viết chương trình sắp xếp một mảng các số
nguyên sử dụng thuật toán merge sort
(Wikipedia).
4. Viết một chương trình tìm tất cả các số nguyên
tố trong khoảng [1 ... 10 000 000]. Sử dụng
thuật toán sàng Eratosthenes (tìm trong
Wikipedia).

BUSINESS INFORMATION TECHNOLOGY


25
Bài tập ở lớp (3)
5. Viết chương trình đọc hai số N và K và tạo ra tất cả
các kết hợp của các phần tử K từ tập [1..N].
Ví dụ: N = 3, K = 2  {1, 1}, {1, 2}, {1, 3}, {2, 1},
{2, 2}, {2, 3}, {3, 1}, {3, 2}, {3, 3}
6. Viết chương trình đọc hai số N và K và tạo ra tất cả
các kết hợp của các phần tử K khác biệt từ tập
[1..N]. Ví dụ:
N = 5, K = 2  {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 3},
{2, 4}, {2, 5}, {3, 4}, {3, 5}, {4, 5}

BUSINESS INFORMATION TECHNOLOGY


Bài tập về nhà 26

 Làm các bài tập trong file BaiTapMang.docx


trừ các bài đã sửa trên lớp

BUSINESS INFORMATION TECHNOLOGY

You might also like