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

Theo dõi giá trị trung gian và điểm dừng

Lưu trên thiết bị này
Lỗi và kiểm thử chương trình Python · Chọn bài khác

In trạng thái trước khi sửa để thấy đường đi

Với hai số nguyên **dương** 20 và 16, thuật toán trừ số bé khỏi số lớn giữ ƯCLN và dừng khi hai số bằng nhau. Dòng `print` ở đầu vòng lặp cho thấy các giá trị **trước** mỗi lần trừ: ```python m, n = 20, 16 while m != n: print(m, n) if m < n: n = n - m else: m = m - n print("Kết quả:", m) ``` Bốn cặp được in là `(20,16)`, `(4,16)`, `(4,12)`, `(4,8)`; sau đó m=n=4 và in `Kết quả: 4`. Nếu đổi thứ tự `print` và phép trừ, bảng theo dõi sẽ là trạng thái **sau** mỗi lần trừ. Phải ghi rõ vị trí quan sát mới hiểu đúng bảng.

Bài luyện

Trong mã với m=20, n=16, cặp đầu tiên được in là gì?
Chọn một đáp án

Bài luyện

Sau cặp `4 8`, trạng thái kế tiếp là gì?
Chọn một đáp án

Tạm dừng để xem biến

Điểm dừng (breakpoint) do **trình gỡ lỗi của phần mềm lập trình** hỗ trợ. Đặt tại một dòng trong vòng lặp, chạy chương trình và quan sát m,n khi chương trình tạm dừng; tiếp tục từng bước để xem biến đổi. Cách này không thay phép thử đầu vào và đầu ra, mà giúp tìm **lệnh đầu tiên** làm trạng thái khác dự kiến. Nhiệm vụ thực hành: lưu mã ƯCLN trên vào tệp `.py`, chạy với 20 và 16, đối chiếu bốn cặp in và kết quả 4. Thử thêm 9 và 9: vòng lặp không chạy, kết quả 9. Mã trừ này yêu cầu **cả hai số dương**; nếu một số bằng 0, nó có thể không dừng. Vì vậy phải kiểm đầu vào trước khi dùng, hoặc chọn một thuật toán có xử lí số 0.

Bài luyện

Với cùng mã, nếu m=n=9 từ đầu, điều gì xảy ra?
Chọn một đáp án

Bài luyện

Vì sao không dùng nguyên mã trừ này với m=0, n=5?
Chọn một đáp án

Đang học