Стандартные предикаты
Стандартные предикаты
ТП имеет большой набор встроенных предикатов. Большинство
стандартных предикатов выполняют несколько функций в зависимости от ссотояния
параметров вхлдящих в предикат. К моменту обращения к предикату каждый
отдельный его параметр может быть опредеелн или неопределен. Известные
параметры предиката – входные (i),
неизвестные – выходные (o).
Совокупность входных и выходных параметров определяет работу предиката и
называется поточным шаблоном. Не для каждого варианта все возможные варианты
поточного шаблона имеют смысл.
Стандартные предикаты ввода-вывода
Служат для организации взаимодейтсвия программы с
пользователем.
write (l1,
l2, … ) ((i)*)
Запись заданных констант или значений переменных l1, l2, … в активное окно на текстовом
устройстве вывода. Аргументы могут быть как константами так и перменными,
связанными со значениями стандартных типов данных.
write f (формат, a1, a2, …) (i, (i)*)
Осуществляетяс форматный вывод. Общий вид формата %-m.p,
где % - начальный символ, - – указывает выравнивание по
левой границе, по умолчанию – по правой границе, m – минимальная ширина поля вывода
(необязательно), p –
точность выводимых чисел.
readln (строка) (string) : (o)
Читает строку с текстового устройства ввода и связывает ее с
заданной переменной. Конец строки – ввод. Переменная может быть символьного
типа.
readint
(целочисленная переменная) (integer)
: (o)
Читает целое число и связывает его с заданой перменной.
Переменная не должна быть определена до вызова предиката.
readreal
(вещественная переменная) (real)
: (o)
readchar
(символьная переменная) (char)
: (o)
inkey (символ) (char) : (o)
Читает символ, в отличии от readchar выполнение программы не
прерывается. Поэтому применяется для организации циклов ожидания. Предикат inkey не выполняется, если не
введен ни один символ.
/* Вычисление факториала */
domains
n, f=real
predicates
factorial (n, f)
result
clauses
factorial (1, 1).
factorial (N, F):-N=0, N1=N-1, factorial
(N1, F1), F=F1*N.
result:-write ("Введите N”), nl, write ("N=”),
readreal (N), N=0, factorial (N, F), write
(N,”!”,F), result.
goal
write ("Выход из программы при N<=0”),
nl, nl, result
|