Предикат вызывает считывание одного символа с клавиатуры. Если переменная X неконкретизирована, то X принимает значение кода символа. Если же переменная X конкретизирована, то вводимый символ сопоставляется с X. Целевое утверждение будет успешно доказано только в том случае, если символ сопоставим с X.
Get(X)
Предикат вызывает считывание одного или нескольких символов с клавиатуры до тех пор, пока не будет считан символ пробела. Если переменная X неконкретизирована, то код символа отождествляется с X и доказательство утверждения заканчивается успехом. Если же переменная X конкретизирована, целевое утверждение будет доказано только в случае, если вводимый символ сопоставим с X.
Skip(X)
Предикат считывает символы с клавиатуры или из текущего входного файла, пока не встретится символ с кодом X, тогда доказательство цели заканчивается успешно. Переменная X может быть целочисленным выражением.
Запись символов
Для вывода символов используются системные предикаты: put(X), tab(X) nl. Они определяются следующим образом.
Put(X)
Символ с кодом X записывается на терминал. Допускается, чтобы X был целочисленным выражением. Доказательство целевого утверждения put(X) всегда заканчивается успехом. X может быть кодом как управляющего, так и алфавитно-цифрового символа.
Tab(X)
На терминал выводится X пробелов. X может быть целочисленным выражением.
nl
Происходит переход на новую строку терминала.
Рассмотрим примеры:
put(65) на терминал выводится символ А
(подразумевается ASCII код)
put(66+32) выходится символ b
put('C') выводится символ С
put([100]) выводится символ d
put(‘e’+’A’-‘a’) выводится символ Е
put(a(b)) выдается сообщение об ошибке
Считывание термов
Предикаты
read(X), readb(X) и read(X,Y)
служат для считывания термов. Приведем их определение.
Read(X)
Если переменная неконкретизирована, то она означивается термом, считанным с терминала. Попытка пользователя напечатать выражение, не являющееся термом, приведет к ошибке. Вводимая информация должна заканчиваться точкой. В случае, если переменная X конкретизирована термом, попытка доказать целевое утверждение заканчивается успехом только при условии, что вводимый с терминала терм сопоставим с X. В противном случае попытка доказательства завершается неудачей.
Readb(X)
Данный предикат аналогичен предикату read(X), но вводимый терм не должен заканчиваться точкой.