Hoạt động 1: Mở đầu · 8 phút
Chương trình chạy đúng chưa?
a) Mục tiêu
Tạo tình huống có vấn đề: chạy đúng một ca chưa chứng minh chương trình đúng với mọi đầu vào; từ đó HS nhận ra cần kiểm thử có chủ đích.
b) Nội dung
GV trình chiếu hàm tim(a, x) tìm vị trí lần đầu của x trong danh sách a, trả về -1 nếu không có x. GV chạy print(tim([4,4,7],4)) và hỏi HS kết quả. Câu hỏi: “Kết quả in ra là bao nhiêu? Nếu chỉ dựa vào ca này, em có kết luận được hàm đã đúng với mọi đầu vào chưa? Vì sao?”
c) Sản phẩm
HS nêu được kết quả in ra là 0 (vị trí đầu tiên của 4 trong [4,4,7]). HS nhận ra: một ca đúng chỉ là bằng chứng hạn chế; cần thêm ca khác dạng (dãy rỗng, mục tiêu ở cuối, mục tiêu không có trong dãy) để kiểm tra.
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 trình chiếu đoạn mã hàm tim(a, x) và lệnh print(tim([4,4,7],4)); nêu câu hỏi tình huống và yêu cầu HS dự đoán kết quả trước khi chạy.
Học sinh
HS đọc đoạn mã, suy nghĩ cá nhân và dự đoán kết quả trong khoảng 1 phút.
Giáo viên
Bước 2: Thực hiện nhiệm vụ
GV chạy chương trình trực tiếp trên máy chiếu; yêu cầu HS đối chiếu với dự đoán của mình.
Học sinh
HS quan sát kết quả chạy, so sánh với dự đoán và ghi nhận xét vào vở.
Giáo viên
Bước 3: Báo cáo, thảo luận
GV mời 2 đến 3 HS trình bày dự đoán và nhận xét; hỏi thêm: “Nếu hàm trả về vị trí cuối cùng thay vì đầu tiên thì kết quả sẽ thế nào?”
Học sinh
HS trả lời dự kiến: “Dự đoán 0 vì hàm dừng ở lần gặp đầu tiên; nếu trả vị trí cuối thì sẽ in 1, và ca này sẽ lộ lỗi.”
Giáo viên
Bước 4: Kết luận, nhận định
GV chốt: kiểm thử là đối chiếu đầu ra thực tế với đầu ra mong đợi; chạy đúng một bộ dữ liệu chưa đủ để kết luận đúng mọi đầu vào; cần chọn ca phát hiện lớp lỗi. GV dẫn vào bài mới.
Học sinh
HS ghi tên bài và ý chính: “Một ca đúng không chứng minh được chương trình đúng.”