Bài 15. Gỡ lỗi chương trình SGK

Gỡ lỗi chương trình SGK 8 trang 95 Tin Học lớp 8 – Chân Trời Sáng Tạo, mời các em tham khảo cùng Bumbii.

Chủ đề 5. Giải quyết vấn đề với sự trợ giúp của máy tính. Bài 15. Gỡ lỗi chương trình.

KHỞI ĐỘNG

Để so sánh hai số a, b được nhập từ bàn phím, một bạn đã tạo chương trình ở Hình 1. Khi nháy chuột vào nút Go  chương trình không hoạt động. Bạn đã phát hiện được lỗi và chỉnh sửa thành chương trình ở Hình 2. Khi thực hiện chương trình ở Hình 2 và nhập giá trị a, b đều là 5, chương trình đưa ra kết quả sai (xem Hình 3).

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)?

Hình 1. Chương trình không hoạt động

Hình 1. Chương trình không hoạt động

Hình 2. Chương trình đưa ra kết quả sai khi giá trị a, b bằng nhau

Hình 2. Chương trình đưa ra kết quả sai khi giá trị a, b bằng nhau

Hình 3. Chương trình ở Hình 2 đưa ra kết quả sai khi nhập a = 5, b = 5.

Hình 3. Chương trình ở Hình 2 đưa ra kết quả sai khi nhập a = 5, b = 5.

Đáp án:

– Quy tắc tạo chương trình Scratch: Các câu lệnh được lắp ghép với nhau bằng khớp nối; chương trình ở Hình 1 không chạy được vì  và  là các khối lệnh thực hiện phép toán, không phải câu lệnh nên không có khớp nối để lắp ghép với các câu lệnh khác.

– Chương trình ở Hình 2 cho phép nhập hai số a, b từ bàn phím, so sánh hai số này và đưa ra kết quả so sánh; chương trình ở Hình 2 đưa ra kết quả sai khi nhập bộ dữ liệu (a, b) là (5, 5) vì chương trình chưa xét đến trường hợp a = b.

1. Phát hiện và phân loại

Hoạt động

Tìm hiểu và đề xuất bộ dữ liệu thử để phát hiện lỗi chương trình ở Hình 4. Theo em lỗi chương trình ở Hình 4 thuộc loại nào?

Hình 4. Chương trình tìm nghiệm phương trình ax + b = 0

Hình 4. Chương trình tìm nghiệm phương trình ax + b = 0

Đáp án:

Chương trình ở Hình 4 thực hiện giải phương trình bậc nhất ax + b = 0 với hệ số a, b được nhập từ bàn phím.

Có 3 trường hợp:

– Phương trình vô nghiệm khi a = 0, b ≠ 0.

– Phương trình có vô số nghiệm khi a = 0, b = 0.

– Phương trình có 1 nghiệm khi a ≠ 0.

Các bộ dữ liệu thử tương ứng với các trường hợp là: a = 0, b ≠ 0; a = 0, b = 0; a ≠ 0, b là số bất kì.

Chương trình ở Hình 4 không có lỗi cú pháp nên có thể chạy được. Khi thực hiện chương trình với các bộ dữ liệu có a = 0 sẽ dẫn đến chương trình thông báo không đúng nghiệm số của phương trình. Đó là lỗi lôgic.

2. Gỡ lỗi

Hoạt động

Câu 1

Hình 6 là kết quả kiểm thử chương trình ở Hình 4. Em hãy quan sát Hình 6 và cho biết:

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 lỗi này là gì?

Hình 6. Kết quả kiểm thử chương trình ở Hình 4.

Hình 6a

Hình 6b

Hình 6c

Đáp án:

– Lỗi phát sinh khi sử dụng bộ dữ liệu (0, 2); (0, 0).

 là câu lệnh trực tiếp tạo ra lỗi.

 là câu lệnh liên quan đến lỗi.

– Nguyên nhân gây ra lỗi là chương trình chưa tính đến trường hợp a = 0.

Câu 2

Em hãy lắp các câu lệnh, khối lệnh ở cột bên phải vào vị trí thích hợp trong cấu trúc điều khiển ở cột bên trái để tạo thành chương trình tính đúng nghiệm của phương trình ax + b = 0.

Bảng 1. Ví dụ một phương án chỉnh sửa chương trình ở Hình 4.

Cấu trúc điều khiểnCâu lệnh, khối lệnh
a)  
b)
c)  
d)  
e)

Đáp án:

Thứ tự ghép đúng là: 1 – d; 2 – a; 3 – b; 4 – e; 5 – c.

LUYỆN TẬP

Câu 1. Thế nào là lỗi cú pháp, lỗi logic?

Đáp án:

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.

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.

Câu 2

Hãy sắp xếp các việc dưới đây theo trình tự để phát hiện, gỡ lỗi 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.

Đáp án:

Trình tự đúng để phát hiện, gỡ lỗi chương trình là: A-C-E-B-D.

Câu 3

Những phát biểu nào sau đây là sai khi nói về việc xác định vị trí, nguyên nhân gây lỗi?

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.

Đáp án:

Phát biểu C là phát biểu sai.

Câu 4

Hình 7 là chương trình một bạn đã tạo với mục đích tính và thông báo tổng của 10 số được nhập từ bàn phím. Theo em, khi thực hiện, chương trình này có đưa ra kết quả như bạn mong muốn hay không? Tại sao?

Hình 7. Chương trình nhập và tính tổng 10 số được nhập từ bàn phím

Đáp án:

Câu lệnh  trong chương trình ở Hình 7 đặt sai vị trí, dẫn đến tổng S sai (chỉ là giá trị của số cuối cùng được nhập từ bàn phím). Đây là lỗi logic.

THỰC HÀNH

Câu 1

Tạo chương trình ở Hình 2, thực hiện kiểm thử, gỡ lỗi để chương trình đưa ra kết quả đúng với mọi cặp số a, b.

Hướng dẫn:

Chương trình Scratch Hình 2:

Kiểm thử chương trình với các bộ dữ liệu thử (với giá trị a, b bằng nhau) để phát hiện lỗi.

Chương trình cho ra kết quả đúng với mọi số a, b.

Chương trình đã gỡ lỗi cho ra kết quả đúng với mọi số a, b.

Câu 2

Thực hành theo các yêu cầu sau:

a) Tạo chương trình ở Hình 4.

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.

Hướng dẫn:

a) Chương trình tìm nghiệm phương trình ax + b = 0. (Hình 4)

b) Chạy thử chương trình với các bộ dữ liệu thử (a= 0, b ≠ 0), (a = 0, b = 0) để phát hiện lỗi chương trình.

c) Tiến hành sửa lỗi chương trình theo gợi ý ở Bảng 1.

Chương trình đã được gỡ lỗi

Câu 3

Tạo chương trình ở Hình 7. Thực hiện kiểm thử, gỡ lỗi để chương trình đưa ra đúng tổng của 10 số được nhập từ bàn phím.

Hướng dẫn

Chương trình đã được sửa lỗi để đưa ra đúng tổng của 10 số được nhập từ bàn phím:

Xem các bài giải khác tại Giải sách giáo khoa tin học lớp 8 – Chân Trời Sáng Tạo

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x