Giáo án Tin học 10 · Toàn bộ sách chính (đồ họa và Python)
Tin họcLớp 10Phần 5. Chủ đề 5. Giải quyết vấn đề với sự trợ giúp của máy tính

Giáo án Bài 29. Nhận biết lỗi chương trình

Kế hoạch bài dạy theo mẫu Công văn 5512/BGDĐT-GDTrH · 1 tiết (45 phút)

I. Mục tiêu

1. Kiến thức

  • Nêu được ba loại lỗi chương trình: lỗi cú pháp, ngoại lệ khi chạy và lỗi logic.
  • Giải thích được vì sao lỗi cú pháp làm mã không được hiểu, vì sao ngoại lệ xuất hiện khi chạy (chia cho 0, chỉ số ngoài miền, chuyển kiểu sai), và vì sao lỗi logic không có thông báo.
  • Vận dụng được quy trình bốn bước (tái hiện đầu vào lỗi, đọc thông báo hoặc so kết quả mong đợi, xác định loại và nguyên nhân, sửa đúng nguyên nhân rồi thử lại) để nhận biết và sửa lỗi trong chương trình Python đơn giản.

2. Năng lực

a) Năng lực chung

  • Tự chủ và tự học: Chủ động đọc mục Hiểu cách hoạt động, tự hoàn thành Phiếu học tập số 1 và tự kiểm tra kết quả chương trình mẫu bằng cách chạy lại.
  • Giao tiếp và hợp tác: Làm việc nhóm 4 theo kĩ thuật mảnh ghép, trình bày và phản biện cách phân loại lỗi của nhóm mình và nhóm bạn.
  • Giải quyết vấn đề và sáng tạo: Đối chiếu kết quả thực tế với kết quả mong đợi, tìm nguyên nhân gốc của lỗi và đề xuất cách sửa, không che lỗi bằng đáp án giả.

b) Năng lực đặc thù

  • Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông (NLc): Dùng việc chạy chương trình và đối chiếu kết quả để xác định lỗi, giải thích kết quả 22 và 18 với a = 7, b = 4.
  • Sử dụng và quản lí các phương tiện công nghệ thông tin và truyền thông (NLa): Thực hiện đúng thao tác nhập, chạy và đọc thông báo lỗi trên môi trường Python được GV hướng dẫn.
  • Ứng dụng công nghệ thông tin và truyền thông trong học và tự học (NLd): Sử dụng bài tập tương tác trên trang NeoEdu để tự kiểm tra kiến thức sau giờ học.
  • Hợp tác trong môi trường số (NLe): Chia sẻ kết quả nhóm qua bảng trình chiếu hoặc nhóm trực tuyến do GV tổ chức (nếu có).

3. Phẩm chất

  • Chăm chỉ: Kiên trì kiểm tra lại từng bước khi chương trình chưa cho kết quả mong đợi, không bỏ dở khi gặp thông báo lỗi.
  • Trách nhiệm: Tự nhận lỗi của mình khi kết quả sai, sửa đúng nguyên nhân và chịu trách nhiệm về kết quả của chương trình do mình viết.
  • Trung thực: Báo cáo đúng kết quả chạy thực tế, không sửa kết quả để khớp với đáp án và không dùng cách che lỗi bằng giá trị giả.

II. Thiết bị dạy học và học liệu

1. Giáo viên

  • Máy tính, máy chiếu và môi trường chạy Python để trình diễn chương trình mẫu (a = 7, b = 4, in 22 hoặc 18).
  • Phiếu học tập số 1, bảng phụ ghi quy trình bốn bước và ba đoạn mã trong phần khởi động.
  • Học liệu số NeoEdu: bài giảng, ví dụ và bài tập tương tác của Bài 29 tại neoedu.vn/learn/10/informatics/bai-29-nhan-biet-loi-chuong-trinh (dùng để chiếu ví dụ và cho HS luyện tập).

2. Học sinh

  • Máy tính hoặc thiết bị có môi trường chạy Python (nhóm hai người dùng chung một máy nếu thiếu thiết bị).
  • Sách giáo khoa Tin học 10, vở ghi, bút, giấy nháp.
  • Phiếu học tập số 1 (GV phát).

III. Tiến trình dạy học

Hoạt động 1: Mở đầu · 5 phút

Đoán loại lỗi qua ba đoạn mã

a) Mục tiêu

Huy động kiến thức nền về lỗi khi viết chương trình và tạo nhu cầu phân biệt các loại lỗi.

b) Nội dung

GV chiếu ba đoạn mã ngắn: (1) câu lệnh if thiếu dấu hai chấm ở cuối; (2) a = [2, 6, 9] và lệnh print(a[3]); (3) a = 7, b = 4, lệnh print(2*a + b) với yêu cầu tính chu vi hình chữ nhật. HS trả lời: đoạn nào không chạy được, đoạn nào chạy và báo lỗi khi đang thực thi, đoạn nào chạy xong nhưng kết quả sai yêu cầu.

c) Sản phẩm

HS nêu được: (1) lỗi cú pháp, chương trình không được hiểu nên không chạy; (2) ngoại lệ IndexError khi chạy vì chỉ số 3 nằm ngoài miền 0 đến 2; (3) lỗi logic vì chương trình chạy và in 18 trong khi chu vi đúng là 22.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu ba đoạn mã, nêu câu hỏi: “Đoạn nào không chạy được? Đoạn nào chạy rồi báo lỗi? Đoạn nào chạy xong nhưng sai yêu cầu?” GV yêu cầu HS suy nghĩ 30 giây, không cần viết đầy đủ.

    Học sinh

    HS lắng nghe, đọc từng đoạn mã trên màn hình và suy nghĩ câu trả lời.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV mời HS trao đổi nhanh theo cặp đôi trong 1 phút và ghi tên ba loại lỗi dự đoán vào giấy nháp.

    Học sinh

    HS thảo luận theo cặp, dự đoán: đoạn 1 có thể là lỗi cú pháp, đoạn 2 có thể là lỗi chỉ số, đoạn 3 có thể là lỗi công thức.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV gọi 2 đến 3 cặp trình bày, ghi nhanh các dự đoán lên bảng và chưa chốt đúng sai ngay.

    Học sinh

    Đại diện cặp trả lời, ví dụ: “Đoạn 1 không chạy vì thiếu dấu hai chấm; đoạn 2 chạy đến dòng in thì dừng vì chỉ số 3 không có; đoạn 3 chạy được nhưng 2*7+4 bằng 18, không phải chu vi 22.”

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV nhận xét và nêu vấn đề: có ba kiểu lỗi khác nhau về thời điểm xuất hiện và cách nhận biết. Dẫn sang bài học.

    Học sinh

    HS ghi tên bài học và ba loại lỗi cần tìm hiểu vào vở.

Hoạt động 2.1: Hình thành kiến thức mới · 12 phút

Phân biệt ba loại lỗi chương trình

a) Mục tiêu

Nêu được và giải thích được đặc điểm của lỗi cú pháp, ngoại lệ khi chạy và lỗi logic.

b) Nội dung

HS làm việc theo nhóm 4 theo kĩ thuật mảnh ghép. Vòng 1: mỗi nhóm nghiên cứu một loại lỗi trong mục Hiểu cách hoạt động của bài học (hoặc trang NeoEdu) và hoàn thành Phiếu học tập số 1. Vòng 2: HS đổi sang nhóm mới, mỗi nhóm có đủ ba loại lỗi, từng bạn chia sẻ loại mình đã tìm hiểu.

c) Sản phẩm

Phiếu học tập số 1 hoàn chỉnh với nội dung sau. Lỗi cú pháp: xảy ra khi viết sai cấu trúc lệnh, ví dụ thiếu dấu hai chấm sau if; mã không được hiểu nên không chạy. Ngoại lệ khi chạy: chương trình chạy đến dòng sai thì dừng và báo thông báo lỗi, như chia cho 0, chỉ số ngoài miền, chuyển kiểu sai (ví dụ int(“abc”)). Lỗi logic: chương trình chạy đầy đủ, không báo lỗi nhưng kết quả sai yêu cầu, ví dụ công thức chu vi viết thành 2*a + b.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chia lớp thành các nhóm 4, đánh số 1 đến 3 cho từng nhóm chuyên gia và phát Phiếu học tập số 1. GV giao nhiệm vụ: nhóm 1 tìm hiểu lỗi cú pháp, nhóm 2 tìm hiểu ngoại lệ khi chạy, nhóm 3 tìm hiểu lỗi logic. Thời gian 4 phút cho vòng 1.

    Học sinh

    HS nhận phiếu, đọc yêu cầu và xác định nhóm chuyên gia của mình.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi quanh lớp, gợi ý HS đối chiếu với ví dụ thiếu dấu hai chấm và ví dụ chia cho 0 trong bài học. Sau 4 phút, GV yêu cầu HS đổi sang nhóm mới (vòng 2), mỗi nhóm có đủ ba loại lỗi và chia sẻ trong 4 phút.

    Học sinh

    Chuyên gia viết đặc điểm, dấu hiệu và ví dụ vào phiếu. Ở vòng 2, HS chia sẻ, ghi bổ sung vào phiếu của mình. Dự kiến HS nói: “Lỗi cú pháp thì chương trình không chạy, còn ngoại lệ thì chạy được một đoạn rồi mới dừng.”

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 nhóm trình bày bảng phân loại. GV hỏi: “Vì sao lỗi logic khó phát hiện hơn hai loại kia?” Dự kiến HS trả lời: “Vì chương trình không báo lỗi nên phải so kết quả với yêu cầu.”

    Học sinh

    Đại diện nhóm trình bày; các nhóm khác nhận xét và bổ sung ví dụ.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: lỗi cú pháp xuất hiện trước khi chạy; ngoại lệ xuất hiện khi chạy và có thông báo; lỗi logic không có thông báo và chỉ phát hiện khi đối chiếu kết quả với yêu cầu. GV nhấn mạnh: không dựa vào việc “không báo lỗi” để kết luận chương trình đúng.

    Học sinh

    HS ghi nhận và sửa phiếu theo kết luận của GV.

Hoạt động 2.2: Hình thành kiến thức mới · 10 phút

Quy trình xác định và sửa lỗi

a) Mục tiêu

Vận dụng được quy trình bốn bước để tìm nguyên nhân và sửa lỗi trong chương trình tính chu vi.

b) Nội dung

GV trình diễn chương trình mẫu: a = 7, b = 4, p = 2*(a+b), print(p). HS dự đoán kết quả, chạy chương trình và so với kết quả mong đợi. Sau đó GV đưa công thức cũ 2*a+b để so sánh, rồi yêu cầu HS theo cặp đôi thực hiện quy trình: tái hiện đầu vào lỗi, đọc thông báo hoặc so kết quả mong đợi, xác định loại và nguyên nhân, sửa đúng nguyên nhân rồi thử lại.

c) Sản phẩm

Chương trình đúng: a = 7; b = 4; p = 2*(a+b); print(p). Kết quả in 22, đúng với mẫu. Chương trình công thức cũ in 18, sai với yêu cầu chu vi. Sơ đồ bốn bước: Tái hiện đầu vào lỗi → Đọc thông báo hoặc so kết quả mong đợi → Xác định loại và nguyên nhân → Sửa đúng nguyên nhân rồi thử lại. Kết luận: không dùng ngoại lệ hay đáp án giả để che sai sót; phải sửa nguyên nhân.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu nhiệm vụ: “Hãy dự đoán kết quả của chương trình chu vi với a = 7, b = 4, sau đó chạy và so với kết quả mong đợi. Nếu sai, hãy áp dụng bốn bước để tìm và sửa lỗi.”

    Học sinh

    HS đọc nhiệm vụ, dự đoán kết quả trên giấy nháp.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV cho HS chạy chương trình công thức cũ 2a+b trước, sau đó sửa thành 2(a+b). GV quan sát và gợi ý khi HS bối rối: “Kết quả mong đợi của chu vi hình chữ nhật là bao nhiêu?”

    Học sinh

    Cặp đôi chạy chương trình, nhận thấy kết quả 18 không khớp với 22, xác định lỗi là công thức, sửa thành 2*(a+b) và chạy lại được 22.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời một cặp trình bày từng bước: đầu vào, kết quả, nguyên nhân, cách sửa. GV hỏi: “Nếu chương trình không báo lỗi, bạn dựa vào đâu để biết nó sai?” Dự kiến HS trả lời: “Dựa vào kết quả mong đợi tính bằng tay.”

    Học sinh

    Đại diện cặp trình bày; các cặp khác bổ sung.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt quy trình bốn bước và nhấn mạnh: sửa đúng nguyên nhân, không che lỗi bằng cách gán kết quả cố định hoặc bỏ qua thông báo. GV cho HS ghi sơ đồ bốn bước vào vở.

    Học sinh

    HS ghi sơ đồ bốn bước và công thức chu vi đúng vào vở.

Hoạt động 3: Luyện tập · 10 phút

Nhận diện lỗi qua bài tập nhanh

a) Mục tiêu

Củng cố phân biệt loại lỗi và dự đoán kết quả chương trình ngắn.

b) Nội dung

HS làm nhanh các bài sau trên bài tập tương tác NeoEdu hoặc trên giấy: (1) Chương trình a = [2, 6, 9], print(a[2]) in ra số nào? (2) Chương trình x = int(“12”), print(x + 1) in ra số nào? (3) Chương trình a = 7, b = 4, print(2*a + b) in ra số nào? (4) Thiếu dấu hai chấm sau if thường là loại lỗi nào? A. Cú pháp; B. Chỉ lỗi logic dù cú pháp vẫn hợp lệ; C. Chỉ lỗi dữ liệu đầu vào sai dạng; D. Chỉ lỗi chỉ số danh sách. (5) Chương trình không báo ngoại lệ thì chắc đúng yêu cầu. Đúng hay sai? (6) Sắp xếp các bước giải quyết lỗi theo đúng thứ tự.

c) Sản phẩm

Đáp án: (1) 9, vì chỉ số 2 hợp lệ. (2) 13, vì xâu “12” chuyển sang số nguyên được. (3) 18, mã chạy nhưng công thức chu vi sai. (4) A, lỗi cú pháp. (5) Sai, vì lỗi logic vẫn có thể tồn tại. (6) Tái hiện đầu vào lỗi → Đọc thông báo hoặc so kết quả mong đợi → Xác định loại và nguyên nhân → Sửa đúng nguyên nhân rồi thử lại.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV chiếu 6 câu hỏi và nêu thời gian 6 phút. GV nhắc HS làm độc lập trước rồi đối chiếu với bạn ngồi cạnh.

    Học sinh

    HS đọc câu hỏi, làm bài độc lập trên giấy hoặc trên máy.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV đi kiểm tra, gợi ý HS đối chiếu chỉ số danh sách và kiểu dữ liệu khi gặp câu (1) và (2). Với câu (3), GV yêu cầu HS tính tay 2*7+4.

    Học sinh

    HS làm bài, đối chiếu với bạn cùng bàn. Dự kiến HS trả lời: “Câu (3) là 18, không phải 22.”

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 3 HS đọc đáp án của câu (1), (3), (5) và hỏi thêm: “Vì sao câu (5) là sai?” Dự kiến HS trả lời: “Vì lỗi logic không có thông báo nhưng vẫn làm kết quả sai.”

    Học sinh

    HS trình bày đáp án và giải thích ngắn.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV công bố đáp án đầy đủ, nhận xét các lỗi thường gặp và nhấn mạnh cách nhận biết từng loại lỗi.

    Học sinh

    HS sửa đáp án sai (nếu có) và ghi chú lỗi thường gặp vào vở.

Hoạt động 4: Vận dụng · 8 phút

Viết và kiểm tra chương trình tính chu vi mảnh vườn

a) Mục tiêu

Vận dụng quy trình nhận biết và sửa lỗi để viết chương trình thực tế và phân biệt lỗi trong hai đoạn mã.

b) Nội dung

HS viết chương trình tính chu vi mảnh vườn hình chữ nhật có chiều dài a và chiều rộng b (dùng a = 7, b = 4 để kiểm tra). HS kiểm tra kết quả theo dữ liệu mẫu, sau đó phân biệt hai đoạn: print(a[3]) với a = [2, 6, 9] và print(2*a + b) với a, b là số. HS nộp kết quả và phần lập luận ngắn. Phần này có thể hoàn thành ở nhà nếu thiếu thời gian.

c) Sản phẩm

Chương trình mẫu: a = 7; b = 4; p = 2*(a+b); print(p), in 22. Phân biệt: đoạn danh sách gây IndexError vì chỉ số 3 nằm ngoài miền 0 đến 2, sửa bằng chỉ số 2 hoặc lấy đúng phần tử; đoạn chu vi sai là lỗi logic nếu a, b là số và chạy được, sửa thành 2*(a+b). Thang chấm tham khảo: mã đúng chu vi 0,4 điểm; kết quả 22 so với 18 là 0,3 điểm; phân loại lỗi và giải thích 0,3 điểm. Chấp nhận phương án tương đương đúng, có lí giải.

d) Tổ chức thực hiện

  1. Giáo viên

    Bước 1: Chuyển giao nhiệm vụ

    GV nêu yêu cầu: viết chương trình tính chu vi hình chữ nhật, kiểm tra với a = 7, b = 4, sau đó phân biệt hai đoạn mã và nêu cách sửa. Thời gian 6 phút; phần chưa xong thì về nhà hoàn thành.

    Học sinh

    HS đọc yêu cầu, nhận đề và bắt đầu viết chương trình.

  2. Giáo viên

    Bước 2: Thực hiện nhiệm vụ

    GV quan sát, nhắc HS dùng quy trình bốn bước nếu kết quả không khớp, không chỉnh kết quả để khớp đáp án.

    Học sinh

    HS viết chương trình, chạy, so kết quả, ghi phân biệt hai lỗi ngắn gọn.

  3. Giáo viên

    Bước 3: Báo cáo, thảo luận

    GV mời 2 HS trình bày kết quả và lập luận. GV hỏi: “Nếu mảnh vườn có chiều dài 2,5 m và chiều rộng 1,5 m thì công thức thay đổi không?” Dự kiến HS trả lời: “Công thức không đổi, chỉ thay giá trị, chu vi là 2(2,5+1,5)=82(2{,}5 + 1{,}5) = 8 m.”

    Học sinh

    HS trình bày và trả lời câu hỏi mở rộng.

  4. Giáo viên

    Bước 4: Kết luận, nhận định

    GV chốt: lỗi cú pháp, ngoại lệ và lỗi logic có cách xử lý riêng; đọc thông báo và đối chiếu kết quả mong đợi là hai cách chính để phát hiện lỗi. GV khuyến khích HS luyện thêm trên NeoEdu.

    Học sinh

    HS tự đánh giá bài làm theo thang chấm và ghi nhận kiến thức.

Phiếu học tập

Phiếu học tập số 1

Nhóm: ………… Chuyên gia loại lỗi: …………
Hoàn thành bảng sau cho loại lỗi nhóm mình được giao:

  • Tên loại lỗi:
  • Khi nào xuất hiện (trước khi chạy, khi đang chạy hay sau khi chạy xong):
  • Dấu hiệu nhận biết (có thông báo lỗi không, chương trình dừng ở đâu):
  • Ví dụ trong bài học:
  • Cách xác định nguyên nhân:
    Câu hỏi kiểm tra: Vì sao không nên dùng ngoại lệ để che mọi sai sót bằng một đáp án giả?
    Ghi chú khi nghe bạn trình bày ở vòng 2: loại lỗi của bạn, điểm khác biệt với loại lỗi của nhóm mình.

Hướng dẫn về nhà

  • Viết chương trình tính chu vi hình chữ nhật với hai cạnh do em chọn, kiểm tra bằng cách tính tay và ghi lại kết quả.
  • Nêu một ví dụ lỗi cú pháp, một ví dụ ngoại lệ khi chạy và một ví dụ lỗi logic mà em đã gặp hoặc có thể gặp, mỗi ví dụ kèm cách sửa.
  • Hoàn thành bài tập tương tác của Bài 29 trên trang neoedu.vn/learn/10/informatics/bai-29-nhan-biet-loi-chuong-trinh và ghi lại câu sai để xem lại trong tiết sau.

Giáo án do NeoEdu soạn với sự hỗ trợ của AI, dựa trên nội dung bài học trên Học liệu. Thầy cô nên đọc lại và điều chỉnh cho phù hợp với học sinh của mình; bản Word để sửa trực tiếp.