Hoạt động 1: Mở đầu · 8 phút
Hàm này đã đúng chưa?
a) Mục tiêu
Nêu được vấn đề: một hàm có thể cho đúng kết quả với vài ca nhưng vẫn sai với ca khác, nên cần kiểm thử.
b) Nội dung
GV trình chiếu hàm sau và yêu cầu HS dự đoán kết quả trước khi chạy:
- def lon_nhat(a,b): m=0; if a>m: m=a; if b>m: m=b; return m
- Câu hỏi 1: Với , hàm trả về bao nhiêu?
- Câu hỏi 2: Với , hàm trả về bao nhiêu?
- Câu hỏi 3: Với , hàm trả về bao nhiêu? Đây có phải số lớn nhất không?
c) Sản phẩm
- Dự đoán đúng: hai ca và cho và .
- Ca mong đợi kết quả , nhưng hàm trả về , nên kết quả sai.
- Kết luận ban đầu: hàm đúng với số dương nhưng sai với số âm; cần thử nhiều loại ca khác nhau.
d) Tổ chức thực hiện
Hoạt động của giáo viên
Hoạt động của học sinh
Giáo viên
Bước 1: Chuyển giao nhiệm vụ
GV chiếu hàm lỗi lên màn hình, đọc yêu cầu và cho HS 1 phút suy nghĩ để dự đoán kết quả của ba ca.
Học sinh
HS đọc hàm, ghi nhanh dự đoán ra nháp hoặc vở và chưa chạy máy.
Giáo viên
Bước 2: Thực hiện nhiệm vụ
GV hướng dẫn HS nhập hàm vào IDLE, gọi lần lượt ba ca và yêu cầu ghi lại kết quả máy in ra.
Học sinh
HS chạy hàm với ba ca, so sánh kết quả máy in ra với dự đoán của mình.
Giáo viên
Bước 3: Báo cáo, thảo luận
GV mời 2 đến 3 HS nêu dự đoán và kết quả thực tế; hỏi thêm: “Vì sao ca cho kết quả ?”
Học sinh
HS trả lời, dự kiến: “Em dự đoán nhưng máy in , vì không phải là một trong hai số nhập vào.” Hoặc: “Vì biến m được gán từ đầu và , đều nhỏ hơn nên không được cập nhật.”
Giáo viên
Bước 4: Kết luận, nhận định
GV nhận xét và chốt: kiểm thử là chọn đầu vào và kết quả mong đợi để phát hiện sai; ca số âm đã làm lộ lỗi mà ca số dương không phát hiện được. GV nêu mục tiêu hai tiết học: thiết kế bộ ca, gỡ lỗi và sửa.
Học sinh
HS ghi tên bài “Kiểm thử và gỡ lỗi chương trình” và ghi nhận: một ca thử có thể không đủ để phát hiện lỗi.