Mời các em cùng tham khảo nội dung Bài 15. Gỡ lỗi này, các em sẽ biết chạy thử, tìm lỗi và sửa được lỗi cho chương trình. HOC247 mời các em cùng theo dõi chi tiết bài học dưới đây để nắm vững các kiến thức mới đầy thú vị và bổ ích
Tóm tắt lý thuyết
1.1. Kiểm thử và phân loại lỗi
a. Kiểm thử
- Theo kịch bản, trò chơi sẽ thông báo số lần đoán khi người chơi đoán đúng số bí mật.
- Tuy nhiên, khi chạy thử chương trình, em sẽ thấy số lần đoán mà máy tính hiển thị luôn kém số lần thực tế mà người chơi đã đoán một đơn vị.
- Việc chạy thử chương trình để kiểm tra (còn gọi là kiểm thử) nhằm phát hiện những tinh huống bất thường (được gọi là lỗi) khi thực hiện chương trinh.
- Các lỗi cần được loại bỏ trước khi chương trinh được coi là sản phẩm hoàn chinh và có thể chia sẻ với người khác.
b. Phân loại lỗi
- Khi chạy thử, em nhận ra rằng chương trình vẫn hoạt động vì máy tính vẫn hỏi và trả lời theo sự điều khiển của các khối lệnh.
- Tuy nhiên nó thực hiện không đúng kịch bản vì số lần đoán được hiển thị không đúng với số lần thực tế mà người chơi đã đoán.
- Có hai loại lỗi:
+ Lỗi cú pháp xảy ra khi lệnh viết sai so với quy tắc của ngôn ngữ lập trình, làm cho chương trình không hoạt động.
+ Lỗi logic (hay lỗi ngữ nghĩa) xảy ra khi các câu lệnh trong chương trình tuy được viết đúng cú pháp nhưng thực hiện không đúng kịch bản như trong chương trình cúa trò chơi Đoán số.
1.2. Phát hiện lỗi và sửa lỗi lôgic
- Hầu hết các ngôn ngữ lập trình đều có chức năng chỉ rõ lỗi cú pháp.
- Ngôn ngữ lập trình trực quan, thậm chí còn hạn chế những tình huống xảy ra lỗi cú pháp. Vì vậy lỗi cú pháp dễ dàng được phát hiện và sửa chữa.
- Tuy nhiên, với lỗi lôgic, việc xác định lệnh nào gây ra lỗi và nó đã hoạt động thế nào để tạo ra lỗi ấy không phải lúc nào cũng đơn giản.
a. Phát hiện lỗi lôgic
- Có hai cách thường được sử dụng để phát hiện lỗi lôgic:
+ Cách thứ nhất: Dựa vào phân tích lôgic để tìm lỗi. Tập trung vào những khối lệnh liên quan đến lỗi và so sánh với kịch bản xem chúng có được thực hiện đúng yêu cầu hay không.
Theo cách này, việc phát hiện vị trí xuất hiện lỗi trong chương trình được tìm kiếm bằng cách suy luận lôgic, bắt đầu từ những khối lệnh thực hiện không đúng kịch bản. Hạn chế việc tìm lỗi theo cách dò dòng lệnh.
+ Cách thứ hai: Chạy thử với dữ liệu mẫu để dò lỗi. Vì là người lập trình, em có thể cho hiện giá trị các biến số bí mật và số lần đoán băng cách đánh dấu 0 vào bên cạnh các biến đó trong nhóm “Các biến số” (Hình a).
Lưu ý: Chương trình có thể chạy theo từng bước bằng cách chèn lệnh “đợi… giây” (Hình b) vào những vị trí cần quan sát dữ liệu.
Theo cách này, người lập trình có thể kết hợp chạy chương trình từng bước với việc theo dõi giá trị của các biến, so sánh chúng với các giá trị tương ứng được tính theo cách thủ công để phát hiện câu lệnh nào gây ra lỗi và cách nó hoạt động để gây ra lỗi đó.
b. Sửa lỗi
Khi đã biết vị trí câu lệnh xảy ra lỗi trong chương trình và cách thức câu lệnh đó tạo ra lỗi, em có thể đưa ra những cách sửa lỗi phù hợp với yêu cầu.
1.3. Thực hành: Gỡ lỗi
Nhiệm vụ
Giả sử trong trò chơi Đoán số, không ai được đoán quá 7 lần. Em hãy gỡ lỗi chương trình trò chơi Đoán số đã được bổ sung chức năng thông báo người chơi thua cuộc nếu vẫn đoán sai ở lần thứ 7.
Hướng dẫn
a. Kiểm thử và phát hiện lỗi
Bước 1. Chạy thử chương trình
- Với tình huống đoán đúng số bí mật sau không quá 7 lần đoán, thông báo hiển thị số lần đoán không xuất hiện cụm từ "Số lần đoán:" như trong chương trình.
- Với tình huống đoán sai, chương trình không kết thúc và bảo thua ngay sau khi đoán sai lần thứ 7 mà vẫn cho đoán thêm một lần nữa.
Bước 2. Phát hiện lỗi
- Trong tình huống thứ nhất, lỗi xảy ra ở câu lệnh hiền thị. Phép toán ghép nối các chữ là kết hợp..." chứ không phải dấu “+”.
- Trong tình huống thứ hai, lỗi xảy ra ở biểu thức điều kiện. Vì mỗi người không đoán quá 7 lần, nên vòng lặp (6) – (10) sẽ kết thúc khi số lần đoán bằng 7.
Ngoài ra, sau 7 lần đoán, vẫn có thể xảy ra cả hai khả năng đoán đúng hoặc đoán sai. Vì vậy, số lần đoán không cho biết kết quả đoán đúng hay sai.
b. Sửa các lỗi phát hiện được
- Điều kiện trong câu lệnh (6) cần đổi thành hoặc
- Điều kiện rẽ nhánh ở lệnh (11) cần được chỉnh sửa thành
- Sửa biểu thức trong lệnh hiển thị (14). Khi đó, các lệnh (11) đến (14) như Hình bên dưới.
Bài tập minh họa
Thế nào là lỗi cú pháp, lỗi logic?
Hướng dẫn giải:
Lỗi cú pháp là lỗi do viết chương trình, câu lệnh sai cú pháp dẫn đến chương trình không hoạt động. Hầu hết các ngôn ngữ lập trình đều có công cụ hỗ trợ hạn chế, phát hiện lỗi cú pháp.
Lỗi logic là lỗi xảy ra trong trường hợp chương trình hoạt động nhưng đưa ra kết quả sai. Sử dụng bộ dữ liệu thử là cách thường được sử dụng để phát hiện lỗi logic trong chương trình.
3. Luyện tập Bài 15 Tin học 8 Kết nối tri thức
Sau khi học xong bài này, các em sẽ: Chạy thử, tìm lỗi và sửa được lỗi cho chương trình.
3.1. Trắc nghiệm Bài 15 Tin học 8 Kết nối tri thức
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 8 Kết nối tri thức Bài 15 cực hay có đáp án và lời giải chi tiết.
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
3.2. Bài tập SGK Bài 15 Tin học 8 Kết nối tri thức
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 8 Kết nối tri thức Bài 15 để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Hoạt động 2 trang 86 SGK Tin học 8 Kết nối tri thức - KNTT
Câu hỏi trang 87 SGK Tin học 8 Kết nối tri thức - KNTT
Hoạt động 3 trang 87 SGK Tin học 8 Kết nối tri thức - KNTT
Câu hỏi trang 89 SGK Tin học 8 Kết nối tri thức - KNTT
Luyện tập trang 90 SGK Tin học 8 Kết nối tri thức - KNTT
Vận dụng trang 90 SGK Tin học 8 Kết nối tri thức - KNTT
4. Hỏi đáp Bài 15 Tin học 8 Kết nối tri thức
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học HOC247 sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 8 HỌC247