Giải Tin học 8 Bài 15 (Chân trời sáng tạo): Gỡ lỗi chương trình
Với giải bài tập Tin học 8 Bài 15: Gỡ lỗi chương trình sách Chân trời sáng tạo hay nhất, chi tiết giúp học sinh dễ dàng làm bài tập Tin học 8 Bài 15.
Giải Tin học Bài 15: Gỡ lỗi chương trình
Hãy thảo luận với bạn và cho biết:
- Tại sao chương trình ở Hình 1 không hoạt động?
- Tại sao chương trình ở Hình 2 đưa ra kết quả sai khi nhập cặp số a, b là (5;5)?
Trả lời:
Chương trình 1 có lỗi cú pháp, câu lệnh 2, 3 không khớp nối với câu lệnh 1, 4.
Chương trình 2 có lỗi logic, a = b thuộc trường hợp a > b sai nên chương trình đưa ra thông báo sai khi nhập hai số a, b bằng nhau.
1. Phát hiện và phân loại lỗi
Trả lời:
Bộ dữ liệu thử: a = 0, b bất kì.
- Theo em lỗi ở chương trình 4 thuộc loại lỗi logic.
2. Gỡ lỗi
a) Lỗi được phát hiện khi thực hiện chương trình với những bộ dữ liệu nào?
b) Câu lệnh nào trực tiếp tạo ra lỗi? Câu lệnh nào liên quan đến lỗi?
c) Nguyên nhân gây ra lỗi này là gì?
Trả lời:
a) Lỗi được phát hiện khi thực hiện chương trình với bộ dữ liệu Hình 6b: a = 0, b = 2 và Hình 6c: a = 0, b = 0.
b) Câu lệnh trực tiếp tạo ra lỗi là:
Câu lệnh liên quan đến lỗi là:
c) Nguyên nhân gây ra lỗi này là: lỗi logic vì phép chia cho 0 là không xác định.
Trả lời:
Cách 1: 1 - b, 2 - a, 3 - d, 4 - e, 5 - c.
Cách 2: 1 - d, 2 - e, 3 - b, 4 - a, 5 - c.
Luyện tập (trang 98)
Luyện tập 1 trang 98 Tin học 8: Thế nào là lỗi cú pháp, lỗi logic?
Trả lờ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.
A. Xây dựng bộ dữ liệu thử với các tình huống có thể xảy ra khi đưa chương trình vào sử dụng.
B. Tìm câu lệnh, cấu trúc điều khiển gây ra lỗi.
C. Thực hiện chương trình với các bộ dữ liệu thử.
D. Sửa lỗi cho chương trình.
E. Xác định nguyên nhân gây lỗi.
Trả lời:
A → C → B → E → D.
A. Cần tập trung xem xét câu lệnh, cấu trúc điều khiển trực tiếp tạo ra lỗi hay liên quan đến lỗi.
B. Xem xét kĩ lưỡng, cụ thể hoạt động của câu lệnh, cấu trúc điều khiển tạo ra lỗi hay liên quan đến lỗi trong tình huống phát sinh lỗi.
C. Người lập trình không cần sử dụng tư duy logic của bản thân để phân tích, suy luận nguyên nhân gây ra lỗi.
D. Khi cần thiết, ta có thể bổ sung một số câu lệnh để theo dõi sự thay đổi giá trị của các biến, kết quả thực hiện câu lệnh, cấu trúc điều khiển nào đó, từ đó giúp xác định vị trí, nguyên nhân gây ra lỗi dễ dàng, nhanh chóng hơn.
Trả lời:
Đáp án C.
Trả lời:
Theo em khi thực hiện chương trình này không ra kết quả như mong muốn vì khi khởi tạo giá trị ban đầu cho biến S là 0 trong điều kiện lặp khiến cho giá trị của S trở lại thành 0 sau mỗi lần lặp. Điều này dẫn đến kết quả sai.
Thực hành (trang 98)
Chương trình đưa ra kết quả sai khi giá trị a, b bằng nhau.
Gỡ lỗi: Thay đổi đoạn chương trình so sánh hai số a, b với 3 trường hợp như sau
Thực hành 2 trang 98 Tin học 8: Thực hành theo các yêu cầu sau
b) Chạy thử chương trình với các bộ dữ liệu thử em đã đề xuất ở hoạt động làm của Mục 1 để phát hiện lỗi chương trình.
c) Thực hiện gỡ lỗi để chương trình tính đúng nghiệm của phương trình ax + b = 0 với mọi cặp số a, b.
Trả lời:
a) HS tạo chương trình như sau:
b) Chạy thử với bộ dữ liệu thử: a = 0, b = 2 và a = 0, b = 0.
c) Gỡ lỗi:
- HS tự thực hiện tạo chương trình như sau và tiến hành kiểm thử.
- Gỡ lỗi: Chuyển lệnh gán giá trị ban đầu S = 0 ra khỏi điều kiện lặp.
Vận dụng (trang 98)
Trả lời:
HS tự thực hành
Lý thuyết Gỡ lỗi chương trình
- Kiểm thử là công đoạn quan trọng trong quy trình sản xuất phần mềm, giúp kiểm tra tính hoạt động của chương trình.
- Phát hiện lỗi trong chương trình là một trong những mục đích chính của việc kiểm thử.
- Lỗi chương trình có thể được phân thành hai loại:
+ Lỗi cú pháp: là lỗi 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 cung cấp công cụ phát hiện lỗi cú pháp.
+ Ngôn ngữ lập trình trực quan như Scratch giúp hạn chế những tình huống gây ra 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.
- Chương trình ở Hình 2 đưa ra kết quả sai khi nhập giá trị a, b bằng nhau.
- Nguyên nhân là do phép so sánh a > b cho kết quả là sai, và khi đó chương trình đưa ra thông báo a nhỏ hơn b.
- Tuy nhiên, a = b cũng thuộc trường hợp này, dẫn đến chương trình đưa ra thông báo sai.
- Thực hiện chương trình với các bộ dữ liệu cụ thể là cách thường được sử dụng để phát hiện lỗi logic trong chương trình.
- Các bộ dữ liệu thử cần được xây dựng để kiểm thử các tình huống có thể xảy ra khi đưa chương trình vào sử dụng.
- Sau khi phát hiện lỗi, ta cẩn tìm câu lệnh, cấu trúc điều khiển gây ra lỗi, nguyên nhân gây ra lỗi và sửa lỗi chương trình (còn được gọi là gỡ lỗi).
- Các công cụ hỗ trợ lập trình giúp xác định các câu lệnh, cấu trúc điều khiển sai cú pháp một cách dễ dàng.
- Tuy nhiên, việc phát hiện lỗi logic thường không dễ dàng bằng cách này.
- Dưới đây là một số lưu ý trong việc xác định vị trí, nguyên nhân gây lỗi logic:
+ Cần tập trung xem xét câu lệnh trực tiếp tạo ra lỗi và những câu lệnh, cấu trúc điều khiển có liên quan logic đến lỗi.
+ Xem xét kỹ lưỡng, cụ thể hoạt động của câu lệnh, cấu trúc điều khiển này trong tình huống phát sinh lỗi.
+ Bằng tư duy logic của bản thân, ta cần phân tích, suy luận để xác định nguyên nhân gây lỗi. Ví dụ, nguyên nhân lỗi trong chương trình ở Hình 2 là chưa tính đến trường hợp a=b.
- Bổ sung câu lệnh để theo dõi sự thay đổi giá trị của các biến, kết quả thực hiện câu lệnh, cấu trúc điều khiển nào đó giúp xác định vị trí, nguyên nhân gây ra lỗi dễ dàng và nhanh chóng hơn khi cần thiết.
- Khi đã xác định được câu lệnh, cấu trúc điều khiển, nguyên nhân gây ra lỗi ta có thể thực hiện chỉnh sửa lỗi.
- Để sửa lỗi cú pháp chương trình ở Hình 1, ta cần kết hợp câu lệnh ask and wait với set to để nhập hai số a, b từ bàn phím (Hình 2).
- Để sửa lỗi logic chương trình ở Hình 2, ta cần chỉnh sửa để chương trình xét cả 3 trường hợp có thể xảy ra khi so sánh hai số a, b (Hình 5).
Xem thêm lời giải bài tập Tin học lớp 8 Chân trời sáng tạo hay, chi tiết khác:
Bài 11b: Tẩy, tạo hiệu ứng cho ảnh
Xem thêm các chương trình khác:
- Soạn văn lớp 8 Chân trời sáng tạo (hay nhất)
- Văn mẫu lớp 8 - Chân trời sáng tạo
- Tóm tắt tác phẩm Ngữ văn 8 – Chân trời sáng tạo
- Bố cục tác phẩm Ngữ văn lớp 8 – Chân trời sáng tạo
- Tác giả tác phẩm Ngữ văn lớp 8 - Chân trời sáng tạo
- Giải SBT Ngữ văn 8 – Chân trời sáng tạo
- Nội dung chính tác phẩm Ngữ văn lớp 8 – Chân trời sáng tạo
- Soạn văn 8 Chân trời sáng tạo (ngắn nhất)
- Giải sgk Toán 8 – Chân trời sáng tạo
- Lý thuyết Toán 8 – Chân trời sáng tạo
- Giải sbt Toán 8 – Chân trời sáng tạo
- Giải sgk Tiếng Anh 8 – Friends Plus
- Giải sbt Tiếng Anh 8 - Friends plus
- Trọn bộ Từ vựng Tiếng Anh 8 Friends plus đầy đủ nhất
- Trọn bộ Ngữ pháp Tiếng Anh 8 Friends plus đầy đủ nhất
- Giải sgk Khoa học tự nhiên 8 – Chân trời sáng tạo
- Lý thuyết Khoa học tự nhiên 8 – Chân trời sáng tạo
- Giải sgk Lịch sử 8 – Chân trời sáng tạo
- Lý thuyết Lịch sử 8 - Chân trời sáng tạo
- Giải sbt Lịch sử 8 – Chân trời sáng tạo
- Giải sgk Địa lí 8 – Chân trời sáng tạo
- Lý thuyết Địa lí 8 - Chân trời sáng tạo
- Giải sbt Địa lí 8 – Chân trời sáng tạo
- Giải sgk Giáo dục công dân 8 – Chân trời sáng tạo
- Lý thuyết Giáo dục công dân 8 – Chân trời sáng tạo
- Giải sbt Giáo dục công dân 8 – Chân trời sáng tạo
- Giải sgk Công nghệ 8 – Chân trời sáng tạo
- Lý thuyết Công nghệ 8 - Chân trời sáng tạo
- Giải sbt Công nghệ 8 – Chân trời sáng tạo
- Giải sgk Hoạt động trải nghiệm 8 – Chân trời sáng tạo