172
правил в Прологе совпадает с проверкой условий в логике. Соответственно форма записи обращений к
правилам и процедурам в Прологе совпадает с формой записи предикатов в математической логике.
Однако в отличие от математической логики, где существенны только логические значения этих
предикатов, в Прологе результатом применения правил и процедур может быть конкретизация значений
переменных, указанных в обращениях к ним.
Пример такого обращения:
? родитель (х,вова)
х = зина
Полученный ответ имеет двойной результат: во-первых, подтверждение истинности наличия
«родителей» у «вовы», а во-вторых, конкретизация переменной «х» в обращении к процедуре
«родитель» с именем «вова», которая дает значение «х = зина».
Кроме конкретизации значений переменных в запросах и обращениях результатами выполнения
процедур и правил в Прологе могут быть различного рода побочные эффекты вывод на экран линий,
точек, картинок, сообщений, запись и считывание данных и т. п.
В этом смысле результаты выполнения процедур и программ на
Прологе могут быть эквивалентны
результатам выполнения программ на других языках программирования.
6.5. Встроенные предикаты Пролога
Для операций над числами в рассматриваемой версии Пролога имеются следующие арифметические
предикаты:
Предикат:
Смысл:
СУММА (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
Таким образом, арифметические предикаты позволяют решать простейшие арифметические
уравнения с одной или несколькими переменными, автоматически производя соответствующие
вычисления, если эти решения существуют. Однако обращение к предикатам, связанным с умножением
и делением целых чисел, может дать отрицательный результат из-за отсутствия решений в некоторых
случаях:
|