Một biến nhận từng số, một biến giữ kết quả
Khởi đầu `lon_nhat = 0` vì các số hợp lệ đều dương. Mỗi lượt nhập `x`: nếu `x = 0`, dừng; nếu `x > lon_nhat`, thay `lon_nhat` bằng `x`; nếu không, giữ nguyên. Sau dãy `8, 3, 10, 6, 0`, giá trị theo từng số dương là **8 → 8 → 10 → 10**. Số 0 không được so như một phần tử. Nếu số đầu tiên là 0, chưa có số dương nào nên phải thông báo **không có dữ liệu**, không gọi 0 là giá trị lớn nhất.
Bài luyện
Dãy nhập 8, 3, 10, 6, 0. Sau khi xử lí số 6, biến `lon_nhat` bằng bao nhiêu?
6 nhỏ hơn 10.
8 đã được thay khi gặp 10.
0 chỉ là dấu kết thúc tiếp theo.
10 đã lớn hơn các số trước và 6 không thay được nó.
Lời giải
Ban đầu 0; gặp 8 → 8, gặp 3 giữ 8, gặp 10 → 10, gặp 6 giữ 10. Vậy trước khi nhập dấu kết thúc, biến bằng 10.
Bài luyện
Lần nhập đầu tiên là 0. Kết quả nào đúng theo bài toán?
0 kết thúc dãy nên chưa có số dương để so sánh.
0 không thuộc dãy số nguyên dương cần xét.
Không có số 1 trong dữ liệu.
Bài toán không yêu cầu sinh số ngẫu nhiên.
Lời giải
Khi `x = 0` ngay ở lượt đầu, vòng lặp không xử lí số nào. `lon_nhat` còn 0 chỉ là dấu hiệu rỗng, nên xuất thông báo không có dữ liệu.
Thực hành kiểm dãy kết thúc bởi 0
**Nhiệm vụ:** mở dự án Scratch và kiểm tìm số nguyên dương lớn nhất khi chưa biết trước độ dài dãy.
**Dữ liệu:** `g9-tim-so-lon-nhat.sb3` do BTVN tạo; số **0** chỉ dùng để kết thúc nhập. Dự án cơ bản nhận số nguyên, chưa xác thực chuỗi chữ.
**Trình tự:** nhấn cờ xanh rồi nhập lần lượt `8`, `3`, `10`, `6`, `0`, nhấn Enter sau mỗi số. Chạy lại chỉ với `0`; chạy tiếp với `8`, `-5`, `3`, `9`, `6`, `0`. Quan sát biến `lon_nhat` khi mỗi số được xử lí. Thử chữ `data` trên **bản sao** để thấy vì sao bài vận dụng yêu cầu xác thực thêm; không dùng kết quả thử chữ làm kết quả đúng của dự án cơ bản.
**Kết quả mong đợi:** ba lần chạy cho `10`, “Không có dữ liệu số nguyên dương!”, và `9`. Nếu báo 0 là lớn nhất ở lượt chỉ nhập 0, kiểm nhánh thông báo sau vòng lặp; nếu bỏ qua 10, kiểm phép so sánh với `lon_nhat` và việc nhập giá trị tiếp theo.
Bài luyện
Một dự án cơ bản chỉ xử lí số nguyên nhưng người dùng nhập chữ `data`. Nhận xét nào phù hợp?
Màu nền không kiểm loại dữ liệu.
Bản cơ bản chưa kiểm chuỗi chữ; mở rộng cần xác thực và bỏ qua hoặc yêu cầu nhập lại.
Không thể đồng nhất một xâu chữ với số 0 một cách tổng quát.
Quy ước số 0 vẫn là dấu dừng khi nhập đúng kiểu.
Lời giải
Bài toán đặt đầu vào là số nguyên dương và dấu 0. Chuỗi chữ vi phạm điều kiện đầu vào; dự án cơ bản chưa xác thực, nên cần thêm bước kiểm trước khi cập nhật `lon_nhat`.
Đang học