PHẦN II XÂY DỰNG BÀI HỌC VÀ TỔ CHỨC HOẠT ĐỘNG HỌC
D. Hướng dẫn học ở nhà
6.2. Tiến trình dạy học bài 3: CÂU LỆNH LẶP WHILE-DO
Về kiến thức Học sinh cần:
- Hiểu được vai trò của cấu trúc lặp trong biểu diễn thuật toán;
- Hiểu cấu trúc lặp với số lần không biết trước, kiểm tra điều kiện trước;
- Hiểu được câu lệnh lặp while-do trong Pascal.
- Bước đầu biết vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể.
Về kỹ năng
- Viết đúng các câu lệnh lặp với số lần không biết trước (kiểm tra điều kiện trước) while-do.
- Viết được một số chương trình của một số bài toán đơn giản có sử dụng câu lệnh lặp.
Về tư tưởng, tình cảm
- Học sinh hiểu bài và hứng thú với bài học.
Hình bên là đoạn chương trình sử dụng câu lệnh lặp for-do lồng nhau để giải bài toán “Vừa gà vừa chó, bó lại cho tròn, 36 con, 100 chân chẵn. Hỏi có bao nhiêu gà, bao nhiêu chó?”.
- Học sinh ngày càng say mê lập trình hơn, đặc biệt là sau khi đã biết tất cả các các cấu trúc điều khiển cơ bản trong chương trình.
Phương pháp dạy học, phương tiện dạy học chủ yếu - Dạy học theo quản điểm hoạt động
- Sử dụng máy chiếu, slide bài giảng, SGK, máy tính cài đặt môi trường lập trình để minh họa, giấy khổ lớn và các bảng phụ
A. KHỞI ĐỘNG
Hoạt động 1: Kiểm tra bài cũ
(1) Mục tiêu: HS nhớ được cú pháp và hiểu được hoạt động của câu lệnh for- do trong bài học trước.
(2) Phương pháp/Kĩ thuật: Vấn đáp.
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS trả lời được câu hỏi trắc nghiệm kiểm tra bài cũ..
Nội dung hoạt động
Sau khi chạy chương trình cho trong hình bên phải dưới đây, kết quả in ra màn hình là gì, hãy chọn phương án đúng
var S, i, j :integer;
begin
S := 0;
for i:=1 to 4 do
for j:=1 to 5 do S := S + 1;
writeln(S):
readln;
end.
A. 15 B. 9 C. 20 D. 5
Hoạt động 2: Tìm hiểu thuật toán giải bài toán 2
(1) Mục tiêu: HS hiểu được cấu trúc lặp với số lần không biết trước.
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện; Rèn luyện tư duy so sánh, phân tích.
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS trả lời được phiếu câu hỏi và qua đó HS hiểu được cấu trúc lặp với số lần không biết trước.
Nội dung hoạt động
Cột bên phải trong bảng dưới đây là thuật toán Tong_2 tính tổng S của dãy số theo yêu cầu của bài toán 2. Thuật toán Tong_1a giải bài toán 1 được trình bày ở cột bên cạnh để tiện so sánh. Hãy quan sát hai thuật toán này và trả lời các câu hỏi cho ở Phiếu câu hỏi bên dưới.
Thuật toán Tong_1a Thuật toán Tong_2
Bước 1: S 1/a; N 0; Bước 1: S 1/a; N 0;
Bước 2: N N + 1;
Bước 3: Nếu N > 100 thì chuyển đến bước 5;
Bước 2: Nếu 1/(a+N) < 0.0001 thì chuyển đến bước 5;
Bước 3: N N + 1;
Bước 4: S S + 1/(a+N); rồi quay lại bước 2;
Bước 4: S S + 1/( a+N); rồi quay lại bước 2;
Bước 5: Đưa S ra màn hình, rồi kết thúc. Bước 5: Đưa S ra màn hình, rồi kết thúc.
PHIẾU CÂU HỎI
(1) Như đã mô tả cách tính tổng S trong bài toán 2 ở những tiết học trước, có thể thấy thuật toán giải bài toán 2 chỉ khác thuật toán giải bài toán 1 ở một điểm duy nhất. Hãy phát hiện điểm khác duy nhất đó?
(2) Để thu được thuật toán Tong_2 từ thuật toán Tong_1a, ta sẽ thay điều kiện ở bước 3 thành điều kiện nào?
sai Điều đúng Câu lệnh
(3) Sau khi sửa thuật toán Tong_1a để thu được thuật toán Tong_2, có nên thay đổi thứ tự bước 2 và bước 3 cho nhau không? tại sao?
B. HÌNH THÀNH KIẾN THỨC VÀ LUYỆN TẬP Hoạt động 3: Tìm hiểu câu lệnh lặp while-do
(1) Mục tiêu: HS hiểu được ý nghĩa và hoạt động của câu lệnh lặp while-do.
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện;
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS phát biểu được hoạt động của câu lệnh lặp với số lần không biết trước, kiểm tra điều kiện trước while-do.
Nội dung hoạt động
Để giải bài toán 2 theo thuật toán Tong_2 ta có thể sử dụng câu lệnh lặp while-do, là câu lệnh lặp với số lần chưa biết trước, cú pháp như sau:
while <điều kiện> do <câu lệnh>;
Trong đó:
- <điều kiện> là một biểu thức quan hệ hoặc logic;
- <câu lệnh> là một câu lệnh của Pascal;
Việc thực hiện câu lệnh while-do được thể hiện như sơ đồ dưới đây. Hãy giải thích hoạt động của câu lệnh while-do qua sơ đồ này.
Hoạt động 4: Tìm hiểu sơ đồ thuật toán biểu thị câu lệnh while-do để giải bài toán 2
(1) Mục tiêu: HS hiểu được thuật toán thể hiện cấu trúc và câu lệnh lặp với số lần không biết trước, kiểm tra điều kiện trước.
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện;
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS trả lời được phiếu câu hỏi, từ đó các em hiểu được thuật toán giải bài toán sử dụng câu lệnh lặp while-do.
Nội dung hoạt động PHIẾU CÂU HỎI
Dưới đây là sơ đồ thuật toán giải bài toán 2. Hãy tìm hiểu sơ đồ thuật toán và trả lời các câu hỏi sau đây:
(1) Giá trị cho S và N trước vòng lặp là gì?
(2) Điều kiện điều khiển quá trình lặp là gì?
(3) Hãy chỉ ra những câu lệnh cần thực hiện ứng với trường hợp điều kiện đúng?
(4) Hãy chỉ ra câu lệnh cần thực hiện ứng với trường hợp điều kiện sai?
Nhập a S 1/a; N 0;
sai 1/(a+N)
đúng N N + 1;
S S + 1/(a+N);
Đưa ra S; Kết thúc
Hoạt động 5: Xây dựng chương trình giải bài toán 2
(1) Mục tiêu: HS tham gia xây dựng được chương trình thể hiện thuật toán sử câu lệnh lặp while-do để giải quyết bài toán quen thuộc.
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện;
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS trả lời được phiếu câu hỏi, từ đó các em có thể xây dựng được chương trình giải quyết bài toán quen thuộc bằng cách sử dụng câu lệnh lặp while-do.
Nội dung hoạt động PHIẾU CÂU HỎI
Để tiến đến cài đặt chương trình hoàn chỉnh cho sơ đồ thuật toán giải bài toán 2, hãy thực hiện các công việc sau:
(1)Viết đoạn trình nhập a từ bàn phím
(2)Viết đoạn trình khởi tạo giá trị cho các biến S và N
(3) Viết đoạn trình thể hiện việc tính tổng S như đã mô tả trong thuật toán bằng cách sử dụng câu lệnh while-do
(4)Viết câu lệnh in ra màn hình giá trị của S.
(5)Hoàn thiện chương trình giải bài toán 2 dưới đây.
#1: program Tong_2;
#2: uses crt;
#3: const e = 0.0001;
#4: var S: real;
#5: …. : integer;
#6: begin
#7: clrscr;
#8: …………..;
#9: …………..;
#10: S := 1.0/a; N := 0;
#11: while not (1/(a+N)<e) do
#12: begin
#13: …………..;
#14: ………;
#15: end;
#16: writeln('Tong S la: ', S:8:4);
#17: readln;
#18: end.
Hoạt động 6: Trả lời câu hỏi về câu lệnh lặp
(1) Mục tiêu: HS hiểu rõ cách sử dụng câu lệnh lặp while-do.
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện;
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: HS trả lời được các câu hỏi trắc nghiệm về câu lệnh lặp while- do. (Mức độ hiểu và vận dụng thấp)
Nội dung hoạt động
Câu 1. Hãy chọn câu trả lời đúng trong các phương án trả lời dưới đây:
Trong cú pháp tổng quát của câu lệnh lặp for-do và while-do của Pascal, câu lệnh sau từ khóa do có thể là
A. câu lệnh đơn, như câu lệnh gán, câu lệnh gọi thủ tục vào/ra;
B. câu lệnh ghép begin-end;
C.câu lệnh có cấu trúc, như câu lệnh if-then, câu lệnh for-do hoặc while-do khác.
D. tất cả các khả năng trên
Câu 2. Hãy chỉ ra câu trả lời sai trong các câu trả lời dưới đây:
Trong câu lệnh lặp while-do
A. điều kiện điều khiển vòng lặp là một biểu thức quan hệ hoặc biểu thức logic;
B. biểu thức biểu thị điều kiện phải được một trong các lệnh ở thân vòng lặp làm thay đổi giá trị sau một số hữu hạn vòng lặp.
C. câu lệnh ở thân vòng lặp có thể là một câu lệnh có cấu trúc như if-then, for-do, nhưng không thể là câu lệnh while-do khác.
D. câu lệnh ở thân vòng lặp nếu là một câu lệnh if-then thì câu lệnh sau từ khóa then có thể không thực hiện đủ số lần lặp thực sự diễn ra trong quá trình lặp.
Câu 3. Xét chương trình sau:
var a : integer;
begin ...
while a = 0 do begin
end.
end;
write(‘nhap so a: ‘);
readln(a);
Để lệnh readln(a) trong chương trình thực hiện ít nhất một lần thì tại chỗ ba chấm (...) trong chương trình, ta sẽ chọn lệnh nào trong số các lệnh sau:
A. a := 0; B. a := 1;
C. a := -1; D. a <> 0;
C. VẬN DỤNG
Hoạt động 7: Khám phá thuật toán tìm ước chung lớn nhất
(1) Mục tiêu: HS có thể tham gia vào quá trình giải quyết bài toán mới bằng cách sử dụng câu lệnh lặp while-do. (Mức độ hiểu và vận dụng thấp
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện;
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: Dưới sự hướng dẫn của GV, HS trả lời phiếu câu hỏi.
Nội dung hoạt động PHIẾU CÂU HỎI
Ý tưởng thuật toán “trừ liên liên tiếp” để tìm ước chung lớn nhất của hai số nguyên dương M và N như sau: Ta lặp quá trình thay số lớn hơn bằng nó trừ đi số bé hơn.
Kết thúc quá trình lặp thì hai số bằng nhau và một trong chúng là ước chung lớn nhất (UCLN) cần tìm.
Ví dụ M = 6, N = 9
Quá trình biến đổi M và N như sau: (6, 9) (6, 3) (3 , 3) UCLN = 3
Dựa vào ý tưởng trên, hãy trình bày thuật toán (liệt kê từng bước hoặc sơ đồ khối) để tìm UCLN của hai số nguyên dương M và N cho trước.
GV chính xác hóa lại thuật toán cho HS như sau Thuật toán trừ liên tiếp
Bước 1: Nhập M, N;
Bước 2: Nếu M = N thì lấy giá trị chung này làm UCLN rồi chuyển đến bước 5;
Bước 3: Nếu M > N thì M M - N rồi quay lại bước 2;
Bước 4: N N - M rồi quay lại bước 2;
Bước 5: Đưa ra kết quả UCLN, rồi kết thúc.
Nhập M
M=N?
đúng
N N-M; sai đúng
M>N? M M-N;
Đưa ra M; Kết thúc
Hoạt động 8: Lập trình tìm ước chung lớn nhất
(1) Mục tiêu: HS có thể tham gia vào quá trình giải quyết bài toán tương tự bằng cách sử dụng câu lệnh lặp while-do. (Mức độ hiểu và vận dụng thấp)
(2) Phương pháp/Kĩ thuật: Đàm thoại, phát hiện; Rèn tư duy so sánh tương tự.
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: SGK, máy tính, máy chiếu.
(5) Sản phẩm: Dưới sự hướng dẫn của GV, HS trả lời phiếu câu hỏi.
Nội dung hoạt động PHIẾU CÂU HỎI
(1) Chương trình cài đặt thuật toán tìm UCLN của hai số nguyên M và N cho trước sẽ gồm các công việc chính nào trong các công việc sau
- Nhập M, N từ bàn phím;
- Kiểm tra nếu M lớn N thì gán M bằng M - N - Kiểm tra nếu N lớn M thì gán N bằng N - M - Tìm UCLN của M và N;
- In ra màn hình UCLN;
(2) Hãy viết các lệnh nhập M và N?
(3) Hãy sử dụng câu lệnh while-do để viết đoạn trình thể hiện cách tính UCLN như đã mô tả trong thuật toán?
(4) Hãy viết câu lệnh in ra màn hình giá trị của M.
(4) Hãy lập trình tìm UCLN của hai số nguyên M và N cho trước GV chính xác lại chương trình cho HS như sau:
#1: program UCLN;
#2: uses crt;
#3: var M, N: integer;
#4: begin
#5: clrscr;
#6: write('M, N: ');
#7: readln(M, N);
#8: while M <> N do
#9: if M>N then M := M - N
#10: else N := N - M;
#11: writeln('UCLN la: ', M);
#12: readln;
#13: end.