CHỦ ĐỀ 5 GIẢI QUYẾT VẤN ĐỀ VỚI SỰ TRỢ GIÚP CỦA MÁY TÍNH 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 Về kiến thức Biết và phân loại được một số loại[.]
CHỦ ĐỀ 5: GIẢI QUYẾT VẤN ĐỀ VỚI SỰ TRỢ GIÚP CỦA MÁY TÍNH 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: tiết I MỤC TIÊU Về kiến thức - Biết phân loại số loại lỗi chương trình - Biết vài lỗi ngoại lệ thường gặp Về lực 2.1 Năng lực chung - Năng lực tự chủ, tự học: chủ động tích cực thực nhiệm vụ học tập; vận dụng kiến thức, kĩ học để hoàn thành nhiệm vụ - Năng lực giao tiếp hợp tác: hiểu mục đích giao tiếp giao tiếp hiệu hoạt động nhóm - Năng lực giải vấn đề sáng tạo: Phân tích tình huống, đề xuất lựa chọn giải pháp để giải vấn đề giáo viên đặt 2.2 Năng lực tin học - NLc (Giải vấn đề với hỗ trợ công nghệ thông tin truyền thông): HS rèn luyện, bồi dưỡng lực giải vấn đề thông qua việc sử ngôn ngữ lập trình Python để giải tốn phát sửa lỗi gặp phải lập trình, đồng thời phát triển lực tư lập trình - NLd (Ứng dụng cơng nghệ thơng tin truyền thông học tự học): HS Khai thác dịch vụ tra cứu trao đổi thông tin, nguồn học liệu mở để cập nhật kiến thức lỗi chương trình dùng NNLT Python, hỗ trợ học tập tự học - NLe (Hợp tác mơi trường số): Có khả làm việc nhóm, hợp tác việc tạo ra, trình bày giới thiệu sản phẩm Về phẩm chất - Hình thành ý thức trách nhiệm, tính cẩn thận làm việc nhóm - Rèn luyện phẩm chất làm việc chăm chỉ, chuyên cần thực nhiệm vụ II THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU Đối với GV: - Máy chiếu, máy tính cài đặt sẵn Python, chương trình mẫu để chạy minh họa kết cho học sinh quan sát - Sách giáo khoa, Sách giáo viên, kế hoạch dạy, giảng điện tử Đối với HS: - Sách giáo khoa, ghi - Điện thoại thơng minh, máy tính III TIẾN TRÌNH DẠY HỌC A HOẠT ĐỘNG MỞ ĐẦU (Thời gian 10 phút) a Mục tiêu: - Học sinh phát vấn đề chương trình có lỗi - Chỉ vị trí có lỗi đơn giản b Nội dung: - Phát lỗi chương trình giáo viên cho - Sửa lỗi để chương trình chạy c Sản phẩm: - Học sinh lỗi: sau if else thiếu dấu (:), thiếu dấu đóng ngoặc câu lệnh print("dien tich tam giac: ", math.sqrt(p*(p-a)*(p-b)*(p-c) - Phát lỗi khai báo biến t d Tổ chức hoạt động Bước Giao nhiệm vụ học tập - Giáo viên chiếu chương trình chuẩn bị sẵn lên ti vi Yêu cầu nhóm quan sát thảo luận tìm lỗi chương trình a=float(input("a= ")) b=float(input("b= ")) c=float(input("c= ")) t == (a+b)>c and (b+c)>a and (a+c)>b if t print("chu vi tam giac: ", a+b+c) p= (a+b+c)/2 import math print("dien tich tam giac: ", math.sqrt(p*(p-a)*(p-b)*(p-c) else print(" khong phai tam giac") Bước Thực nhiệm vụ - Học sinh quan sát tiến hành thảo luận Bước Báo cáo, thảo luận - Học sinh thảo luận tìm lỗi sau if t else thiếu dấu (:), thiếu dấu đóng ngoặc câu lệnh print("dien tich tam giac: ", math.sqrt(p*(p-a)*(pb)*(p-c) Bước Kết luận, nhận định - Giáo viên cho học sinh lên sửa trực tiếp máy tính lỗi bạn phát Sau chạy chương trình Học sinh thấy chương trình chạy chưa cho kết được, chương trình báo lỗi NameError: name 't' is not defined - Giáo viên sửa lỗi xong chạy cho học sinh xem - Nhận định: Trong trình lập trình khơng tránh khỏi sai sót Để xử lý vấn đề phát sinh lập trình cần biết phân biệt loại lỗi Python, Với loại lỗi có cách xử lí kiểm sốt khác Và để rõ vấn đề hôm tìm hiểu 29: NHẬN BIẾT LỖI CHƯƠNG TRÌNH B HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC (Thời gian 50’) Hoạt động Nhận biết phân biệt số loại lỗi chương trình (Thời gian 15’) a Mục tiêu - Học sinh nhận biết lập trình gặp phải nhiều loại lỗi khác - Học sinh phân biệt loại lỗi b Nội dung - Quan sát ví dụ giáo viên thực trực tiếp máy tính để nhận biết loại lỗi gặp phải c Sản phẩm: - Học sinh phân biệt ba loại lỗi: + Lỗi cú pháp + Lỗi ngoại lệ + Lỗi lơgic bên chương trình d Tổ chức hoạt động HOẠT ĐỘNG CỦA GV – HS DỰ KIẾN SẢN PHẨM Bước Giao nhiệm vụ học tập Giáo viên chia lớp thành nhóm, yêu cầu học sinh thực nhiệm vụ sau: NV1: Dùng máy tính điện thoại thơng minh thực ví dụ sau Cho biết tượng xảy ví dụ Sản phẩm VD1: VD1: lỗi SyntaxError: invalid syntax >>> if 2>3 Print(2+3) VD2: VD2: lỗi >>> n = int(input(“nhap n:”)) Traceback (most recent call last): Nhập n: 1.5 VD3 a=[1,3,10,0] for i in range(5): print(a[i],end = " ") VD4: Tính tổng 1+2+3 >>>s =0 >>>for i in range (3): s = s+i >>>print(s) NV2: Phân biệt lỗi ví dụ Bước Thực nhiệm vụ HS tiếp nhận nhiệm vụ, hoạt động nhóm, thảo luận, hồn thành NV giao - Nghiên cứu ví dụ 1, 2, 3,4 theo nhóm Sử dụng điện thoại thơng minh máy tính để thao tác lệnh ví dụ thu thập kết - Trả lời nhiệm vụ Ghi lại đáp án thống bảng phụ GV quan sát học sinh thảo luận, tự học, trợ giúp kịp thời em cần hỗ trợ Bước Báo cáo, thảo luận GV gọi đại diện nhóm HS hồn thành nhanh treo sản phẩn lên bảng trình bày HS trình bày kết thu nhận File "", line 1, in n = int(input("nhap n:")) ValueError: invalid literal for int() with base 10: '1.5' VD3: lỗi 10 Traceback (most recent call last): File "C:/Users/Admin/Desktop/HINHTRON.py" , line 3, in print(a[i],end = " ") IndexError: list index out of range VD4 Sản phẩm VD1: Lỗi sai cú pháp VD2: Lỗi nhập liệu không khuôn dạng VD3: Lỗi số vượt giới hạn cho phép VD4: Lỗi lôgic bên chương trình (cho kết sai) ……………… GV yêu cầu nhóm HS khác đưa ý kiến nhận xét, đánh giá Bước Kết luận, nhận định Có thể phân biệt lỗi chương trình Python thành loại: Lỗi có lệnh viết sai cú pháp sai cấu trúc ngơn ngữ Python quy định Chương trình dừng thông báo lỗi Syntax Error Lỗi thực lệnh chương trình Chương trình dừng lại thơng báo mã lỗi Exceptions Error Lỗi gọi lỗi ngoại lệ Chương trình chạy khơng lỗi ngoại lệ, kết đưa sai, khơng xác Đây lỗi lơ gic bên chương trình Hoạt động Một số lỗi ngoại lệ thường gặp (Thời gian 15’) a Mục tiêu - Nhận biết số lỗi ngoại lệ thường gặp chương trình Python - Xử lí lỗi b Nội dung - Quan sát chạy chương trình mẫu để phát lỗi ngoại lệ, phát lỗi chương trình gặp phải, thống kê mã lỗi ngoại lệ mô tả lỗi vào phiếu học tập - Sau nhóm sửa lỗi để chương trình hồn chỉnh c Sản phẩm - Phiếu học tập học sinh - Chương trình sửa lỗi d Tổ chức hoạt động HOẠT ĐỘNG CỦA GV – HS Bước Giao nhiệm vụ học tập Giáo viên chiếu lệnh bảng, phát phiếu học tập Yêu cầu học sinh thực nhiệm vụ sau: NV1: Gõ lệnh cho vào máy tính điện thoại thơng minh, phát lỗi sinh chương trình, thống kê mã lỗi vào phiếu học tập Lệnh 1: A[1.5] Lệnh 2: int (“abc”) Lệnh 3: “10”*3.5 Lệnh 4: 12 + x(10) Lệnh 5: n = int(input(“nhap n”)) print( 10/n) NV2: Mô tả lỗi vừa phát theo mẫu phiếu học tập Bước Thực nhiệm vụ HS tiếp nhận nhiệm vụ, hoạt động nhóm, thảo luận, hồn thành NV giao - Nghiên cứu chương trình theo nhóm Sử dụng điện thoại thơng minh máy tính để thao tác lệnh ví dụ thu thập kết - Trả lời nhiệm vụ Ghi lại đáp án thống bảng phụ GV quan sát học sinh thảo luận, tự học, trợ giúp kịp thời em cần hỗ trợ Bước Báo cáo, thảo luận GV gọi đại diện nhóm HS hoàn thành nhanh treo sản phẩn lên bảng trình bày HS trình bày kết thu nhận DỰ KIẾN SẢN PHẨM Sản phẩm A[1.5]: NameError int(“abc”): ValueError “10”*3.5: TypeError 12 + x(10): NameError n = int(input(“nhap n”)) print( 10/n) ZeroDivisionError (nếu nhập số 0) Sản phẩm Phiếu học tập GV yêu cầu nhóm HS khác đưa ý kiến nhận xét, đánh giá Bước Kết luận, nhận định Giáo viên nhận xét đánh giá kết thảo luận học sinh Chuẩn hóa kiến thức bổ sung thêm số lỗi ngoại lệ khác Hoạt động Lập trình kiểm tra khả sinh lỗi chạy chương trình (Thời gian 20’) a Mục tiêu - Rèn luyện kỹ lập trình cho học sinh - Biết cách kiểm tra khả sinh lỗi chạy chương trình b Nội dung Thực kiểm tra lỗi phát sinh hai chương trình - Viết chương trình nhập số nguyên m, n từ bàn phím, cách dấu cách Chương trình đưa tổng, hiệu, thương hai số nhập - Viết chương trình nhập số tự nhiên n nhập n số nguyên vào danh sách số A Sau nhập xong in danh sách số A hình c Sản phẩm: - Những lỗi có khả sinh chương trình học sinh ghi bảng phụ d Tổ chức hoat động HOẠT ĐỘNG CỦA GV – HS DỰ KIẾN SẢN PHẨM Bước Giao nhiệm vụ học tập Giáo viên giao nhiệm vụ cho học Sản phẩm 1: Đối với nhiệm vụ sinh Yêu cầu học sinh tìm hiểu thực Lỗi 1: TypeError: 'str' object cannot kiểm tra khả sinh lỗi be interpreted as an integer (các số m, chương trình Viết lỗi n khơng phải số ngun) sinh chương trình bảng phụ Lỗi 2: IndexError: list index out of NV1: Viết chương trình nhập số range (giữa m, m khơng có dấu cách) ngun m, n từ bàn phím, cách Lỗi 3: ZeroDivisionError: division by dấu cách Chương trình đưa zero (lỗi chia cho số lí nhập n=0) tổng, hiệu, thương hai số nhập NV2: Viết chương trình nhập số tự Sản phẩm 2: Đối với nhiệm vụ nhiên n nhập n số nguyên Lỗi 1: ValueError: invalid literal for vào danh sách số A Sau nhập int() with base 10: '2.3' (số n khơng xong in danh sách số A hình phải số nguyên Bước Thực nhiệm vụ HS tiếp nhận nhiệm vụ, hoạt động nhóm, thảo luận, hoàn thành NV giao - Nghiên cứu chương trình theo nhóm Sử dụng điện thoại thơng minh máy tính để thao tác lệnh NV1 thu thập kết - Tiếp tục thực với nhiệm vụ Ghi lại đáp án thống bảng phụ GV quan sát học sinh thảo luận, tự học, trợ giúp kịp thời em cần hỗ trợ Bước Báo cáo, thảo luận GV gọi đại diện nhóm HS hồn thành nhanh treo sản phẩn lên bảng trình bày HS trình bày kết thu nhận GV yêu cầu nhóm HS khác đưa ý kiến nhận xét, đánh giá Bước Kết luận, nhận định Giáo viên nhận xét đánh giá kết thảo luận học sinh Chuẩn hóa kiến thức: Có số lỗi phát dịch chương trình (lỗi cú pháp) có lỗi ta phát chạy chương trình (lỗi ngoại lệ) Để kiểm sốt lỗi phát phát sinh chương trình bước kiểm thử công đoạn quan trọng Cách kiểm thử gỡ lỗi chương trình tìm hiểu kỹ 30 Lỗi 2: ValueError: invalid literal for int() with base 10: '1.2' (số hạng danh sách nhập số nguyên) C HOẠT ĐỘNG LUYỆN TẬP (Thời gian 15’) a Mục tiêu - Luyện tập phát lỗi sinh chương trình - Phân biệt loại lỗi b Nội dung - Trả lời câu hỏi trang 144 SGK c Sản phẩm - Phiếu học tập học sinh d Tổ chức hoạt động Bước Giao nhiệm vụ học tập - Yêu cầu học sinh thực tập 1,2 phần luyện tập trang 144 sách giáo khoa Bước Thực nhiệm vụ - HS thực theo yêu cầu Bước Báo cáo, thảo luận - Giáo viên kiểm tra sản phẩm HS - Cho học sinh trình bày sản phẩm Bước Kết luận, nhận định - Giáo viên nhận xét làm học sinh chuẩn hóa kiến thức Bài 1: Các lệnh sau có sinh lỗi chương trình hay khơng? Đó lỗi gì? >>> A = [1,3,5,7,10,0] >>> for k in range(1, len(A)+1): Print(A[k]) >>> s1, s2 = “101010”, 1010101 >>> s = s1 + s2 Lệnh 1: SyntaxError Lệnh 2: TypeError Bài 2: Để tính giá trị trung bình 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 sinh lỗi ngoại lệ khơng? Nếu có lỗi gì? Lỗi phát sinh lỗi chia cho dãy A rỗng D HOẠT ĐỘNG VẬN DỤNG (Thời gian 15’) a Mục tiêu - Củng cố lại kiến thức học sinh học - Vận dụng kiến thức để giải tập, hiểu phân biệt loại lỗi sinh chương trình b Nội dung - Bài tập trang 144 c Sản phẩm - Chương trình HS - Danh sách lỗi sinh chương trình d Tổ chức hoạt động Bước Giao nhiệm vụ học tập - GV: yêu cầu học sinh đọc đề thực Giả sử em yêu cầu viết chương trình nhập số tự nhiên n từ bàn phím, kết đưa danh sách ước số thực n, tính khơng tính n Hãy viết chương trình kiểm tra khả sinh lỗi thực chương trình Bước Thực nhiệm vụ - HS thực nhiệm vụ Bước Báo cáo, thảo luận - Cho hs lên viết lại chương trình lên máy tính - Các hs khác thảo luận cho ý kiến - Hs chạy thử chương trình để kiểm tra sinh lỗi Bước Kết luận, nhận định - GV nhận xét làm học sinh, chuẩn hóa kiến thức Các khả sinh lỗi chương trình: - Số n nhập vào khơng phải số tự nhiên - Viết n = input(): lỗi chưa đổi kiểu liệu - Cho range (1, n + 1): đó, kết cho n 10 câu hỏi trắc nghiệm 29 nhận biết lỗi chương trình Câu Có loại lỗi mà người lập trrình thường mắc giải tốn ngơn ngữ lâp trinh Python A B C D Câu Trong loại lỗi lỗi khó phát – phát người? A Lỗi cú pháp B Lỗi ngữ nghĩa C Lỗi ngoại lệ D Lỗi cấu trúc Câu Lỗi khơng thực lệnh chương trình Chương trình dừng lại thông báo mã lỗi Lỗi gọi lỗi … A Lỗi cú pháp B Lỗi ngữ nghĩa C Lỗi ngoại lệ D Lỗi cấu trúc Câu Lỗi mà chương trình chạy khơng có lỗi ngoại lệ kết đưa sai, lỗi … A Lỗi cú pháp B Lỗi ngữ nghĩa C Lỗi ngoại lệ D Lỗi cấu trúc Câu Lệnh sau có lỗi nào? Print (“Ket qua phep chia la”, 145/0) A Lỗi cú pháp có mã lỗi SyntaxError B Lỗi ngữ nghĩa có mã lỗi ZeroDivisionError C Lỗi ngoại lệ có mã lỗi ZeroDivisionError D Lỗi cấu trúc có mã lỗi ZeroDivisionError Câu Lệnh sau có lỗi nào? Print (“Ket qua phep chia la , 145/5) A Lỗi cú pháp có mã lỗi SyntaxError B Lỗi ngữ nghĩa có mã lỗi ZeroDivisionError C Lỗi ngoại lệ có mã lỗi ZeroDivisionError D Lỗi cấu trúc có mã lỗi ZeroDivisionError Câu Lệnh sau có lỗi nào? if (a==b): print (“a bang b”) else: print (“a lớn b”) A Lỗi cú pháp B Lỗi ngữ nghĩa C Lỗi ngoại lệ D Lỗi cấu trúc Cho dãy lệnh giải phương trình bậc hai delta = b*b-*a*c if (delta>=0): print (“Phương trình cho có nghiệm”) else: print (“Phương trình cho vơ nghiệm”) Câu Dãy lệnh có lỗi ngữ nghĩa khơng? Nếu có dịng lệnh nào? A Có, dịng lệnh tính delta B Có, dịng lệnh kiểm tra điều kiện delta C Có, dịng lệnh đưa thông báo sau else D Không Câu Dãy lệnh có lỗi khác khơng? A Có, lỗi ngoại lệ B Có, lỗi cấu trúc C Có, lỗi ngữ pháp D Khơng Câu 10 Em sửa lại lỗi ngữ nghĩa dãy lệnh A delta = b*b-4*a*c B if (delta >0) C Câu lệnh print sau else print (“Phương trình có nghiệm kép) ... khơng thực lệnh chương trình Chương trình dừng lại thơng báo mã lỗi Lỗi gọi lỗi … A Lỗi cú pháp B Lỗi ngữ nghĩa C Lỗi ngoại lệ D Lỗi cấu trúc Câu Lỗi mà chương trình chạy khơng có lỗi ngoại lệ... hiểu 29: NHẬN BIẾT LỖI CHƯƠNG TRÌNH B HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC (Thời gian 50’) Hoạt động Nhận biết phân biệt số loại lỗi chương trình (Thời gian 15’) a Mục tiêu - Học sinh nhận biết lập trình. .. số lỗi phát dịch chương trình (lỗi cú pháp) có lỗi ta phát chạy chương trình (lỗi ngoại lệ) Để kiểm sốt lỗi phát phát sinh chương trình bước kiểm thử công đoạn quan trọng Cách kiểm thử gỡ lỗi chương