Встроенные предикаты Пролога
Для операций над числами в рассматриваемой версии Пролога имеются следующие арифметические предикаты:
Предикат: Смысл:
СУММА (x,y,z) х + у = zПРОИЗВ (x,y,z) х*у = z
ЧАСТНОЕ (x,y,z) [х/у] = z
ОСТАТОК (x,y,z) х - [х/у] = z
РАВНО (х,у) х = у
БОЛЬШЕ (х,у) х > у
МЕНЬШЕ (х,у) х < у
Арифметические предикаты по смыслу и функциям существенно отличаются от арифметических операций в традиционных языках программирования. Прежде всего любой из этих предикатов вырабатывает логическое значение ИСТИНА
или ЛОЖЬ в зависимости от того, имеет или не имеет решение арифметическая задача, представляемая предикатом.
Примеры:
? СУММА (2,2,5)
НЕТ
? СУММА (2,2,z)
z = 4
? СУММА (х,2,5)
х = 3
Таким образом, арифметические предикаты позволяют решать простейшие арифметические уравнения с одной или несколькими переменными, автоматически производя соответствующие вычисления, если эти решения существуют. Однако обращение к предикатам, связанным с умножением и делением целых чисел, может дать отрицательный результат из-за отсутствия решений в некоторых случаях:
? ПРОИЗВ (2,у,5)
НЕТ
? ЧАСТНОЕ (5,2,z)
z = 2
? ОСТАТОК (5,2,r)
r = 1
Предикаты БОЛЬШЕ и МЕНЬШЕ вместе с предикатом РАВНО могут использоваться для сравнения различных численных переменных и констант. А предикаты «неменьше» и «небольше» могут быть определены через отрицание предикатов БОЛЬШЕ и МЕНЬШЕ:
небольше (х,у) ¬
НЕ (БОЛЬШЕ (х,у));
неменьше (х,у) ¬
НЕ (МЕНЬШЕ (х,у));
Предикат РАВНО может использоваться также для сравнения значений переменных и констант. При этом переменные могут быть и числовыми, и символьными, и других типов. Примеры:
? РАВНО (5,z)
z= 5
? РАВНО (х,миша)
х = миша
? РАВНО (коля.оля)
НЕТ
Вывод графических изображений на экран в настоящей версии интерпретатора может производиться с помощью следующих предикатов:
ТОЧКА (х,у,с);
ЛИНИЯ (x,y,u,v,c);
ОКРУЖНОСТЬ (х,у,с);
где (х,у) и (u,v) - координаты точек на экране, а с - цвет точки. Конкретные значения кодов цветов и диапазоны значений координат точек на экране зависят от типа ЭВМ.
А. Графические предикаты:
Предикат: Смысл: Пример:
ФОН (с) задание цвета фона ФОН (8)
ТОЧКА (х,у,с) вывод точки ТОЧКА (0,0,2)
ЛИНИЯ (x,y,u,v,c) вывод отрезка линии ЛИНИЯ (0,0,50,50,4)
ОКРУЖНОСТЬ (х,у,с) вывод окружности ОКРУЖНОСТЬ (90,90,10, 6)
ЗАКРАСКА (х,у,с) закраска фигур ЗАКРАСКА (10,40,8)
Б. Предикаты ввода-вывода:
Предикат: Смысл: Пример:
ВЫВОД (<3начение>) вывод набора значений ВЫВОД («имя», х)
ВВОДСИМВ (s) ввод символьных данных
ВВОДЦЕЛ (n) ввод числовых данных
ПС перевод строки
В. Логические предикаты:
Предикат: Смысл: Пример:
ИСТИНА логическая константа
ЛОЖЬ логическая константа
НЕ (<Предикат>) отрицание предиката НЕ (РАВНО (z,0))