Bài giảng Tin học đại cương - Bài 7: Mảng một chiều, hai chiều - Nguyễn Thị Phương Thảo

TIN ĐẠI CƯƠNG  
MẢNG MỘT CHIỀU,  
HAI CHIỀU  
Nguyễn Thị Phương Thảo  
Bộ môn KTMT và M, Khoa CNTT  
Trường Đại học Thủy Lợi  
1
Nội dung chính  
1. Khái niệm mảng một chiều  
2. Khai báo mảng  
3. Sử dụng mảng  
4. Bài tập  
5. Mảng 2 chiều  
2
1. Khái niệm mảng một chiều  
. Ví dụ: Nhập dữ liệu điểm môn Tin học đại  
cương cho 120 sinh viên lớp N03. Đếm và hiển  
thị ra màn hình các điểm thi trên 8.  
. Sử dụng 120 biến phân biệt d1, d2,. . ., d120  
để lưu trữ và xử lí điểm thicó các nhược điểm  
- Việc quản lí các biến không dễ dàng  
- Khó sử dụng cấu trúc lặp  
- Không tổng quát, khó nâng cấp chương trình  
→ Giải pháp:sử dụng kiểu dữ liệu mảng  
3
Mảng  
. Mảng là một dãy hữu hạn các phần tử có  
cùng kiểu dữ liệu và chiếm một vùng liên tục  
trong bộ nhớ  
. Các phần tử của mảng được truy cập thông  
qua chỉ số của chúng (index)  
. Ví dụ : Mảng A gồm 5 giá trị nguyên kiểu int.  
Các phần tử được đánh số từ 0 đến 4.  
4
2. Khai báo mảng  
. Cú pháp :  
<kiểu dữ liệu> <tên mảng>[<số phần tử>];  
. Ví dụ :  
.
int A[5];  
//mảng A có 5 phần tử dạng int  
.
float B[10]; //mảng B có 10 phần tử dạng float với chỉ số  
từ 0 đến 9  
. <số phần tử> là một hằng  
5
Khai báo mảng  
. Có thể gán giá trị ban đầu cho các phần tử của mảng khi  
khai báo mảng bằng cách đặt các giá trị trong hai dấu { }  
. Ví dụ :  
.
.
int A[5] = {100, 34, 23, 213, 500 };  
int A[ ] = {100, 34, 23, 213, 500 } ; //không chỉ định cỡ của  
mảng → khai báo mảng với cỡ đủ để chứa các giá trị khởi tạo  
.
int A[5] = {100, 34, 23 } ; //điền các giá trị này từ đầu mảng,  
điền phần còn lại với giá trị 0  
6
3. Sử dụng mảng  
. Sử dụng chỉ số đặt trong cặp dấu [ ] để truy cập đến từng  
phần tử trong mảng : <tên mảng>[<chỉ số>]  
int A[5] = {100, 34, 23, 213, 500 };  
→
A[0] = 100, A[1] = 34, A[2] = 23, A[3] = 213, A[4] = 500  
. Có thể thao tác với các phần tử của mảng như thao tác với  
một biến thông thường  
.
.
A[0] -= 9; →  
A[3] *= 2; →  
A[0] = 91  
A[3] = 426  
. Chỉ số có thể là một biến nguyên hoặc một biểu thức  
nguyên  
.
size = 5; → A[size-1] = 500 //phần tử cuối cùng của mảng  
.
A[size/2] = A[2] = 23  
7
Chú ý  
. Kích thước mảng phải cố định (mảng tĩnh)  
. Mảng không thể thay đổi kích thước trong quá trình chương  
trình chạy  
. Có thể dùng hằng có tên để chỉ định kích thước mảng  
Trình biên dịch không báo lỗi vì  
kich_thuoc là hằng. Mảng a có 10  
phần tử.  
Trình biên dịch báo lỗi vì  
kich_thuoc là biến có thể  
thay đổi giá trị  
8
Chú ý  
. Chỉ số được đánh số từ 0 đến size-1.  
. C++ "cho phép" vượt ra khỏi miền, trình biên  
dịch không phát hiện ra lỗi này.Trong trường hợp  
này  
Kết quả không đoán trước được  
Lập trình viên phải tự kiểm soát miền của chỉ  
số  
. Lỗi hay gặp :  
float diemthi[120];  
diemthi[120] = 8.5; //chỉ số 120 nằm ở ngoài  
miền  
9
MỘT SỐ THAO TÁC CƠ BẢN VỚI MẢNG  
. Nhập dữ liệu cho mảng  
. In các giá trị của mảng ra màn hình  
10  
Một số bài toán với mảng  
. Nhập, xuất dữ liệu của mảng  
. Tính tổng các phần tử của mảng (các phần tử  
thỏa mãn điều kiện cho trước)  
. Đếm số các phần tử dương, các phần tử chia  
hết cho 1 số nào đó  
11  
Một số bài toán với mảng  
. Tìm một phần tử x trong mảng  
. Tìm phần tử lớn nhất/nhỏ nhất và vị trí của  
chúng trong mảng  
. Sắp xếp mảng theo thứ tự tăng dần/giảm  
dần  
. Tìm phần tử xuất hiện nhiều nhất trong mảng  
12  
TÌM PHẦN TỬ LỚN NHẤT CỦA MẢNG  
Trong trường hợp mảng có nhiều số bằng nhau và lớn  
nhất thì các vị trí được hiển thị như thế nào?  
13  
SẮP XẾP MẢNG THEO THỨ TỰ TĂNG  
14  
4. BÀI TẬP  
Bài 1: Nhập vào một dãy 10 số thực. Hiển thị dãy số  
đó trên màn hình.  
Bài 2: Nhập vào một dãy 10 số nguyên và một số  
nguyên n. Đếm và chỉ ra vị trí các phần tử của dãy có  
giá trị  
. Bằng n.  
. Nhỏ hơn n.  
. Là ước số của n.  
Bài 3: Nhập vào một dãy 10 số thực. Tìm phần tử nhỏ  
nhất và vị trí của nó trong dãy số.  
15  
5. MẢNG HAI CHIỀU  
5.1. Khái niệm mảng hai chiều  
. Mảng hai chiều là sự mở rộng của mảng một  
chiều. Về bản chất, nó là một danh sách các  
mảng một chiều.  
. Các phần tử của mảng 2 chiều được truy cập  
thông qua hai chỉ số của chúng  
. Ví dụ : Mảng A gồm 3*5 phần tử được biểu  
diễn như sau  
16  
5.2. Khai báo mảng 2 chiều  
. Cú pháp :  
<kiểu dữ liệu> <tên mảng>[số hàng] [số cột];  
Ví dụ :  
int A[3][5];  
//mảng A có 3*5 phần tử dạng int  
. Truy cập đến các phần tử trong mảng :  
<tên mảng>[<chỉ số hàng>] [<chỉ số cột>]  
Ví dụ : A[1][2] = 8;  
17  
Khai báo mảng 2 chiều (tiếp)  
. Có thể gán giá trị ban đầu cho các phần tử của mảng  
khi khai báo mảng  
Ví dụ :  
int A[3][5] = {  
{0, 1, 2, 3, 4} ,  
{5, 6, 7, 8, 9} ,  
{10, 11, 12, 13, 14}  
//hàng thứ nhất  
//hàng thứ hai  
//hàng thứ ba  
};  
Hoặc:  
int A[3][5] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};  
Hai cách làm trên là tương đương  
18  
5.4. Sử dụng mảng 2 chiều  
◮
Tương tự như mảng một chiều, chỉ khác là có hai chỉ số  
đặt trong hai cặp dấu [ ]  
◮
Nhắc lại :  
◮
kích thước mảng phải cố định  
◮
chỉ số được đánh số từ 0  
◮
lập trình viên phải tự kiểm soát miền của chỉ số vì trình biên  
dịch không báo lỗi khi chỉ số vượt ra khỏi miền  
19  
5.5. Một số thao tác cơ bản  
. Nhập dữ liệu cho mảng 2 chiều  
. In các giá trị của mảng ra màn hình  
20  
Tải về để xem bản đầy đủ
pdf 22 trang yennguyen 18300 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 7: Mảng một chiều, hai chiều - Nguyễn Thị Phương Thảo", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_7_mang_mot_chieu_hai_chieu_n.pdf