Bài 15. Gỡ lỗi

Hoạt động 1 (SGK Kết nối tri thức với cuộc sống - Trang 86)

Hướng dẫn giải

Theo kịch bản, trò chơi sẽ thông báo số lần đoán khi người chơi đoán đúng số bí mật. Tuy nhiên, khi chạy thử chương trình, em sẽ thấy số lần đoán mà máy tính hiển thị luôn kém số lần thực tế mà người chơi đã đoán một đơn vị.

(Trả lời bởi Mai Trung Hải Phong)
Thảo luận (1)

Hoạt động 2 (SGK Kết nối tri thức với cuộc sống - Trang 86)

Hướng dẫn giải

Tham khảo:

Khi chạy thử, em nhận ra rằng chương trình vẫn hoạt động vì máy tính vẫn hỏi và trả lời theo sự điều khiển của các khối lệnh. Tuy nhiên nó thực hiện không đúng kịch bản vì số lần đoán được hiển thị không đúng với số lần thực tế mà người chơi đã đoán.

Có hai loại lỗi:

1) Lỗi cú pháp xảy ra khi lệnh viết sai so với quy tắc của ngôn ngữ lập trình, làm cho chương trình không hoạt động:

2) Lỗi lôgic (hay lỗi ngữ nghĩa) xảy ra khi các câu lệnh trong chương trình tuy được viết đúng cú pháp nhưng thực hiện không đúng kịch bản như trong chương trình của trò chơi Đoán số.

(Trả lời bởi Anh Lê Quốc Trần)
Thảo luận (1)

Câu hỏi (SGK Kết nối tri thức với cuộc sống - Trang 87)

Hoạt động 3 (SGK Kết nối tri thức với cuộc sống - Trang 87)

Hướng dẫn giải

Tham khảo:

1. Theo kịch bản, biến số lần đoán sẽ thay đổi trong tình huống nào?

Lỗi được thẻ hiện ở việc chương trình hiển thị sai giá trị của số lần đoán.
2. Những khối lệnh nào làm thay đổi biến số lần đoán?

Số lần đoán cần phải tăng 1 đơn vị mỗi khi người chơi nhập một giá trị số (đoán). Điều này xảy ra ở các câu lệnh (4). (7) và (8).
Tuy nhiên, có thể thấy rằng, mặc dù (9) tăng giá trị của số lần đoán sau khi (7) hoặc (8) được thực hiện, nhưng không có lệnh nào như thế sau khối lệnh (4) cả
3. Có điều gì khác nhau giữa kịch bản và những khối lệnh tương ứng?

a. Tập trung vào những khối lệnh trực tiếp gây ra lỗi và những khối lệnh liên quan lôgic đến nó theo các cấu trúc điều khiển.
b. Chạy chương trình từng bước, kết hợp theo dõi sự thay đổi của các biến, các giá trị đầu ra và so sánh với các giá trị tính được theo cách thủ công.

(Trả lời bởi Anh Lê Quốc Trần)
Thảo luận (1)

Câu hỏi (SGK Kết nối tri thức với cuộc sống - Trang 89)

Hướng dẫn giải

Lỗi chưa đặt điều kiện cho n.

(Trả lời bởi Anh Lê Quốc Trần)
Thảo luận (1)

Luyện tập (SGK Kết nối tri thức với cuộc sống - Trang 90)

Hướng dẫn giải

- Lỗi xảy ra ở biểu thức điều kiện. Vì mỗi người không đoán quá 7 lần, nên vòng lặp (6) - ( 10) sẽ kết thúc khi số lần đoán bằng 7.

(Trả lời bởi Anh Lê Quốc Trần)
Thảo luận (1)

Vận dụng (SGK Kết nối tri thức với cuộc sống - Trang 90)

Hướng dẫn giải

program DoanSo;

uses crt;

var

     low, high, guess, answer: integer;

     response: char;

begin

     clrscr;

     low := 1;

     high := 120;

     writeln('Chon mot so tu 1 den 120 va ghi so do ra giay.');

     writeln('Nhan phim bat ky khi san sang.');

     readln;

     repeat

          guess := (low + high) div 2;     // Đoán số trung bình của khoảng

          writeln('So cua ban la ', guess, ' phai khong? (d/c/t)');

          readln(response);

          // Kiểm tra phản hồi từ người chơi

          case response of

               'd': begin // Trường hợp đoán đúng

                         writeln('May tinh da doan dung so cua ban!');

                    end;

               'c': begin // Trường hợp số đoán cao hơn

                         high := guess - 1;

                    end;

               't': begin // Trường hợp số đoán thấp hơn

                         low := guess + 1;

                    end;

          end;

     until response = 'd' // Lặp cho đến khi đoán đúng

     readln;

end.

 

( Các phần câu in đậm là các phần mình giải thích về code cho bạn dễ hiểu, không cần cho thiết nên khi chạy chương trình không cần nhé ! )

(Trả lời bởi Phía sau một cô gái)
Thảo luận (1)