Bài 14
mảng hai chiều
Giáo án điện tử tin học lớp 11
GV Đinh Nguyên Thanh Tú
Sưu tầm và giới thiệu tại CENTEA Data
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.
A
Trong đó:
Khi tham chiếu đến phần tử ở dòng i cột j ta viết: A[i,j]. Ví dụ: A[2,3]= 8.
? Tên mảng: A;
? Mảng gồm: 3 dòng 4 cột;
Ví dụ:
? Kiểu dữ liệu của các phần tử: Kiểu nguyên;
7
9
3
5
3
8
2
9
6
7
4
1
1 2 3 4
1
2
3
1. Khái niệm
2. Khai báo mảng hai chiều
* Cách 1: Khai báo gián tiếp
TYPE < tên kiểu mảng> = array[kiểuchỉ số dòng,kiểu chỉ số cột] of ;
Var : ;
Ví dụ: TYPE Bang = array[1..9,1..9] of integer;
Var A: Bang;
* Cách 2: Khai báo trực tiếp
Var < Ds biếnmảng> : array[Kiểu chỉ số dòng,kiểu chỉ số cột] of ;
Var A,B: array[1..20,1..30] of real;
Ví dụ: Var Bang: array[1..9,1..9] of integer;
3. Các thao tác xử lí trong mảng hai chiều
1. NhËp sè dßng (n) vµ sè cét (m).
Write(‘ Nhap vao so dong, cot:’);
Readln(n,m);
2. Nhập vào giá trị của các phần tử
trong mảng (A[i,j]).
For i:= 1 to n do
For j:=1 to m do
Begin
write(‘A[’,i,j,’ ] = ’ );
readln(A[i,j]);
end;
Các bước:
Thể hiện bằng pascal
a. Nhập mảng hai chiều
A
7
9
3
5
3
8
2
9
6
7
4
1
b. In mảng hai chiều
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do
Begin
For j:=1 to m do Write(A[i,j],’ ’);
Writeln;
end;
Mang vua nhap:
1 4 7 6
9 2 8 3
5 3 9 7
1. Th«ng b¸o
2. In gi¸ trÞ cña c¸c phÇn tö
Kết quả in ra màn hình:
Các thao tác xử lí mảng hai chiều thường dùng hai câu lệnh FOR...do lồng nhau.
For i :=1 to 9 do
For j:=1 to 9 do
A[i,j] := i*j;
c. Các thao tác xử lí khác
Ví dụ: Tính và in ra màn hình bảng cửu chương.
For i :=1 to 9 do
Begin
For j:=1 to 9 do write(A[i,j]:5);
writeln; writeln;
End;
Bây giờ các em hãy viết chương trình hoàn chỉnh
cho bài toán ví dụ nhé ?
* Tính
* IN ra màn hình
Quan sát bảng cửu chương ta thấy:
A[2,5]=2 x 5 = 10
A[5,8]=5 x 8 = 40
A[i,j]=i*j
Hãy nhớ !
? 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.
? Khai báo: tên mảng, kiểu chỉ số dòng, kiểu chỉ số cột, kiểu phần tử.
? Tham chiếu phần tử mảng:
Tên biến mảng[cs dòng,cs cột]
? Thao tác xử lí thường dùng cấu trúc hai câu lệnh FOR . DO lồng nhau.
20 19
25 18
12 16
Var
A:ARRAY[1..10,1..10] OF integer;
A[1,3] = 19
nguon VI OLET