Kiểu mảng hai chiều a Xét bài toán: Bảng nhân... Với kiến thức về mảng một chiều đã học, em hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng nhân?. -Sử dụng 9 mảng một chiều, mỗi mản
Trang 2KIỂM TRA BÀI CŨ
Em hãy nêu cấu trúc tổng quát khai báo mảng 1 chiều? Lấy
ví dụ?
Đáp á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>;
Trang 31 2 3 4 5 6 7 8 9 10
Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
a) Xét bài toán: Bảng nhân
Trang 4Với kiến thức về mảng một chiều đã học, em hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng nhân?
-Sử dụng 9 mảng một chiều, mỗi mảng lưu một hàng của bảng
-Khai báo 9 biến mảng một chiều
- 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
Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
a) Xét bài toán: Bảng nhân (sgk)
Với cách lưu trữ như vậy, ta phải khai
báo bao nhiêu biến mảng?
Khai báo như vậy có những
hạn chế nào?
Trang 5Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
a) Xét bài toán: Bảng nhân
* Khái niệm mảng hai chiều: Là bảng các phần tử cùng kiểu
Em hãy nhắc lại để mô tả mảng một chiều cần xác định các yếu tố nào?
*Các yếu tố cần xác định để mô tả kiểu mảng hai chiều:
Tên mảng hai chiều
Số lượng các phần tử của hàng và cột
Kiểu của các phần từ
Cách khai báo biến mảng
Cách tham chiếu đến phần tử của mảng
* Ví dụ: Khai báo biến mảng 2 chiều B để lưu trữ
bảng nhân:
Var B: array [1 9] of array [1 10] of integer;
Hoặc khai báo ngắn gọn:
Var B: array [1 9,1 10] of integer;
Trang 6Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
b) Cách khai báo: Tổng quát khai báo biến mảng 2 chiều trong Pascal
♦ C1: Trực tiếp:
Var <tênbiếnmảng>:array [kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu
phần tử>;
♦ C2: Gián tiếp:
Type <tên kiểu mảng> = array[kiểu chỉ số hàng, kiểu chỉ số cột] of
<kiểu ptử>;
Var <tên biến mảng>:<tên kiểu mảng>;
*Trong đó:
- Type, var, of, array là các từ khoá.
- tến biến mảng, tên kiểu mảng do người lập trình đặt.
- KCSH, KCSC: [n1 n2,n1’ n2’] là 2 đoạn nguyên liên tiếp với n1≤n2; n1’≤n2’; n1, n1’ có thể giống hoặc có giá trị khác nhau; n1, n2, n1’, n2’ là hằng hoặc biểu thức có giá trị nguyên.
Ví dụ1: Khai báo biến mảng A để lưu trữ mảng gồm 5 dòng 7
cột các phần tử thuộc kiểu nguyên
+C1: Trực tiếp:
Var A : array[1 5,1 7] of Integer;
+ C2: Gián tiếp:
Type Mang1=array[1 5,1 7] of Integer;
Var A : Mang1;
Trang 7V í dụ 2: Nhận biết đúng/sai của các khai báo sau:
a, Type
mang1=array[-5 50, 1 10]of Integer;
Var A:mang1;
b Type
mang2 = array[10 1,1 15] of char;
Var E:Mang;
c, Var C: array[0 3*2n, 0 n] of Integer;
d, Var D:array[1.5 10, 2 10] of real;
Đáp án: Đúng ý a, c
Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
b) Cách khai báo
Mang
1
Trang 8Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
c.Tham chiếu đến một phần tử của mảng hai chiều
?
Em hãy nhắc lại cách tham chiếu phần tử của mảng một chiều
Tênbiến[chỉ số hàng,chỉ số cột]
Ví dụ1: B[2, 5]
Có nghĩa là tham chiếu đến phần tử ở
hàng thứ 2 cột 5của bảng nhân
Trang 9Tiết 23 ξ 11 KIỂU MẢNG
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
A[5,7]
2 Kiểu mảng hai chiều
c.Tham chiếu đến một phần tử của mảng hai chiều
Tênbiến[chỉ số hàng,chỉ số cột]
Ví dụ2: B[5, 7]
Trang 10d ví dụ
Chương trình sau đưa ra màn hình bảng cửu chương
Program cuuchuong;
Uses crt ;
var A : Array[1 9,1 10] of Integer ;
i, j : Byte ;
Begin
Clrscr ;
Writeln('Bang cuu chuong 1 -> 9 : ');
Writeln ;
For i := 1 to 9 do {Tính các phần tử của bảng nhân} For j := 1 to 10 do
A[i,j] := i*j ;
For i := 1 to 9 do {In các phần tử của bảng nhân} Begin
For j := 1 to 10 do Write(a[i,j]:4);
Writeln ;
Writeln ;
End ;
Readln ;
End
Tiết 23 ξ 11 KIỂU MẢNG
2 Kiểu mảng hai chiều
Trang 11H·y nhí!
Mảng hai chiều là bảng các phần
tử cùng kiểu
Khai báo: Tên mảng, chỉ số đâù và
chỉ số cuối của mỗi chiều, kiểu phần tử
Tham chiếu phần tử mảng hai
chiều:
Tên biến mảng[chỉ số dòng, chỉ
số cột]
Nhiều thao tác xử lý mảng dùng
cấu trúc lặp FOR TO DO.
Var A:ARRAY[1 10,1 20]
OF integer;
A[1,4] = 0
Trang 12 Câu hỏi và bài tập về nhà:
79 SGK
(sgk - 63)