Kế hoạch bài dạy Tin học 10 (Kết nối tri thức) - Bài 29: Nhận biết lỗi chương trình

docx 9 trang Khuất Nguyên 03/04/2026 900
Bạn đang xem tài liệu "Kế hoạch bài dạy Tin học 10 (Kết nối tri thức) - Bài 29: Nhận biết lỗi chương trình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docxke_hoach_bai_day_tin_hoc_10_ket_noi_tri_thuc_bai_29_nhan_bie.docx

Nội dung tài liệu: Kế hoạch bài dạy Tin học 10 (Kết nối tri thức) - Bài 29: Nhận biết lỗi chương trình

  1. Kế hoạch bài dạy Tin học lớp 10 BÀI 29 NHẬN BIẾT LỖI CHƯƠNG TRÌNH Môn học: Tin Học; Lớp: 10 Thời gian thực hiện: 2 tiết I. MỤC TIÊU 1. Kiến thức: ● Biết và phân biệt được một số loại lỗi chương trình ● Biết được một vài lỗi ngoại lệ thường gặp 2. Kỹ năng: - Năng lực tự chủ và tự học - Năng lực giao tiếp và hợp tác - Năng lực sáng tạo và giải quyết vấn đề 3. Phẩm chất: Nghiêm túc, tập trung, tích cực chủ động. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU Máy tính, máy chiếu(tivi), Môi trường mạng, Ngôn ngữ LT Python III. TIẾN TRÌNH DẠY HỌC 1. HOẠT ĐỘNG KHỞI ĐỘNG (MỞ ĐẦU) - Mục tiêu: Tạo hứng thú học tập cho học sinh - Nội dung: Hs dựa vào hiểu biết để trả lời câu hỏi - Sản phẩm: Từ yêu cầu Hs vận dụng kiến thức để trả lời câu hỏi GV đưa ra - Tổ chức thực hiện: GV giới thiệu và dẫn dắt vào bài Một số chương trình hoàn chỉnh được mô tả như hình 29.1. Tiếp nhận các dữ liệu đầu vào, xử lí theo yêu cầu bài toán và đưa ra kết quả đúng theo yêu cầu. Theo em nếu chương trình bị lỗi thì các lỗi này sẽ như thế nào và có thể ở đâu? 2. HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 1: Nhận biết và phân biệt một số loại lỗi chương trình - Mục Tiêu: + Nhận biết và phân biệt một số loại lỗi chương trình - Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV - Sản phẩm: Hs hoàn thành tìm hiều kiến thức - Tổ chức thực hiện: Hoạt động của giáo viên và Sản phẩm dự kiến học sinh 1. NHẬN BIẾT LỖI CHƯƠNG TRÌNH * Bước 1: Chuyển giao Trường hợp 1: Người lập trình viết sai cú pháp lệnh, chương nhiệm vụ: trình lập tức dừng lại và thông báo lỗi cú pháp GV: Quan sát các trường hợp >>> While true print(“Hello”) chương trình gặp lỗi như sau, SyntaxError: Invallid syntax từ đó nhận biết và phân biệt Trường hợp 2: Người dùng nhập dữ liệu sai, chương trình một số loại lỗi của chương thông báo lỗi nhập dữ liệu không đúng khuôn dạng trình >>> n = int( input(“Nhập số nguyên n: “)) Nhập số nguyên n: 1.5 * Bước 2: Thực hiện nhiệm Traceback (most recent call last): vụ: File “ ”, line 1, in + HS: Suy nghĩ, tham khảo N= int( input(“Nhập số nguyên n: “)) sgk trả lời câu hỏi Trường hợp 3: Chương trình thông báo lỗi chỉ số vượt quá + GV: quan sát và trợ giúp giới hạn cho phép các cặp. A = [1, 3, 10, 0] * Bước 3: Báo cáo, thảo for i in range(5): luận: print(A[i], end = “ “) 1
  2. Kế hoạch bài dạy Tin học lớp 10 Hoạt động của giáo viên và Sản phẩm dự kiến học sinh Khi chạy chương trình sẽ báo lỗi. + HS: Lắng nghe, ghi chú, 1 3 10 0 Traceback (most recent call last): một HS phát File "C:\Python\Array_b1.py", line 3, in biểu lại các tính chất. print (A[1],end") + Các nhóm nhận xét, bổ IndexError: list index out of range sung cho nhau. Trường hợp 4. Chương trình thực hiện bình thường nhưng * Bước 4: Kết luận, nhận kết quả không đúng với yêu cầu của bài toán. Đây là lỗi lôgic định: GV chính xác hóa và bên trong chương trình. gọi 1 học sinh nhắc lại kiến # Tính tổng của ba số nguyên dương đầu tiên thức >>> s = 0 >>> for i in range (3): s = s + i >>> print(s) 3 Chương trình cho kết quả là 3 mà kết quả đúng là 1 + 2 + 3 = 6. Lí do là hàm range(3) trả lại vùng giá trị là 0, 1, 2 chứ không phải là 1, 2, 3 Câu hỏi Giải thích: 1. Khi gõ sai cú pháp một - Với trường hợp 1, chương trình dừng và thông báo lỗi lệnh, chương trình sẽ dừng lại Syntax Error (lỗi cú pháp) và báo lỗi, đó là lỗi loại gì? - Với trường hợp 2, khi người dùng nhập dữ liệu sai, hàm 2. Bái toán yêu cầu sắp xếp int() không thể thực hiện được, chương trình dừng lại và báo dãy số ban đầu thành dãy tăng lỗi. Mã lỗi là ValueError. Đây là lỗi Runtime (lỗi trong khi dần. Giả sử dãy số ban đầu là đang thực hiện) hay còn gọi là lỗi ngoại lệ (Exceptions [3, 1, 8, 10, 0]. Kết quả thu error) được dãy [1, 3, 8, 10, 0]. - Với trường hợp 3, chương trình phát hiện lỗi chỉ số vượt Chương trình có lỗi không? quá giới hạn tại dòng 3. Chương trình dừng và báo lỗi . Mã Nếu có thì lỗi đó thuộc loại lỗi là IndexError. Đây là lỗi Runtime. gì? - Với trường hợp 4, chương trình không còn lỗi Runtime, nhưng kết quả đưa ra sai. Không có mã lỗi nào được trả lại. Đây là lỗi ngữ nghĩa hoặc lỗi lôgic bên trong chương trình. Kết luận: + Tổng thể có thể phân biệt lỗi chương trình Python làm ba loại 1. Lỗi khi có lệnh viết sai cú pháp hoặc sai cấu trúc ngôn ngữ Python quy định. Chương trình sẽ lập tức dừng và thông báo lỗi Syntax Error 2. Lỗi khi không thể thực hiện một lệnh trong chương trình. Chương trình dừng lại và thông báo một mã lỗi. Lỗi này gọi lỗi ngoại lệ (Exceptions Error), mã lỗi trả lại gọi là mã lỗi ngoại lệ. 3. Chương trình chạy không lỗi ngoại lệ, nhưng kết quả đưa ra sai không chính xác. Đây là lỗi lôgic bên trong chương trình. + Với mỗi loại lỗi trên, cách xử lí và kiểm soát lỗi sẽ khác nhau. Hoạt động 2: Tìm hiểu Một số lỗi ngoại lệ thường gặp a) Mục tiêu: Nắm được một só lỗi ngoại lệ thường gặp 2
  3. Kế hoạch bài dạy Tin học lớp 10 b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức d) Tổ chức thực hiện: Hoạt động của giáo viên và học Sản phẩm dự kiến sinh 2. MỘT SỐ LỖI NGOẠI LỆ THƯỜNG GẶP * Bước 1: Chuyển giao nhiệm vụ: Chúng ta đã biết, nếu gặp lỗi ngoại lệ, chương trình Python sẽ dừng lại, báo lỗi. Một trong những vấn đề được GV: Đọc, thảo luận để nhận biết một đưa ra khi kiểm soát lỗi là làm thế nào để vẫn phát hiện số lỗi ngoại lệ thường gặp trong lỗi, xử lý lỗi nhưng chương trình không bị dừng lại trong chương trình Python khi thực hiện. Mã lỗi ngoại HS: Thảo luận, trả lời Mô tả lỗi lệ HS: Lấy các ví dụ trong thực tế. ZeroDivisionE Lỗi này xảy ra khi lệnh thực rror hiện phép chia cho giá trị 0. * Bước 2: Thực hiện nhiệm vụ: Lỗi xảy ra khi lệnh cố gắng truy IndexError cập phần tử của danh sách + HS: Suy nghĩ, tham khảo sgk trả lời nhưng chỉ số vượt quá giới hạn. câu hỏi Lỗi xảy ra khi chương trình + GV: quan sát và trợ giúp các cặp. NameError muốn tìm một tên nhưng không thấy. Ví dụ khi lệnh gọi một * Bước 3: Báo cáo, thảo luận: hàm nhưng không có hàm đó. Lỗi kiểu dữ liệu. Một số ví dụ + HS: Lắng nghe, ghi chú, một HS lỗi loại này: phát - Lệnh truy cập một phần từ của biểu lại các tính chất. TypeError danh sách nhưng chỉ số không + Các nhóm nhận xét, bổ sung cho là số nguyên nhau. - Lệnh tính biểu thức số nhưng lại có một toán hạng không phải * Bước 4: Kết luận, nhận định: GV là số chính xác hóa và gọi 1 học sinh nhắc Lỗi liên quan đến giá trị của đối lại kiến thức tượng. Câu hỏi Lỗi khi thực hiện lệnh chuyển Hãy nêu mã lỗi ngoại lệ của mỗi lệnh ValueError đổi kiểu dữ liệu, đổi số của hàm sau nếu xảy ra lỗi. có giá trị mà hàm không hỗ trợ. a) A[1.5] Ví dụ khi thực hiện lệnh b) int("abc") int("1.55") sẽ sinh lỗi loại này. c) "10"*3.5 Lỗi khi các dòng lệnh thụt vào d) 12 + x(10) IndentationErr không thẳng hàng hoặc không or đúng vị trí SyntaxError Lỗi cú pháp. Hoạt động 3: Thực hành a) Mục tiêu: Rèn kỹ năng phát hiện lỗi và sửa lỗi b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức d) Tổ chức thực hiện: Hoạt động của giáo viên và học Sản phẩm dự kiến sinh 3. THỰC HÀNH * Bước 1: Chuyển giao nhiệm vụ: 3
  4. Kế hoạch bài dạy Tin học lớp 10 Hoạt động của giáo viên và học Sản phẩm dự kiến sinh Lập trình và kiểm tra khả năng sinh lỗi khi chạy chương trình. GV: Nhiệm vụ 1. Viết chương trình nhập các số nguyên m, n từ bàn phím, cách nhau bởi dấu cách. Chương trình đưa HS: Thảo luận, trả lời ra tổng, hiệu, thương của hai số đã nhập. HS: Lấy các ví dụ trong thực tế. Hướng dẫn. Chương trình chính là khối các lệnh nhập từ bàn phím hai số nguyên m, n. Các số này được nhập * Bước 2: Thực hiện nhiệm vụ: bằng lệnh input(), kết quả là một xâu kí tự. Xâu này sẽ được tách thành danh sách các xâu con bằng lệnh split(). + HS: Suy nghĩ, tham khảo sgk trả lời Kết quả thu được sẽ chuyển đổi thành hai số m, n bằng câu hỏi lệnh int( ). Nhập chương trình sau và kiểm tra khả năng + GV: quan sát và trợ giúp các cặp. sinh lỗi khi chạy chương trình. * Bước 3: Báo cáo, thảo luận: + HS: Lắng nghe, ghi chú, một HS phát Gợi ý. Các khả năng sinh lỗi của chương trình: biểu lại các tính chất. - Các số m, n khi nhập vào không là số nguyên + Các nhóm nhận xét, bổ sung cho - Giữa hai số m, n không có dấu cách nhau. - Số n nhập vào là số 0 Nhiệm vụ 2. Viết chương trình nhập số tự nhiên n và * Bước 4: Kết luận, nhận định: GV nhập lần lượt n số nguyên đưa vào danh sách số A. Sau chính xác hóa và gọi 1 học sinh nhắc khi nhập xong in danh sách A ra màn hình. lại kiến thức Hướng dẫn. Nhập chương trình sau và kiểm tra khả năng Câu hỏi sinh lỗi khi chạy chương trình. Hãy nêu mã lỗi ngoại lệ của mỗi lệnh sau nếu xảy ra lỗi. a) A[1.5] b) int("abc") c) "10"*3.5 d) 12 + x(10) Gợi ý. Các khả năng sinh lỗi của chương trình: - Số n được nhập không là số nguyên - Mỗi số hạng của danh sách nhập vào không là số nguyên 3. HOẠT ĐỘNG LUYỆN TẬP a. Mục tiêu: Củng cố, luyện tập kiến thức vừa học. b. Nội dung: HS đọc SGK làm các bài tập. c. Sản phẩm: Bài làm của học sinh, kĩ năng giải quyết nhiệm vụ học tập. d. Tổ chức thực hiện: Câu 1. Các lệnh sau có sinh lỗi chương trình không? Nếu có thì mã lỗi là gì? a) >>> A = [1, 3, 5, 10, 0] >>> for k in range(1, len(A) + 1): print(A[k]) b) >>> s1, s2 = “101010”, 101010 4
  5. Kế hoạch bài dạy Tin học lớp 10 >>> s = s1 + s2 Câu 2. Đề tính giá trị trung gbình của một danh sách số A, người lập trình đã dùng lệnh sau để tính: gttb = sum(A)/len(A) lệnh này có thể sinh lỗi nggoại lệ không? Nếu có thì là những lỗi gì? 4. HOẠT ĐỘNG VẬN DỤNG a. Mục tiêu: Vận dụng các kiến thức vừa học quyết các vấn đề học tập và thực tiễn. b. Nội dung:. c. Sản phẩm: HS vận dụng các kiến thức vào giải quyết các nhiệm vụ đặt ra. d. Tổ chức thực hiện: Gv đưa câu hỏi về nhà: Câu 1. Giả sử em được yêu cầu viết chương trình nhập số tự nhiên n từ bàn phím, kết quả đưa ra là danh sách các ước số thực sự của n, tính cả 1 và không tính n. Hãy viết chương trình và kiểm tra các khả năng sinh lỗi khi thực hiện chương trình. Câu 2. Em hãy viết một chương trình nhỏ để khi chạy sẽ sinh mã lỗi NameError 5
  6. Kế hoạch bài dạy Tin học lớp 10 BÀI 30 KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH Môn học: Tin Học; Lớp: 10 Thời gian thực hiện: 2 tiết I. MỤC TIÊU 1. Kiến thức: - Biết được một vài phương pháp đơn giản kiểm thử chương trình. - Biết được một vài cách gỡ lỗi đơn giản một chương trình. 2. Kỹ năng: - Năng lực tự chủ và tự học - Năng lực giao tiếp và hợp tác - Năng lực sáng tạo và giải quyết vấn đề 3. Phẩm chất: Nghiêm túc, tập trung, tích cực chủ động. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU Máy tính, máy chiếu(tivi), Môi trường mạng, Ngôn ngữ LT Python III. TIẾN TRÌNH DẠY HỌC 1. HOẠT ĐỘNG KHỞI ĐỘNG (MỞ ĐẦU) - Mục tiêu: Tạo hứng thú học tập cho học sinh - Nội dung: Hs dựa vào hiểu biết để trả lời câu hỏi - Sản phẩm: Từ yêu cầu Hs vận dụng kiến thức để trả lời câu hỏi GV đưa ra - Tổ chức thực hiện: GV giới thiệu và dẫn dắt vào bài ? Bài học trước em đã biết khái niệm lỗi ngoại lệ khi chạy chương trình Python. Tuy nhiên, một chương trình chạy không có lỗi ngoại lệ (chương trình không bị dừng) thì không có nghĩa là chương trình không có lỗi. Thậm chí các "lỗi" không tường minh này (các lỗi này được gọi bug) càng khó phát hiện và khó sửa. Theo em, làm thế nào để kiểm tra (test) và gỡ lỗi (debug) một chương trình? Môi trường lập trình có công cụ nào hỗ trợ việc đó không? HS: trả lời câu hỏi 2. HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 1: Tìm hiểu các phép toán bit - Mục Tiêu: + Nắm được các phép toán bit - Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV - Sản phẩm: Hs hoàn thành tìm hiều kiến thức - Tổ chức thực hiện: Hoạt động của giáo viên Sản phẩm dự kiến và học sinh 1. MỘT VÀI PHƯƠNG PHÁP KIỂM THỬ CHƯƠNG * Bước 1: Chuyển giao TRÌNH nhiệm vụ: Có rất nhiều phương pháp và công cụ khác nhau để kiểm thử GV: Nêu đặt câu hỏi chương trình. Các công cụ này không những có mục đích tìm Đọc và thảo luận nhóm các ra lỗi (hay bug) của chương trình mà còn có tác dụng phòng phương pháp, công cụ sau ngừa và ngăn chặn các lỗi phát sinh tiếp trong tương lai. để biết chức năng, tác dụng a) Quan sát mã lỗi Runtime và bắt lỗi ngoại lệ của từng công cụ trong Nếu chương trình có lỗi Runtime (tức là đang chạy bị công việc kiềm thừ chương dừng lại), cần quan sát các mã lỗi (mã lỗi ngoại lệ) để kiểm tra trình. vị trí dòng lệnh sinh ra lỗi này. Từ đó phân tích, tìm và sửa lỗi. HS: Thảo luận, trả lời b) Kiểm thử chương trình với các bộ dữ liệu test * Bước 2: Thực hiện nhiệm vụ: 6
  7. Kế hoạch bài dạy Tin học lớp 10 Hoạt động của giáo viên Sản phẩm dự kiến và học sinh Chương trình cần được thử với một số bộ dữ liệu test + HS: Suy nghĩ, tham gồm đầu vào tiêu biểu phụ thuộc đặc thù của bài toán và kết khảo sgk trả lời câu hỏi quả đầu ra đã biết trước. Các bộ test có thể có đầu vào theo + GV: quan sát và trợ giúp các tiêu chí khác nhau như độ lớn và tính đa dạng của dữ liệu. các cặp. Cần chú ý một số điểm sau: * Bước 3: Báo cáo, thảo - Cần có nhiều bộ test (theo các tiêu chí khác nhau như độ luận: lớn, tính đa dạng của dữ liệu....) + HS: Lắng nghe, ghi chú, - Cần có bộ test ngẫu nhiên. Việc sinh ngẫu nhiên dữ liệu đầu một HS phát vào trong miền xác định của chương trình làm tăng khả năng biểu lại các tính chất. tìm lỗi nếu có. + Các nhóm nhận xét, bổ - Cần có bộ test dữ liệu ở vùng biên. Ví dụ dữ liệu đầu vào là sung cho cặp (x, y) xác định trên miền 0 ≤ x, y ≤ 1. Khi đó cần kiểm nhau. tra chương trình với bộ dữ liệu biên là (0; 0). (0, 1). (1; 0) * Bước 4: Kết luận, nhận và (1; 1). Thực tế cho thấy thường phát sinh lỗi tại các vùng định: GV biên hoặc lân cận của biên. Một ví dụ khác của dữ liệu biên ❖ chính xác hóa và gọi là cần tìm các bộ test với n và các giá trị ( 1, 2,, , 푛,) rất 1 học sinh nhắc lại lớn (vùng cận biên lớn) kiến thức c) In các thông số trung gian Bổ sung vào giữa các dòng lệnh print() để in ra các biến trung gian, qua đó kiểm tra các quy trình hay thuật toán được viết có đúng không. Giả sử chương trình có đầu vào là (x 1, x2, , xn), đầu ra là (a1, a2, , am) nhưng có sử dụng các biến trung gian (y 1, y2, , yk). Khi đó với mỗi bộ test đầu vào, chúng ta sẽ bổ sung vào các dòng lệnh của chương trình để in ra các giá trị trung gian: (x1, x2, , xn), (y1, y2, , yk), (a1, a2, , am) Thông qua các giá trị trung gian trong quá trình thực hiện chương trình, nếu kết quả cuối cùng có lỗi thì sẽ dễ tìm ra lỗi đó. d) Sử dụng công cụ break point (điểm dừng) Công cụ break point cho phép tạo ra các “điểm dừng” bên trong chương trình. Khi chạy, chương trình sẽ tạm dừng lại tại các “điểm dừng” cho phép người kiểm thử có thể quan sát các thông tin khác bên trong chương trình, qua đó kiểm tra tính đúng đắn của chương trình. Trên thực tế sử dụng phương pháp điểm dừng thường kết hợp với phương pháp in các giá trị trung gian sẽ là hiệu quả hơn để kiểm thử chương trình. Một số ghi nhớ: ● Sử dụng công cụ in các biến trung gian. ● Sử dụng công cụ sinh các bộ dữ liệu test. ● Sử dụng công cụ điểm dừng trong phần mềm soạn thảo lập trình. ● Quan sát các mã lỗi của chương trình nếu phát sinh. Hoạt động 2: Ví dụ minh họa a) Mục tiêu: Nắm được cách gỡ lỗi chương trình b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 7
  8. Kế hoạch bài dạy Tin học lớp 10 c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức d) Tổ chức thực hiện: Sản phẩm dự kiến Hoạt động của giáo viên và học sinh 2. VÍ DỤ MINH HỌA * Bước 1: Chuyển giao nhiệm vụ: Xét ví dụ sau: Nhập từ bàn phím hai số tự nhiên m, n, tính ƯCLN của hai số này. GV: Gọi gcd (m, n) là ƯCLN của hai số tự nhiên m, HS: Thảo luận, trả lời n. Thuật toán của bài toán này dựa trên bài toán HS: Lấy các ví dụ trong thực tế. sau: (1) gcd(m, m) = m. * Bước 2: Thực hiện nhiệm vụ: (2) Nếu n > m thì gcd(m, n) = gcd(m, n - m) (3) Nếu n < m thì gcd(m, n) = gcd(m - n, n). + HS: Suy nghĩ, tham khảo sgk trả lời câu hỏi Chúng ta sẽ tiến hành kiểm thử chương trình + GV: quan sát và trợ giúp các cặp. này. Cần tập trung kiểm tra kĩ khối lệnh của lệnh lặp while * Bước 3: Báo cáo, thảo luận: Cách 1: In ra các giá trị trung gian để kiểm soát chương trình. + HS: Lắng nghe, ghi chú, một HS phát Bổ sung biến k và hai lệnh print() vào chương trình biểu lại các tính chất. Cách 2: Sử dụng công cụ tạo điểm dừng của phần + Các nhóm nhận xét, bổ sung cho mềm soạn thảo lập trình. nhau. Thiết lập điểm dừng tại dòng 4 của chương trình như sau. Đây là vị trí bắt đầu chuẩn bị vào vòng * Bước 4: Kết luận, nhận định: GV lặp. chính xác hóa và gọi 1 học sinh nhắc lại Sửa lại kiến thức Khi chạy chương trình sẽ dừng lại trước mỗi vòng lặp, chúng ta sẽ ghi lại các giá trị m, n vào một bảng như bảng sau. Khi kết thúc hết vòng lặp thì kết quả chương trình chính là giá trị m. Kế t Vòng lặp m n qu ả Bổ sung thêm biến k và hai lệnh print() để in các giá trị trung gian k,m,n 2 1 1 0 6 1 2 4 6 1 3 4 2 4 4 8 Kết thúc vòng lặp 4 4 4 8
  9. Kế hoạch bài dạy Tin học lớp 10 Sản phẩm dự kiến Hoạt động của giáo viên và học sinh Quan sát sự thay đổi của các biến k, m, n ⇨ Cả hai cách để kiểm soát lỗi là in các giá trị trong quá trình thực hiện chương trình để trung gian và thiết lập điểm dừng đều hiệu quả phát hiện lỗi (nếu có), đồng thời hiểu được lỗi này và tìm cách sửa lỗi. Thiết lập điểm dừng tại dòng 4 của chương trình, đây là 1 vị trí bắt đầu một vòng lặp mới của lệnh while 3. HOẠT ĐỘNG LUYỆN TẬP a. Mục tiêu: Củng cố, luyện tập kiến thức vừa học. b. Nội dung: HS đọc SGK làm các bài tập. c. Sản phẩm: Bài làm của học sinh, kĩ năng giải quyết nhiệm vụ học tập. d. Tổ chức thực hiện: Gv Cho HS nhắc lại KT: Hs: Nhắc lại các vấn đề đã học 1. Chương trình của em khi chạy phát sinh lỗi ngoại lệ ZeroDivisionError. Đó là lỗi gì và em sẽ xử lý lỗi này như thế nào? 2. Chương trình sau có lỗi không? Nếu có thì tìm và sửa lỗi. m = input ( “ Nhập số tự nhiên m: “) n = input ( “ Nhập số tự nhiên n: “) print ( “ Tổng hai số đã nhập là:” ,m+n) 4. HOẠT ĐỘNG VẬN DỤNG a. Mục tiêu: Vận dụng các kiến thức vừa học quyết các vấn đề học tập và thực tiễn. b. Nội dung:. c. Sản phẩm: HS vận dụng các kiến thức vào giải quyết các nhiệm vụ đặt ra. d. Tổ chức thực hiện: Gv đưa câu hỏi về nhà: 1. Chương trình sau có chức năng sắp xếp một dãy số cho trước. Hãy kiểm tra xem chương trình có lỗi không? Nếu có thì tìm và sửa lỗi. A = [10, 1, 5, 2, 8, 0, 4] for i in range ( len(A)-1): j = i while j > 1 and A[ j ] < A[ j – 1]: A[ j ], A[ j – 1] = A[ j – 1], A[ j ] j = j – 1 print(A) 2. Để kiểm thử một chương trình, nếu chỉ bằng việc kiểm tra thông qua các bộ dữ liệu test thì có bảo đảm tìm ra hết lỗi của chương trình hay không? Vì sao? 9