Использование окон для ввода и вывода
С любым текущим окном работают стандартные предикаты ввода и вывода – readln,readint,readchar - также.
По умолчанию, курсор расположен в верхнем левом углу окна. Используя предикат cursor и помещать курсор в любую позицию текущего окна. Этот предикат имеет вид: cursor (Row_number, Col_number ).
Аргументы Row_number и Col_number являются целыми числами, задающими номера строки и столбца, по отношению к верхней строке и крайнему левому столбцу экрана. Строки и столбцы нумеруются, начиная с нуля: предикат cursor(0,0) обеспечивает вывод текста, начиная с верхнего левого угла экрана.
Например, следующие предикаты могут быть использованы для вывода сообщения в центре экрана.
makewindow( 1,7,7,"", 1,1, 8,28),
cursor(4,12),
write("Доброе утро!").
Пример 1.
Программа 1. Работа с окнами
Predicates
start
run(integer)
do_sums
set_up_windows
clear_windows
Clauses
start:- set_up_windows, do_sums.
set_up_windows :-
makewindow(l, 7, 7, “”, 0, 0, 25, 80),
makewindow( 1, 7, 7, "Left operand", 2, 5, 5, 25),
makewindow(2, 7, 7,"", 2, 35, 5, 10),
nl, write(" PLUS"),
makewindow(2, 7, 7, "Right operand", 2, 50, 5, 25),
makewindow(3, 7, 7, "Gives", 10, 27, 5, 25),
makewindow(4, 7, 7,"", 17, 22, 5, 35).
do_sums :- run(_), clear_windows, do_sums.
run(Z) :-
shiftwindow(l),
cursor(2, 1), readint(X),
shiftwindow(2),
cursor(2, 10), readint(Y),
shiftwindow(3), Z=X+Y, cursor(2, 10), write(Z),
shiftwindow(4),
write(" Please press the space bar"),
readchar(_).
Clear_windows :-
shiftwindow(l), clearwindow,
shiftwindow(2), clearwindow,
shiftwindow(3), clearwindow,
shiftwindow(4), clearwindow.