Mở rộng ngôn ngữ mini ở dạng có thêm lệnh in và lệnh rẽ nhánh. Chương trình là một dãy các dòng, mỗi dòng là một trong các dạng sau:
<tên biến> = <biểu thức> — lệnh gán (biểu thức và quy tắc chia/chia dư giống hệt bài toán biểu thức có biến ở trên: chia và chia dư làm tròn về 0).PRINT <biểu thức> — tính giá trị biểu thức và in ra (thêm vào danh sách kết quả xuất).IF <điều kiện> THEN
<các câu lệnh>
ELSE
<các câu lệnh>
ENDIF
trong đó nhánh ELSE có thể vắng mặt (dạng IF <điều kiện> THEN ... ENDIF). Các khối IF có thể lồng nhau tùy ý bên trong nhánh THEN hoặc ELSE.
<điều kiện> có dạng <biểu thức 1> <phép so sánh> <biểu thức 2> với phép so sánh ∈{==,!=,<,>,<=,>=}, kết quả đúng hoặc sai theo nghĩa thông thường (so sánh số nguyên).
Biến chưa từng gán có giá trị mặc định 0 (dùng chung một không gian biến toàn cục xuyên suốt chương trình, không có phạm vi cục bộ).
Hãy thông dịch chương trình và in ra đúng những gì các lệnh PRINT xuất ra, theo đúng thứ tự chúng được thực thi (chỉ những PRINT nằm trong nhánh thực sự được chọn mới được thực thi).
Ví dụ: Với chương trình
x = 10
IF x > 5 THEN
PRINT x
ELSE
PRINT 0
ENDIF
vì 10>5 đúng nên chỉ nhánh THEN được thực thi, in ra 10.
Dòng đầu tiên là số nguyên n (0≤n≤500) — số dòng của chương trình.
n dòng tiếp theo là mã nguồn chương trình, đúng theo cú pháp mô tả ở trên. Dữ liệu đảm bảo chương trình hợp lệ về cú pháp (mọi IF...THEN đều có ENDIF tương ứng, lồng nhau đúng quy tắc).
In ra các dòng kết quả của mọi lệnh PRINT được thực thi, theo đúng thứ tự thực thi, mỗi kết quả một dòng. Nếu không có lệnh PRINT nào được thực thi, không in gì cả.
Ví dụ:
Đầu vào:
6
x = 10
IF x > 5 THEN
PRINT x
ELSE
PRINT 0
ENDIF
Đầu ra:
10
Đầu vào:
5
y = 3
IF y > 5 THEN
PRINT 999
ENDIF
PRINT y
Đầu ra:
3
Đang tải editor...