Kiểu mảng tiếp MẢNG HAI CHIỀU A - Mục đích, yêu cầu - Học sinh cần nắm được cách khai báo dữ liệu mảng hai chiều - Học sinh cần có các kĩ năng: + Nhận biết được các thành phần trong k
Trang 1Kiểu mảng (tiếp) MẢNG HAI CHIỀU
A - Mục đích, yêu cầu
- Học sinh cần nắm được cách khai báo dữ liệu mảng hai chiều
- Học sinh cần có các kĩ năng:
+ Nhận biết được các thành phần trong khai báo kiểu mảng hai chiều
+ Nhận biết được định danh của của một phần tử mảng hai chiều xuất hiện trong cùng một chương trình
+ Viết được khai báo mảng hai chiều với các chỉ số đều thuộc kiểu miền con của kiểu nguyên
B - Phương pháp, phương tiện
1 Phương pháp
- Củng cố kiến thức về mảng một chiều cho học sinh đồng thời tận dụng những hiểu biết đó để xây dựng kiến thức mới về mảng hai chiều cho học sinh
- Trên cơ sở học sinh đã biết về mảng một chiều ta dùng bảng
đánh các chỉ số dòng và cột tương ứng để giới thiệu với học sinh về mảng hai chiều
2 Phương tiện học tập
- Vở ghi lý thuyết Tin học lớp 11
- Sách giáo khoa Tin học lớp 11
C - Tiến trình lên lớp, nội dung bài giảng
I ổn định lớp (1’)
- Yêu cầu lớp trưởng báo cáo sĩ số
II Kiểm tra bài cũ và gợi động cơ (5’)
- Kiểm tra hiểu biết của học sinh về mảng một chiều
- Kĩ năng khai báo và truy xuất phần tử thuộc mảng
III Nội dung bài giảng
STT Nội dung Hoạt động của thầy và trò T.gi
an
Trang 21 Khái niệm
- Mảng hai chiều là mảng
một chiều mà mỗi phần tử
của mảng lại là một mảng
một chiều
- Giống như mảng một
chiều, có thể truy xuất (hay
thao tác) trên mỗi phần tử
của mảng hai chiều, nhưng
khác ở chỗ mỗi phần tử của
mảng hai chiều có hai chỉ số
(chứ không phải một chỉ số
như mảng một chiều) và do
vậy nó được xác định bởi tên
mảng và hai chỉ số
- Lấy ví dụ:
dòng
cột
Thầy hỏi:
- Hãy cho biết phần tử ở dòng thứ 1 cột 3 có giá trị
là mấy?
Trả lời:
- Có giá trị là 9
- Đây chính là hình ảnh và cách truy xuất vào mảng hai chiều
10’
2 Cách khai báo kiểu dữ liệu
mảng hai chiều
- Khai báo mảng hai chiều
mỗi phần tử của mảng lại là
một mảng một chiều
- Ta dùng hai lần từ khoá
ARRAY trong khai báo biến
với từ khóa VAR
VAR <tên biến mảng> :
ARRAY [kiểu chỉ số dòng]
of ARRAY [kiểu chỉ số cột]
of <kiểu phẩn tử>;
- Trong TuborPascal cho
phép ta có thể khai báo
- Thầy hỏi:
Em hãy cho ví dụ?
ARRAY Mang : ARRAY
[1 3] of ARRAY [1 4] of
integer ;
Giải thích: Ta đã khai báo
biến “Mang” gồm 3 phần tử, mỗi phần tử của biến “Mang”
có kiểu mảng gồm 4 phần tử kiểu số nguyên
- Trong TuborPascal cho phép ta có thể khai báo ngắn gọn như sau:
ARRAY Mang : ARRAY
10’
Trang 3ngắn gọn như sau:
VAR <tên biến mảng>:
ARRAY [kiểu chỉ số dòng,
kiểu chỉ số cột] of <kiểu
phần tử>;
- Khai báo với từ khóa
TYPE
TYPE <tên kiểu mảng> =
ARRAY [kiểu chỉ số
dòng,kiểu chỉ số cột] of
<kiểu phẩn tử>;
Và khai báo biến mảng hai
chiều có dạng:
VAR <tên biến mảng> :
<tên kiểu mảng>;
[1 3,1 4] of integer ;
Ví dụ cụ thể với cách khai báo
dùng từ khóa TYPE
TYPE
Mang = ARRAY [1 3] of
ARRAY [1 4] of integer ;
Khai báo biến mảng
VAR Mang1, Mang2: Mang;
- Khai báo với từ khóaTYPE
có lợi gì?
Có thể sử dụng lại nhiều lần với các biến mảng có cùng kiểu mảng
Ví dụ cụ thể:
Xét bài toán: Tính và đưa ra màn hình bảng cửu chương
Giải:
Có thể mô tả dữ liệu của bảng cửu chương là kiểu mảng một chiều gồm 9 phần tử, mỗi phần
tử lại là mảng một chiều có 9 phần tử, mỗi phần tử là một số nguyên
ARRAY Mang : ARRAY
[1 9] of ARRAY [1 9] of
integer ; Hoặc là khai báo mảng hai chiều
ARRAY Mang : ARRAY
[1 9,1 9] of integer ;
Trang 43 Cách truy nhập đến các phần
tử của mảng hai chiều
- Giống như khai báo kiểu
dữ liệu mảng một chiều,
người lập trình cần phải xác
định kiểu của các phần tử tạo
nên mảng và kiểu chỉ số
- Giống như mảng một
chiều, các thao tác nhập,
xuất hay xử lí mỗi phần tử
của mảng phải tuân theo quy
định của kiểu phần tử của
mảng
- Việc thực hiện các thao
tác nào đó (nhập, xuất hay
xử lí ) lần lượt trên các phần
tử của mảng hai chiều
thường gắn với hai câu lệnh
FOR - DO lồng nhau
- Cách dùng lệnh để lấy
ngẫu nhiên một số nguyên
trong khoảng từ 0 đến N-1,
giới hạn N do người lập trình
đưa ra Dùng hàm
Random(N)
Cụ thể: Mang [i,j ] =
random(N);
- Chú ý: Khi khai báo kích
thước của mảng phải chú ý
đến dung lượng cho phép
của bộ nhớ dành cho chương
Thầy hỏi
- Em hãy so sánh sự khác nhau giữa chỉ số mảng một chiều và chỉ số mảng hai chiều?
Mảng một chiều chỉ cần một chỉ số, mảng hai chiều cần hai chỉ số và hai chỉ số phải độc lập nhau
Ví dụ cụ thể
Xét bài toán: Tính và đưa ra màn hình bảng cửu chương
Giải
- Có thể mô tả dữ liệu của bảng cửu chương là kiểu mảng hai chiều
ARRAY Mang : ARRAY
[1 9,1 9] of integer ;
For i:=1 to 9 DO For j=1 to 9 DO {các câu lệnh nhập, xuất,
hay thao tác xử lí với phần tử
của mảng hai chiều}
Kết quả: chương trình tính và
đưa ra kết quả của bảng cửu chương
1 2 3 4 5 6 7 8 9
2 4 6 8 1
0
1
2
1
4
1
6
1
8
3 6 9 1
2
1
5
1
8
2
1
2
4
2
7 15’
Trang 5trình Có chương trình khai
báo không sai cú pháp nhưng
vượt quá kích thước cho
phép, chương trình dịch sẽ
báo lỗi “Structure too large”,
ví dụ:
Var M, N : array [1 10000]
of longint;
{Chiếm :
2*10000*4byte>64Kb}
4 8 1
2
1
6
2
0
2
4
2
8
3
2
3
6
5 1
0
1
5
2
0
2
5
3
0
3
5
4
0
4
5
6 1
2
1
8
2
4
3
0
3
6
4
2
4
8
5
4
7 1
4
2
1
2
8
3
5
4
2
4
9
5
6
6
3
8 1
6
2
4
3
2
4
0
4
8
5
6
6
4
7
2
9 1
8
2
7
3
6
4
5
5
4
6
3
7
2
8
1 Thầy và trò cùng nhau viết một chương trình tính bảng cửu chương hoàn thiện:
Chương trình Program bangcuuchuong;
Uses crt;
Var b: array[1 9,1 9]of integer;
i,j: integer;
Begin Clrscr;
For i:=1 to 9 do For j:=1 to 9 do B[i,j]= i*j;
For i:=1 to 9 do Begin
For j:=1 to 9 do Write (b[i,j]:3);
Writeln;writeln;
End;
Trang 6Realn;
End
IV Củng cố bài học (5’)
- Kiểu mảng một chiều thường được dùng trong những chương trình cần tổ chức dữ liệu như một dãy các phần tử cùng kiểu để giải quyết bài toán đặt ra
- Khi cần tổ chức dữ liệu dạng bảng người ta nghĩ đến dùng mảng hai chiều
- Mỗi biến mảng có nhiều phần tử tạo nên và đều có chỉ số : Mảng một chiều có một kiểu chỉ số, mảng hai chiều có hai kiểu chỉ số
IV Bài tập về nhà (2’)
- Làm các bài tập trong sách giáo khoa để thành thạo cách khai báo cách truy xuất đến một phần tử của mảng là một kiểu dữ liệu có cấu trúc rất hay được dùng trong lập trình
IV Nhận xét của thầy hướng dẫn
Nhận xột, đỏnh giỏ của giỏo viờn về tiết học