Автор работы: Пользователь скрыл имя, 20 Февраля 2011 в 22:33, лекция
В Прологе решение задачи получается логическим выводом из ранее известных положений. Обычно программа на Прологе не является последовательностью действий, - она представляет собой набор фактов с правилами, обеспечивающими получение заключений на основе этих фактов. Поэтому Пролог известен как декларативный язык.
predicates
my_predikate (name, number),
то выше надо
описать в разделе доменов
domains
name = symbol
number = integer
Домены позволяют
задавать разные имена различным
видам данных.
Например, предложение
«Иван – мужчина, которому 45 лет»
можно объявить следующим предикатом:
person(symbol, symbol, integer) без объявления доменов
в их разделе.
Однако такое
объявление недостаточно понятно. Если
использовать домены, то предикат станет
гораздо более «говорящим»:
domains
imya, pol = symbol
vozrast = integer
predicates
person(imya, pol, vozrast)
Одно из преимуществ
объявления собственных доменов
– это то, что компилятор может
отслеживать ошибки типов:
rovesnik(X, Y) :- person(X,
Pol, Let), person(Pol, Y, Let)
Вывод:
если переменная
в предложении используется более
чем в одном предикате, она
должна быть одинаково объявлена
в каждом их них.
Стандартные домены
Домен
Описание
Значение
short
короткое, знаковое, количественное
-32 768 .. 32 767
ushort
короткое, беззнаковое, количественное
0 .. 65 535
long
длинное, знаковое, количественное
-2 млрд. .. 2 млрд.
ulong
длинное, беззнаковое, количественное
0 .. 4 млрд.
integer
знаковое, количественное
или -32 768 .. 32 767
или -2 млрд. .. 2 млрд.
unsigned
беззнаковое, количественное
или 0 .. 65 535
или 0 .. 4 млрд.
byte
0 .. 255
word
0 .. 65 535
dword
0 .. 4 млрд.
char
символ, заключенный
в апострофы
real
число с плавающей
десятичной точкой (эквивалентен типу
double в C) в интервале:
10-307 .. 10308
string
1)
последовательность символов, заключенных
в кавычки
2)
последовательность букв, цифр и
символов подчеркивания,
symbol
то же, что
и string
Раздел целей
Раздел целей
аналогичен телу правила: это просто
список подцелей.
Цель отличается
от правила следующими признаками:
1)
за ключевым словом GOAL не следует
знак :-
2) при запуске программы VP автоматически выполняет цель.