ChƯơng III: Cấu trúc rẽ nhánh và lặp
IV. Mét sè vÝ dô
2. Kiểu mảng hai chiều Bài toán: Bảng nhân
?Cần phải khai báo bao nhiêu biến mảng
GV giới thiệu mảng 2 chiều
? Nêu khái niệmmảng 2 chiều.
? Yêu cầu HS nhận xét về mảng hai chiều
? Để mô tả kiểu mảng hai chiều, cần xác định những yếu tố nào
Hoạt động 3
Khai báo biến mảng 2 chiều, cách tạo /in mảng ( 20phút) GV đưa ra hai cách khai báo biến mảng hai chiều.
GV giải thích các thành phần trong khai báo.
Gọi HS nêu cách khai báo gián tiếp biến B để lưu trữ bảng nhân ở SGK.
GV đưa ví dụ : Viết chương trình tạo và in mảng hai chiều gồm m hàng, n cột
GV hướng dẫn HS cách tạo mảng hai chiều có m hàng, n cột.
GV hướng dẫn HS cách in mảng hai chiều vừa tạo.
bảng.
HS: Khai báo 9 biến mảng một chiều.
HS: nghe giảng HS trả lời
HS: Nếu coi 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.
Tham khảo SGK và trả lời.
HS chú ý theo dõi.
HS nghe giảng
HS đứng tại chỗ trả lời.
HS nghe giảng và ghi bài
HS ghi bài
a. Khái niệm mảng hai chiều SGK
* Các yếu tố cần xác định để mô tả kiểu mảng hai chiều SGK
b. Khai báo - 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>;
VD: var A:array [1..50,1..100]
of integer;
* Ví dụ:
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
Hoạt động 4 Củng cố (3phút)
- Cách khai báo biến mảng hai chiều.
- Cách tạo mảng hai chiều
HS nghe giảng
for j := 1 to n do write (A[i , j]:4);
writeln;
end;
readln end.
3. Dặn dò
- Xem các ví dụ còn lại trong SGK - Làm các bài tập trong SBT
Soạn:
Giảng:
TiÕt 25
Bài thực hành số 4
I. Mục tiêu
- Củng cố cho HS những kiến thức và kĩ năng đã có dịp lập trình với dữ liệu kiểu mảng - Củng cố cho HS 1 số thuật toán
- Rèn kỹ năng diễn đạt thuật toán, rèn ý thức cần có của 1 người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể
- Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình II. Chuẩn bị
1.Thầy: Máy tính, 2.Trò:
III. Tiến trình dạy học
1. ổn định tổ chức
11B1... 11B9 ...
11B2... 11B7 ...
11B8...
2. Bài mới
Hoạt động của GV Hoạt động của HS Ghi bảng
Hoạt động 1 Kiểm tra bài cũ (5phút)
? Trình bày khái niệm và cách khai báo biến mảng 2 chiều
Hoạt động 2 Lý thuyết (15phút)
? Nêu cách khai báo kiểu mảng 1 chiều.
? Nhập từ bàn phím xây dựng mảng một chiều A có 6 phần tử.
HS: gián tiếp, trực tiếp
HS: For i:= 1 to 6 do Begin
Writeln(‘Nhap phan tu thu ’,i,’=’);
Readln(A[i]);
Hoạt động 3 Luyện tập
GV yêu cầu HS làm 1 Chiếu đề bài lên bảng.
? Xác định bài toán
? Yêu cầu hs nhắc lại ý tưởng thuật toán(Lớp 10)
? Vai trò của biến i, j trong CT
? Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của mảng
Yêu cầu hs tự nhập dữ liệu với CT có sẵn.
GV nêu đề bài mục 1b
? Yêu cầu HS xác I/O bài toán?
? Biến Dem được tăng lên khi nào
? Cần đưa câu lệnh tăng Dem vào chỗ nào trong CT trên
? Lệnh Dem:= 0 được đặt vào vị trí nào trong CT
GV nhận xét
Hoạt động 4 Củng cố ( 5 phút)
- Thuật toán sắp xếp bằng tráo đổi.
- Đếm số lần tráo đổi
End;
HS đọc đề
HS: - Vào: mảng A - Ra: mảng A đã sắp xếp
HS: thuật toán sắp xếp đã học.
HS: Làm biến chỉ số HS: tg := a[i];
a[i]:= a[i+1];
a[i+1]:= tg;
HS: Chạy CT, nhập dữ liệu, xem kết quả.
HS: I: mảng a;
O: mảng a đã sắp xếp, số lần tráo đổi HS: A[i] > A[i+1]
HS: Trong thân CL If: trước hoặc sau 3 lệnh tráo đổi.
HS trả lời
Bài 1 a
SGK/65
Bài 1 b
SGK/65
3. Dặn dò
Bài tập về nhà
- Tìm thêm các thuật toán sắp xếp khác tối ưu hơn.
- Cho mảng A và mảng B (là mảng A đã được sắp xếp). Hãy in ra chỉ số của các phần tử mảng A theo mảng B.
Soạn:
Giảng:
TiÕt 26
Bài thực hành số 4 (tiếp) I. Mục tiêu
- Củng cố cho HS những kiến thức và kĩ năng đã có dịp lập trình với dữ liệu kiểu mảng - Củng cố cho HS 1 số thuật toán
- Rèn kỹ năng diễn đạt thuật toán, rèn ý thức cần có của 1 người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể
- Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình
II. Chuẩn bị
1.Thầy: Máy tính, 2.Trò:
III. Tiến trình dạy học
1. ổn định tổ chức
11B1... 11B9 ...
11B2... 11B7 ...
11B8...
2. Bài mới
Hoạt động của GV Hoạt động của HS Ghi bảng
Hoạt động 1 Lý thuyết ( 5phút)
? Cách khai báo kiểu mảng 1 chiều.
Hoạt động 2 Luyện tập (35phút) GV đưa đề bài lên bảng.
? Xác định bài toán GV lấy ví dụ minh hoạ
A 4 5 1 2 3 7
1 2 3 4 5 6
B
1 2 3 4 5 6
Ban đầu: mọi B[i] = 0
? Mỗi B[i] được tạo mới bằng bao nhiêu
GV: Viết chương trình thô
? Yêu cầu HS cho biết từng phần của chương trình cần xây dựng
? Bước B2 được cụ thể trong CT như thế nào
GV chiếu chương trình chuẩn bị sẵn, Giải thích từng phần của chương trình
? So sánh giá trị B[i] và B[i-1]
Đặc biệt: B[1]
GV nêu sự tối ưu của thuật toán
HS: có 2 cách + gián tiếp:
+ trực tiếp
Quan sát đề và lắng nghe câu hỏi của gv.
HS trả lời
HS: Theo dõi ví dụ minh hoạ
HS trả lời
Lần lượt từng HS trình bày
HS: sử dụng 2 vòng for lồng nhau.
for i:=1 to n do begin
b[i]: =0;
for j:=1 to i do b[i]:=b[i]+a[j];
end;
HS: lắng nghe, quan sát và ghi nhớ.
B[i]:=B[i-1]+A[i]
Tl: B[1]=A[1]
HS: Chú ý theo dõi
Bài 2
SGK/66 Khai báo:
+ Khai báo mảng + Biến đơn
Phần thân:
B1: tạo mảng A.
B2: xd mảng B theo A.
B3: In mảng B.
+ Số lượng phép toán '+' ít hơn
+Chỉ dùng 1 vòng lặp for -> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B.
Gv chiếu chương trình được cải tiến
? Yêu cầu HS nhập CT cải tiến vào máy.
Hoạt động 3 Củng cố (5 phút)
Trình bày khai báo biến đơn, kahi báo mảng
HS nhập chương trình vào máy
* Đoạn CT cải tiến SGK
3. Dặn dò
- Xem, chuẩn bị trước bài 12: Kiểu xâu - Làm tiếp các bài tập trong SBT
Soạn:
Giảng:
TiÕt 27
Bài thực hành số 4 (tiếp) I. Mục tiêu
- Củng cố cho HS những kiến thức và kĩ năng đã có dịp lập trình với dữ liệu kiểu mảng - Củng cố cho HS 1 số thuật toán
- Rèn kỹ năng diễn đạt thuật toán, rèn ý thức cần có của 1 người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể
- Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình II. Chuẩn bị
1.Thầy: Máy tính, 2.Trò:
III. Tiến trình dạy học
1. ổn định tổ chức
11B1... 11B9 ...
11B2... 11B7 ...
11B8...
2. Bài mới
Hoạt động của GV Hoạt động của HS Ghi bảng
Hoạt động 1 Luyện tập (35phút) GV đưa đề bài lên bảng.
? Xác định bài toán GV lấy ví dụ minh hoạ
? Mỗi B[i] được tạo mới bằng bao nhiêu
Quan sát đề và lắng nghe câu hỏi của gv.
HS trả lời
HS trả lời
Bài tập:
Cho mảng A gồm n phần tử.
Hãy viết chương trình tạo mảng B[1..n], trong đố B[i] là tổng của i phần tử cuối cùng
Giải
- Phần Khai báo:
+ Khai báo mảng + Biến đơn
GV: Viết chương trình thô
? Yêu cầu HS cho biết từng phần của chương trình cần xây dựng
? Bước B2 được cụ thể trong CT như thế nào
GV chiếu chương trình chuẩn bị sẵn, Giải thích từng phần của chương trình
GV nêu sự tối ưu của thuật toán
+ Số lượng phép toán '+' ít hơn
+Chỉ dùng 1 vòng lặp for -> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B.
Gv chiếu chương trình được cải tiến
? Yêu cầu HS nhập CT cải tiến vào máy.
Hoạt động 3 Củng cố (5 phút)
Trình bày khai báo biến đơn, kahi báo mảng
Lần lượt từng HS trình bày
HS: sử dụng 2 vòng for lồng nhau.
for i:=n to 1 do begin
b[i]: =n;
for j:=n to i do b[i]:=b[i]+a[j];
end;
HS: lắng nghe, quan sát và ghi nhớ.
HS: Chú ý theo dõi
HS nhập chương trình vào máy
Phần thân:
B1: tạo mảng A.
B2: xd mảng B theo A.
B3: In mảng B.
- Phần tạo B[]
For i:=n downto 1 do begin
B[i]:=n;
for j:=n downto i do B[i]:=B[i]+A[j];
end;
* Đoạn CT cải tiến SGK
3. Dặn dò
- Xem, chuẩn bị trước bài 12: Kiểu xâu - Làm tiếp các bài tập trong SBT
Soạn:
Giảng:
TiÕt 28
kiÓu x©u
I. Mục tiêu
- Biết khái niệm, cách khai báo 1 xâu
- Biết sử dụng thủ tục, hàm thông dụng về xâu
- Rèn kỹ năng khai báo kiểu xâu, so sánh 2 xâu, nhận biết và bước đầu sử dụng các hàm và thủ tục chuẩn
II. Chuẩn bị
1.Thầy: Máy tính, 2.Trò:
III. Tiến trình dạy học
1. ổn định tổ chức
11B1... 11B9 ...
11B2... 11B7 ...
11B8...
2. Bài mới
Hoạt động của GV Hoạt động của HS Ghi bảng
Hoạt động 1 Khái niệm xâu (8 phút)
? Xâu là gì
Yêu cầu HS khác nhận xét GV nêu lại khái niệm
? Xâu có bao nhiêu kí tự
? Y/c HS viết xâu có ký tự trống, xâu rỗng, nêu số lượng ký tự của mỗi xâu.
GV: Giới thiệu cách tham chiếu phần tử
Hoạt động 2 Khai báo dữ liệu (14 phút)
? Ý nghĩa của từ String
? Độ dài lớn nhất của xâu là bao nhiêu
? Hãy nhắc lại các phép toán đã học trên kiểu dữ liệu chuẩn GV chiếu chương trình VD
? Kết quả của chương trình in ra màn hình
? Chức năng của phép cộng GV: Chiếu chương trình VD về phép so sánh
? Yêu cầu HS cho biết kết quả Hoạt động 3
Các thao tác sử lý xâu ( 20 phút)
GV giới thiệu từng thủ tục và hàm
Ứng với mỗi thủ tục và hàm giáo viên đưa ra một ví dụ minh hoạ theo sgk.
? Ý nghĩa của hàm Length(b)
HS trả lời Nhận xét HS ghi bài Trả lời.
HS Trả lời HS Trả lời HS nhắc lại
Quan sát chương trình để dự tính kết HS dùng để ghép xâu
HS dự đoán
HS nghe giảng
HS trả lời
* Khái niệm SGK
1. Khai báo
SGK Lưu ý:
Một xâu có độ dài nhỏ hơn có thể lớn hơn (>) và ngược lại