Bài học cùng chủ đề
Báo cáo học liệu
Mua học liệu
Mua học liệu:
-
Số dư ví của bạn: 0 coin - 0 Xu
-
Nếu mua học liệu này bạn sẽ bị trừ: 2 coin\Xu
Để nhận Coin\Xu, bạn có thể:

Bài 6. Thực hành tìm và sửa lỗi SVIP
1. Kiến thức cần nhớ
Chương trình hay một khối lệnh nào đó có thể không thực hiện đúng những gì người tạo ra nó mong muốn.
Việc tìm nguyên nhân và sửa chữa các lỗi được gọi là gỡ lỗi (debug) là những hoạt động cần thiết trong lập trình.
Khi gặp lỗi trong chương trình Scratch, em có thể dùng một số cách để tìm và gỡ lỗi như sau:
– Đọc và kiểm tra chương trình.
– Thử đặt mình vào vị trí máy tính, khi nhận được những lệnh, khối lệnh như trong chương trình thì sẽ làm gì.
– Tách nhỏ từng phần kiểm tra xem chúng có hoạt động đúng như mong không, sửa chữa nếu có lỗi, chạy thử trước và cả sau khi ghép các khối đã chạy đúng ý muốn.
Câu hỏi:
@205884570817@
2. Thực hành gỡ lỗi
⚡Nhiệm vụ. Cho chương trình tính tổng \(T=\frac12+\frac13+\frac14+\cdots+\frac{1}{100}\). Tuy nhiên, khi chạy chương trình, nhân vật Mèo không thông báo kết quả nào.
– Xác định nguyên nhân gây lỗi.
– Chỉnh sửa chương trình để nhân vật Mèo đưa ra kết quả đúng.
a) Quan sát chương trình, em nhận thấy rằng:
– Khi chạy thử chương trình, em thấy nhân vật Mèo thực hiện được đến những bước nào? Lệnh đó có được thực hiện đúng như mong muốn không?
– Bắt đầu từ khối lệnh nào, chương trình gặp phải sự cố không mong muốn?
– Quan sát biến T trong màn hình khi gặp lỗi và biến n chạy tới giá trị âm, em nghĩ tới lỗi có thể xảy ra ở đâu?
b) Em cũng có thể thêm các khối lệnh kèm độ trễ đưa ra kết quả của từng bước lặp để xác định bước nào gây lỗi:
c) Chương trình bạn Ngọc đã viết nhằm thực hiện ba công việc sau: 1. Giới thiệu phép toán; 2. Thực hiện tính toán; 3. Đưa ra kết quả.
⚡Giải quyết nhiệm vụ
Bước 1. Tách ba khối lệnh tương ứng với ba công việc, chạy thử từng khối. Kết quả nhận được là:
| Giới thiệu phép toán |
| Thực hiện tính toán |
| Đưa ra kết quả |
– Khối lệnh Giới thiệu phép toán không gây lỗi gì.
– Hai khối lệnh Thực hiện tính toán và Đưa ra kết quả không thực hiện đúng như mong muốn.
Bước 2. Khi chạy khối lệnh Thực hiện tính toán, ta thấy chương trình báo lỗi -infinity (vô cùng), đây là lỗi thực hiện phép chia cho 0. Ngoài ra còn một số phát hiện sau:
– Lệnh giảm n được thực hiện trước nên sẽ bị thiếu mất số hạng \(\frac{1}{100}\). → Thêm vào T giá trị \(\frac{1}{n}\) trước khi giảm n, đồng thời tránh lỗi chia cho 0. Như vậy, cần đổi lệnh cộng thêm cho T lên trước lệnh giảm n.
– Trong vòng lặp biến n giảm dần giá trị. Trước khi đạt điều kiện n < 1, thì n có giá trị bằng 1, khối lệnh trong vòng lặp vẫn được thực hiện với việc T nhận thêm giá trị \(\frac11\). Nhưng trong biểu thức không có số hạng \(\frac11\) mà chỉ có \(\frac12\) là số hạng cuối cùng được thêm vào T. → Điều kiện của vòng lặp phải là n<2 thì khối lệnh mới tính đúng giá trị biểu thức ban đầu.
– Khi thực hiện khối lệnh Đưa ra kết quả. → Cần thêm thời gian chờ để nhìn thấy kết quả hiển thị ở các lệnh phía trên.
Câu hỏi:
@205884520586@@205884580260@
Bạn có thể đăng câu hỏi về bài học này ở đây