Bài giảng Tin học 10 (Kết nối tri thức) - Bài 29: Nhận biết lỗi chương trình
Bạn đang xem tài liệu "Bài giảng 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:
bai_giang_tin_hoc_10_ket_noi_tri_thuc_bai_29_nhan_biet_loi_c.pptx
Nội dung tài liệu: Bài giảng Tin học 10 (Kết nối tri thức) - Bài 29: Nhận biết lỗi chương trình
- BÀI 29 NHẬN BIẾT LỖI CHƯƠNG TRÌNH
- 1. NHẬN BIẾT LỖI CHƯƠNG TRÌNH Trường hợp 1: Người lập trình viết sai cú pháp lệnh, chương trình lập tức dừng lại và thông báo lỗi cú pháp >>> While true print(“Hello”) SyntaxError: Invallid syntax
- Trường hợp 2: Người dùng nhập dữ liệu sai, chương trình thông báo lỗi nhập dữ liệu không đúng khuôn dạng >>> n = int( input(“Nhập số nguyên n: “)) Nhập số nguyên n: 1.5 Traceback (most recent call last): File “ ”, line 1, in N= int( input(“Nhập số nguyên n: “))
- Trường hợp 3: Chương trình thông báo lỗi chỉ số vượt quá giới hạn cho phép A = [1, 3, 10, 0] for i in range(5): print(A[i], end = “ “) Khi chạy chương trình sẽ báo lỗi. 1 3 10 0 Traceback (most recent call last): File "C:\Python\Array_b1.py", line 3, in print (A[1],end") IndexError: list index out of range
- Trường hợp 4. Chương trình thực hiện bình thường nhưng kết quả không đúng với yêu cầu của bài toán. Đây là lỗi lôgic bên trong chương trình. # Tính tổng của ba số nguyên dương đầu tiên >>> 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
- - Trường hợp 1: chương trình dừng và thông báo lỗi Syntax Error (lỗi cú pháp) - Trường hợp 2: khi người dùng nhập dữ liệu sai, hàm int() không thể thực hiện được, chương trình dừng lại và báo lỗi. Mã lỗi là ValueError. Đây là lỗi Runtime (lỗi trong khi đang thực hiện) hay còn gọi là lỗi ngoại lệ (Exceptions error) - Trường hợp 3: chương trình phát hiện lỗi chỉ số vượt quá giới hạn tại dòng 3. Chương trình dừng và báo lỗi . Mã lỗi là IndexError. Đây là lỗi Runtime. - 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.
- 1. Khi gõ sai cú pháp một lệnh, chương trình sẽ dừng lại và báo lỗi, đó là lỗi loại gì? 2. Bái toán yêu cầu sắp xếp dãy số ban đầu thành dãy tăng dần. Giả sử dãy số ban đầu là [3, 1, 8, 10, 0]. Kết quả thu được dãy [1, 3, 8, 10, 0]. Chương trình có lỗi không? Nếu có thì lỗi đó thuộc loại gì?
- 2. MỘT SỐ LỖI NGOẠI LỆ THƯỜNG GẶP Mã lỗi ngoại lệ Mô tả lỗi Lỗi này xảy ra khi lệnh thực hiện phép ZeroDivisionError chia cho giá trị 0. Lỗi xảy ra khi lệnh cố gắng truy cập phần IndexError tử của danh sách nhưng chỉ số vượt quá giới hạn. Lỗi xảy ra khi chương trình muốn tìm NameError một tên nhưng không thấy. Ví dụ khi lệnh gọi một hàm nhưng không có hàm đó.
- Mã lỗi ngoại lệ Mô tả lỗi Lỗi kiểu dữ liệu. Một số ví dụ lỗi loại này: - Lệnh truy cập một phần từ của danh sách nhưng TypeError chỉ số không là số nguyên - Lệnh tính biểu thức số nhưng lại có một toán hạng không phải là số Lỗi liên quan đến giá trị của đối tượng. ValueError Lỗi khi thực hiện lệnh chuyển đổi kiểu dữ liệu, đổi số của hàm có giá trị mà hàm không hỗ trợ. Ví dụ khi thực hiện lệnh int("1.55") sẽ sinh lỗi loại này. Lỗi khi các dòng lệnh thụt vào không thẳng hàng IndentationError hoặc không đúng vị trí SyntaxError Lỗi cú pháp.
- 3. THỰC HÀNH Lập trình và kiểm tra khả năng sinh lỗi khi chạy chương trình. 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 ra tổng, hiệu, thương của hai số đã nhập. 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ằ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(). Kết quả thu được sẽ chuyển đổi thành hai số m, n bằng lệnh int( ). Nhập chương trình sau và kiểm tra khả năng sinh lỗi khi chạy chương trình.
- Gợi ý. Các khả năng sinh lỗi của chương trình: - Các số m, n khi nhập vào không là số nguyên - Giữa hai số m, n không có dấu cách - 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à nhập lần lượt n số nguyên đưa vào danh sách số A. Sau khi nhập xong in danh sách A ra màn hình. Hướng dẫn. Nhập chương trình sau và kiểm tra khả năng sinh lỗi khi chạy chương trình.
- 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
- 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)
- LUYỆN TẬP 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 >>> 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ì? Câu 3. 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 4. Em hãy viết một chương trình nhỏ để khi chạy sẽ sinh mã lỗi NameError

