KIỂU MẢNG (Tiết 4)
I. Mục đích yêu cầu:
1. Kiến thức:
Học sinh hiểu được:
* 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à mảng
một chiều.
- Ta có thể truy xuất hay thao tác như mảng một chiều nhưng chỉ
khác là có 2 phần tử.
- Mảng hai chiều có thể hiểu là một bảng có các dòng và cột.
- Kiểu mảng là một kiểu dữ liệu có cấu trúc, rất cần thiết và hữu ích
trong lập trình
2. Kỹ năng:
Biết Khai báo(hay định nghĩa) kiểu dữ liệu mảng:
+ Hoặc trực tiếp trong phần khai báo biến (dùng Var).
+ Hoặc đặt tên và định nghĩa cho kiểu dữ liệu mới này (Type) rồi sau
đó khai báo biến.
3. Thái độ:
Tích cực ham học hỏi
II Chuẩn bị của giáo viên và học sinh:
1. Chuẩn bị của giáo viên:SGK, SGV, giáo án, giáo án điện tử, đèn
chiếu,một số chương trình mẫu khổ lớn.
2. Chuẩn bị của học sinh:Xem kỹ SGK, soạn trước bài học.
III. Nội dung bài giảng
1.Ổn định tổ chức:1 phút
2.Kiểm tra bài cũ: Không kiểm tra
3.Nội dung bài mới
Ví dụ:
Chương trình tính và đưa ra màn
hình bảng nhân
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 1 1 2 2 2
N
ội dung
H Đ c
ủa GV v
à HS
GV: Tổ chức dữ liệu cho bài
toán?
HS: Dùng một mảng hai chiều để
lưu Bảng nhân.
GV: Khai báo?
HS: Khai báo.
GV: Gọi i là chỉ số dòng, j là chỉ
số cột thì miền giá trị của i, j như
thế nào?
HS: Trả lời.
GV: Nhận xét gì về phần tử B[i,j]
của bảng nhân?
HS: B[i,j]=i*j
GV: Yêu cầu học sinh viết đọan
chương trình tính B[i,j].
2
5
8
1
4
7
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
Bảng nhân
Program Bang_cuu_chuong;
Uses Crt;
GV: Viết kết quả ra nàm hình?
HS: Nêu ý tưởng ( Gíao viên
cùng cả lớp nhận xét)
HS,GV cùng viết đoạn chương
trình in ra kết quả.
GV: Bài toán yêu cầu?
HS: xác định.
GV: Ý tưởng giải thuật?
HS:-Khai báo Mảng hai chiều 20
dòng, 10 cột,số nguyên k,
-Tạo số ngẫu nhiên gán cho phần
tử của mảng.
-Nhập k
VAR B: Array[1 9,1 9] OF
Integer;
i, j : Integer;
Begin
Clrscr;
For i:=1 to 9 Do {Tính giá trị
cho từng phần tử}
For j:=1 to 9 Do
B[i,j]:= i*j;
{Xuất ra màn hình}
For i:=1 to 9 Do
Begin
For j:=1 to 9 Do
Write(B[i,j]:3);
Writeln;
End;
Readln
End.
-So sánh phần tử của mảng với K,
nếu lớn hơn thì viết ra màn hình.
-Kết thúc
GV: Giới thiệu thủ tục
Randomize: Khởi động tạo số
ngẫu nhiên.
Hàm Random(n) tạo số ngẫu
nhiên trong phạm vi từ(0đến n-1)
GV:Hướng dẫn học sinh viết từng
đoạn chương trình.
Ví dụ2
Chương trình xây dựng mảng hai
chiều B gồm 20 dòng, 10 cột với
các phần tử là các số nguyên được
tạo ngẫu nhiên từ -20 đến 40. Giá trị
của k được nhập từ bàn phím. Đưa
ra màn hình tất cả các phần tử của
mảng có giá trị lớn hơn số k cho
trước.
Program mang2chieu;
Uses crt;
Var B:array[1 20,1 10] Of
integer;
d,i,j,k: integer;
Begin
Clrscr;
Randomize; {Khoi dong sinh so
ngau nhien}
For i:=1 to 20 Do
Begin
For j:=1 to 10 Do
Begin
B[i,j]:=Random(41)-20;
Write(B[i,j]);
End;
Writeln;
End;
Write('Nhap vao gia tri k:
');Readln(k);
d:=0;
Writeln('Danh sach phan tu lon hon
',k,' : ');
For i:=1 to 20 Do
For j:=1 to 10 Do
If b[i,j] >k Then
Begin
Write(b[i,j]);
d:=d+1;
End;
If d=0 then Writeln('Khong co ');
Readln;End.
4. Củng cố:
Nêu lại cách thức khai báo kiểu dữ liệu mảng một chiều, hai chiều.
5. Dặn dò, bổ sung:
Làm bài tập trong SG