SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
Bai Giang 7
1. Nội dung trình bày
• Khái niệm mảng
• Truy cập mảng
• Khởi gán giá trị cho mảng
• Duyệt mảng
• Mảng một phần
• Tìm kiếm trên mảng
2. Khái niệm mảng
• Mảng là một dãy các ô nhớ liên tiếp nhau
và có cùng kiểu dữ liệu.
• Ví dụ:
– Một mảng các số nguyên
– Một mảng lưu giữ điểm của các sinh viên
Hình ảnh mảng Hình ảnh một biến
3. Khai báo mảng
• Cú pháp:
<kiểu dữ liệu> <tên mảng>[số lượng phần tử];
• Ví dụ:
– float x[8];
Khai báo mảng x có 8 phần tử có cùng kiểu float, trong bộ nhớ
sẽ cấp phát 8 ô nhớ liền nhau và có kiểu float
x
– int diem[20]; // khai báo mảng diem có 20 phần tử kiểu int
– char kt[15]; // khai báo mảng kt có 15 phần tử kiểu char
4. Truy cập đến phần tử của mảng
• Để có thể truy cập đến một phần tử nào đó của
mảng ta cần cung cấp tên mảng và chỉ số của
phần tử. Chỉ số của mảng bắt đầu được đánh số
từ 0. 0 1 2 3 4 5 6 7
x
– Ví dụ: Khi ta viết x[4] tức là ta đang truy cập đến phần
tử thứ 5 của mảng.
• Về mặt bản chất, một phần tử của mảng có thể
được sử dụng như một biến bình thường.
5. Ví dụ truy nhập mảng
• Giả sử mảng x có giá trị như sau
x 16.0 12.0 28.0 26.0 -2.5 12.0 14.0 54.7
• Các câu lệnh truy nhập mảng
– cout<<x[0]; // Hiển thị giá trị x[0]
– x[3] = 25.5; // Gán giá trị cho x[3]
– tong = x[0] + x[1]; // Tính tổng của x[0] và x[1]
– tong += x[2]; // Cộng thêm x[2] vào biến tong
– x[3] += 1.0; // Cộng x[3] thêm 1.0
– x[2] = x[0] + x[1]; // Lấy giá trị tổng của x[0], x[1] và gán vào x[2]
6. Ví dụ truy nhập mảng
• Chỉ số mảng có thể là một biểu thức có giá trị nguyên.
• Ví dụ: cho i = 5 và mảng
x 16.0 12.0 28.0 26.0 -2.5 12.0 14.0 54.7
• Các câu lệnh
– cout<<x[i] + 1;
– cout<<x[i+1];
– cout<<x[2*i];
– cout<<x[2*i - 3];
– cout<<x[floor(x[4])];
– x[i] = x[i+1];
– x[i-1] = x[i];
7. Khai báo và khởi tạo mảng
• Cũng giống như biến thông thường, mảng có
thể được khởi tạo giá trị ngay khi khai báo
– int diem[7] = {100, 73, 88, 84, 40, 97};
diem 100 73 88 84 40 97 ?
– char xep_loai[] = {‘A’, ‘C’, ‘B’, ‘B’, ‘F’, ‘A’};
Xep_loai A C B B F A
– char ten[7] = {‘M’, ‘I’, ‘N’, ‘H’};
ten M I N H ? ? ?
8. Duyệt mảng
• Duyệt ngẫu nhiên: Các phần tử được truy cập
theo một thứ tự bất kỳ.
– Ví dụ: cin>>x[2]; cin>>x[5]; cin>>x[0];
x
truy truy truy
cập cập cập
• Duyệt tuần tự (hay dùng): Duyệt từ phần tử đầu
mảng đến phần tử cuối.
– Thường sử dụng vòng lặp theo chỉ số mảng (for).
x
9. Ví dụ duyệt mảng
• Nhập giá trị cho các một mảng số nguyên gồm
10 phần tử:
int songuyen[10];
for (int i = 0; i < 10; i++)
{
cout << “Nhap gia tri thu “ << i << “: “;
cin >> songuyen[i];
}
10. Ví dụ duyệt mảng
• Tính tổng các phần tử của một mảng số thực:
double x[5] = {5.6, 4.5, 2.3, 9.1, 4.2};
double tong = 0;
for (int i = 0; i < 5; i++)
tong = tong + x[i];
cout << “Tong la: “ << tong << endl;
11. Mảng một phần
• Sẽ có những bài toán với số lượng phần
tử không cố định làm cho người lập trình
khó xác định được ngay số phần tử của
mảng.
• Với những bài toán này ta cần phải ước
lượng và khai báo số phần tử tối đa có thể
có. Sau đó sử dụng một phần số lượng
phần tử của mảng. Đây chính là mảng một
phần.
12. Mảng một phần
• Nhược điểm của mảng một phần là sẽ có một
số vùng nhớ không dùng đến nhưng vấn chiếm
tài nguyên của hệ thống.
• Ví dụ: Bài toán quản lý điểm sinh viên trong một
lớp. Ta không xác định trước được một lớp có
bao nhiêu sinh viên, nhưng ta biết rằng một lớp
học chỉ có thể có tối đa 100 sinh viên. Vậy ta
cần phải khai báo một mảng điểm gồm 100
phần tử.
13. Mảng một phần
• Với bài toán phải sử dụng đến mảng một
phần ta cần chú ý phải thêm 1 biến làm
nhiệm vụ đến số phần tử thực tế đang
được sử dụng trong mảng.
• Chú ý: Ta không được phép viết như sau:
int n;
cin>>n;
float a[n];
14. Nhập dữ liệu cho mảng một phần
• Ví dụ:
int n;
float diem[100];
cout << “Nhap so luong phan tu: “; cin >> n;
for (int i = 0; i < n; i++)
{
cout << “Nhap diem[“ << i << “]: “;
cin >> diem[i];
}
15. Tìm kiếm trên mảng
• Thực tế bài toán tìm kiếm trên mảng cũng
sử dụng phương pháp duyệt mảng. Tuy
nhiên trong lúc duyệt ta sẽ trích rút ra
những thông tin cần tìm kiếm.
• Ví dụ:
– Bài toán tìm vị trí của phần tử đầu tiên mang
giá trị 5 trong một mảng số nguyên.
– Bài toán tìm số lớn nhất trong mảng.
16. Ví dụ tìm kiếm trên mảng
• Bài toán tìm vị trí của phần tử đầu tiên mang giá
trị 5 trong một mảng số nguyên.
for (int i = 0; i < n; i++)
if (x[i] == 5)
{
cout << “Vi tri cua phan tu la: “ << i << endl;
break;
}
17. Ví dụ tìm kiếm trên mảng
• Bài toán tìm số lớn nhất trong mảng số
nguyên
int max = x[0];
for (int i = 1; i < n; i++)
if (max < x[i])
max = x[i];
cout << “Gia tri lon nhat la: “ << max << endl;
18. Làm bài tập
• Các bài tập về duyệt mảng
– Tính tổng các phần tử của mảng.
– Đếm xem trong mảng có bao nhiêu số lẻ, bao nhiêu
số chẵn
• Các bài tập về tìm kiếm trên mảng
– Đưa ra màn hình phần tử lớn nhất và nhỏ nhất của
mảng.
– Tìm trong mảng số nguyên có những số nào là số
nguyên tố thì hiện lên màn hình.
• Chú ý: Các bài tập trên nên sử dụng mảng một
phần.