btvn.vn
Tìm kiếm Đăng nhập

Kiểm thử và gỡ lỗi đếm lượt

Lưu trên thiết bị này
Thuật toán và lập trình · Chọn bài khác

Chạy được chưa có nghĩa là đúng kịch bản

Một chương trình có thể mở, hỏi và báo kết quả nhưng vẫn **đếm sai lượt**. Kiểm thử là chạy với dữ liệu được chọn để đối chiếu kết quả thực tế với kết quả mong đợi. Với trò đoán số, nên thử **trúng ngay câu hỏi đầu**, **sai rồi mới trúng**, và **đoán sai đến giới hạn**. Lỗi làm chương trình chạy nhưng kết quả không đúng yêu cầu được gọi là **lỗi lôgic** ở mức bài học này. Scratch ghép khối giúp hạn chế lỗi cú pháp; không cần tìm lỗi cú pháp giả tạo để gỡ lỗi.

Bài luyện

Chương trình vẫn chạy nhưng đoán đúng ngay lần đầu lại báo 0 lượt. Đây là dấu hiệu gì?
Chọn một đáp án

Truy vết cho thấy thiếu lệnh tăng sau câu hỏi đầu

Giả sử biến `so_luot` bắt đầu bằng **0**. Sau câu hỏi đầu, phải tăng thành **1**; sau câu hỏi thứ hai, tăng thành **2**. Nếu chỉ đặt lệnh tăng **trong vòng lặp** sau câu hỏi thứ hai trở đi, chương trình luôn báo ít hơn số lượt thật một đơn vị. Có thể sửa bằng cách đặt thêm lệnh tăng ngay sau câu hỏi đầu, hoặc khởi tạo biến bằng 1 khi chắc chắn câu hỏi đầu luôn được thực hiện. Dự án mẫu dùng cách thứ nhất để thấy rõ mỗi câu hỏi tương ứng một lần tăng.

Bài luyện

Biến đếm bắt đầu bằng 0; đã hỏi và nhận câu trả lời đầu tiên. Trước khi xét đoán đúng, biến đếm phải là bao nhiêu?
Chọn một đáp án

Bài luyện

Bộ đếm bắt đầu 0 và chỉ tăng sau mỗi câu hỏi nằm trong vòng lặp. Nếu người chơi trả lời 3 câu hỏi rồi trúng, chương trình báo mấy lượt?
Chọn một đáp án

Sửa một nguyên nhân rồi kiểm lại nhiều ca

Khi thấy số lượt sai, hãy nhìn giá trị `so_luot` **sau từng câu hỏi**, đối chiếu vị trí khối **thay đổi `so_luot` thêm 1**. Sửa đúng chỗ thiếu, rồi thử lại trúng lần đầu và sau vài lần. Nếu chỉ đổi lời thông báo thành “cộng thêm 1” mà không sửa biến, điều kiện dừng dùng biến ấy vẫn có thể sai. Kiểm thử cần bao gồm hành vi, không chỉ câu chữ trên màn hình.

Bài luyện

Sau khi phát hiện đếm thiếu lượt đầu, sửa nào xử lí trực tiếp nguyên nhân khi `so_luot` khởi tạo bằng 0?
Chọn một đáp án

Đang học