Предикаты ввода-вывода
Турбо-Пролог имеет отдельные предикаты для чтения с клавиатуры или из файла данных целого, вещественного, символьного и строкового типа. Для чтения из стандартного устройства ввода информации (клавиатуры) и, соответственно, запись на стандартное устройство вывода информации (монитор) используются следующие предикаты:
Предикат readln(Str) считывает строку с текущего устройства ввода и связывает ее со своим единственным выходным параметром.
Предикат readint(N) читает с текущего устройства целое число и связывает его со своим единственным выходным параметром.
Предикат readreal(X) считывает вещественное число.
Для чтения символа с текущего устройства ввода используется предикат readchar(C), который приостанавливает работу программы до тех пор, пока не будет введен символ Предикат inkey, читает символ со стандартного устройства ввода, не прерывая выполнение программы. Если нужно просто проверить, нажата ли клавиша, можно воспользоваться предикатом keypressed, не имеющим аргументов.
Предикат readterm(P1,P2) предназначен для чтения сложных термов. У него два параметра: первый входной указывает имя домена, второй параметр конкретизируется термом домена, записанного в первом параметре. Если считанная этим предикатом строка не соответствует домену, указанному в его первом параметре, предикат выдаст сообщение об ошибке.
Для записи данных в текущее устройство записи служит предикат write. Он может иметь произвольное количество параметров. Осуществляет вывод заданных значений в указанном формате. В формате строки используются следующие опции:
%d | десятичное число (char и integer); |
%u | беззнаковое целое (char и integer); |
%R | указатель на запись в базе данных (database reference number); |
%X | шестнадцатеричное число (string, database reference numb); |
%x | шестнадцатеричное число (char и integer); |
%s | строка (symbol и string); |
%c | символ (char и integer); |
%g | действительное число (по умолчанию для real); |
%e | действительное число в экспоненциальном формате |
%f | действительное число с фиксированной запятой |
%lf | действительное число с фиксированной запятой |
Кроме того, в Турбо-Прологе есть еще и предикат writef, который служит для форматного вывода данных.
Для осуществления перехода на следующую строку (возврат каретки и перевод строки) применяется предикат nl, не имеющий параметров.
Встроенные предикаты для преобразования различных типов:
char_int(CharParam,IntgParam) (char,integer) - (i,o) (o,i) (i,i) | Преобразует символ в целое |
str_int(StringParam,IntgParam) (string,integer) - (i,o) (o,i) (i,i) | Преобразует строку в целое или наоборот |
str_char(StringParam,CharParam) (string,char) - (i,o) (o,i) (i,i) | Преобразует строку в символ или наоборот |
str_real(StringParam,RealParam) (string,real) - (i,o) (o,i) (i,i) | Преобразует строку в действительное число или наоборот |
upper_lower(StringInUpperCase,StringInLowerCase) (string,string) - (i,i) (i,o) (o,i) | Замена в строке всех прописных букв на строчные и наоборот (только для строки из латинских букв) |
upper_lower(CharInUpperCase,CharInLowerCase) (char,char) - (i,i) (i,o) (o,i) | Замена прописной буквы на строчную и наоборот (только для латинских букв). |