chương trình dịch phát hiện được các lỗi .........nhưng không phát hiện được các lỗi [ điền từ vào chỗ chấm ]
Để 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 lệnh 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)?
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.
Em hãy thực hành kiểm thử, gỡ lỗi cho các chương trình em đã tạo ở các Bài 12, 13, 14. Trao đổi với bạn về những lỗi đã được em phát hiện, sửa chữa.
Chọn phát biểu đúng nhất về hoạt động gỡ lỗi.
A. Gỡ lỗi là phát hiện và loại bỏ lỗi. Trong lập trình, không nhất thiết phải gỡ lỗi.
B. Gỡ lỗi là chạy thử chương trình để phát hiện lỗi. Trong lập trình, không nhất thiết phải gỡ lỗi.
C. Gỡ lỗi là chạy thử chương trình để phát hiện lỗi. Gỡ lỗi là một phần quan trọng của lập trình.
D. Gỡ lỗi là phát hiện và loại bỏ lỗi. Gỡ lỗi là một phần quan trọng của lập trình.
Câu 2 : Thông thường, có thể xảy ra hai loại lỗi khác nhau khi dịch và thực hiện chương trình: lỗi do viết sai quy tắc ( còn gọi là lỗi cú pháp) và những lỗi phát hiện trong khi chương trình thực hiện hoặc sau khi chương trình đã thực hiện (Còn gọi là lỗi ngữ nghĩa). Ví dụ , một số lỗi ngữ nghĩa là : chia cho số 0, số vượt quá phạm vi bộ nhớ đã khai báo, thuật toán sai,…
Hãy điền các từ (Cú pháp, ngữ nghĩa) thích hợp vào chỗ trống (…) trong các câu sau :
a)Lỗi gặp phải khi chương trình không được viết theo các quy tắc của ngôn ngữ lập trình là lỗi ……………
b)Lỗi xảy ra trong khi thực hiện chương trình là lỗi ………………..
c)Chương trình dịch phát hiện được các lỗi………………..nhưng không phát hiện được các lỗi….
a: Cú pháp
b: Ngữ nghĩa
c: ngữ nghĩa, thuật toán
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.
a) Học sinh tự thực hiện tạo chương trình như Hình 4.
b) Chạy thử với bộ dữ liệu thử: a = 0, b = 2 và a = 0, b = 0.
c) Gỡ lỗi:
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.
Sắp xếp theo trình tự, lần lượt sẽ là : A-C-B-E-D.
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 ra lỗi này là gì?
Tham khảo!
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.
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.
Tham khảo!
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.
Hãy điền các từ : cú pháp, ngữ pháp vào ____
a) Chương trình dịch phát hiện đc các lỗi :______ nhưng ko phát hiện đc các lỗi ______
b) Lỗi xảy ra trong khi thực hiện chương trình là lỗi_____
c) Lỗi khi chương trình ko viết theo qui tắc của ngôn ngữ lặp trình là ____
a) ngữ pháp/cú pháp
b) ngữ pháp
c) cú pháp