Bạn Bình tạo chương trình như ở Hình 2 để tính quãng đường khi biết vận tốc và thời gian. Khi thực hiện, chương trình cho kết quả không đúng. Em hãy giúp bạn chỉ ra lỗi trong chương trình.
Để 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.
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?
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.
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ạ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ọc sinh tự tạo chương trình theo Hình 2.
- 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 theo các yêu cầu dưới đây:
a) Tạo, thực hiện chương trình ở Hình 1 và cho biết kết quả chương trình tính số tiền gia đình em cần trả khi đi xem phim là bao nhiêu.
b) Chỉnh sửa chương trình Scratch ở Hình 1, sử dụng khối lệnh rẽ nhánh để tạo chương trình tính tiền vé xem phim trong thời gian khuyến mãi ở Bảng 1.
c) Chỉnh sửa chương trình em vừa tạo để được chương trình tính tiền vé xem phim theo Bảng 4.
a) HS tự tạo chương trình như hình 1.
b) Chương trình tính tiền vé xem phim trong thời gian khuyến mãi ở Bảng 1
c) Chương trình tính tiền vé xem phim theo Bảng 4
Hãy tạo chương trình Scratch thực hiện việc nhập chiều cao của các bạn trong tổ em, tính chiều cao trung bình của cả tổ và in kết quả ra màn hình.
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:
Tạo chương trình Scratch để nhập hai số m, n từ bàn phím, thực hiện hoán đổi giá trị của hai biến và thông báo giá trị của biến m, n sau khi đã hoán đổi.
Ví dụ, sau khi nhập m = 23, n = 45, chương trình đưa ra kết quả ra màn hình như ở Hình 6.
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ọc sinh 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.
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