Nội dung lý thuyết
BÀI 11. KIỂU MẢNG
- Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử.
- Với mảng một chiều ta quan tâm đến:
- Cách 1: Khai báo trực tiếp:
VAR <tên biến mảng>: ARRAY [kiểu chỉ số] OF <kiểu phần tử>;
- Cách 2: Khai báo gián tiếp
TYPE <tên kiểu mảng> = ARRAY [kiểu chỉ số] OF <kiểu phần tử>;
VAR <tên biến mảng> : <tên kiểu mảng>;
- Trong đó:
- Ví dụ 1:
- Ví dụ 2: Khai báo mảng tối đa 100 số nguyên (chỉ số đầu tiên là 1)
=> Ta có các cách sau:
Const Nmax = 100;
Var a: Array[1..Nmax] Of integer;
- Để tham chiếu tới phần tử của mảng ta gọi theo cấu trúc: Tên_biến[chỉ số]
VD: Tham chiếu đến phần tử thứ 20 trong mảng A ta viết A[20].
- Bài 1: Viết CT tạo mảng A gồm N (N\(\le\)100) số nguyên. Tính tổng các phần tử của mảng là bội của một số nguyên dương k cho trước.
Var S, n, k, i: integer;
A: array[1..100] of integer;
Begin
Write(‘Nhap n = ’);
readln(n);
{tao mang}
For i:=1 To n Do
begin
write(‘phan tu thu ’,i,’ =’);
readln(A[i]);
end;
write(‘Nhap k = ’);
readln(k);
S:= 0; {khoi tao S ban dau}
{tinh tong}
For i:=1 To n Do
If A[i] mod k = 0 Then S:= S + A[i];
Writeln(‘Tong can tinh la ’, S);
End.
Xét bài toán: Bảng nhân: Hãy viết chương trình in ra bảng nhân như sau
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
27 |
30 |
4 |
8 |
12 |
16 |
20 |
24 |
28 |
32 |
36 |
40 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
60 |
7 |
14 |
21 |
28 |
35 |
42 |
49 |
56 |
63 |
70 |
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
80 |
9 |
18 |
27 |
36 |
45 |
54 |
63 |
72 |
81 |
90 |
=> Các bước cần thực hiện khi sử dụng mảng 1 chiều để thực hiện bài toán trên:
- Cần sử dụng 9 mảng 1 chiều, mỗi mảng lưu 1 hàng của bảng nhân => Khai báo 9 biến mảng
=> Nhược điểm: Phải khai báo nhiều biến, chương trình phải viết nhiều lệnh để tạo và in giá trị của mảng.
=> Giải pháp: Coi mỗi mảng một chiều là 1 phần tử và ghép 9 mảng 1 chiều trên thành 1 mảng 2 chiều.
* Khái niệm mảng hai chiều:
- Mảng hai chiều là mảng một chiều mà mỗi phần tử của nó lại là mảng một chiều.
- Mảng hai chiều là bảng các phần tử cùng kiểu
* Các yếu tố xác định mảng hai chiều:
- Có hai cách khai báo biến mảng 2 chiều:
VAR <tênbiếnmảng>: ARRAY [kiểu chỉ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>;
TYPE <tên kiểu mảng> = ARRAY [kiểu chỉ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>;
VAR <tên biến mảng> : <tên kiểu mảng>;
TÊN_BIẾN[chỉ số hàng, chỉ số cột]
- Ví dụ 1: Viết chương trình tạo và in mảng hai chiều gồm m hàng, n cột.
program Tao_in_mang;
var i, j, m, n: integer;
A: array[1..100,1..100] of integer;
begin
write('Nhap so hang m = '); readln(m);
write('Nhap so cot n = '); readln(n);
{Tạo mảng}
for i:= 1 to m do for j:= 1 to n do
begin
write('Nhap A[',i, ',',j,']=');
readln(A[i, j]);
end;
{In mảng}
for i:= 1 to m do
begin
for j:= 1 to n do write(A[i, j]:4);
writeln;
end;
readln;
end.