Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
13
Добавлен:
06.09.2019
Размер:
310.78 Кб
Скачать

8.2. Типы данных prolog

Предложим классификацию данных PROLOG как на рис. 8.1.

Переменные  это данные PROLOG, имеющие имя, представляющее собой набор букв и цифр, начинающийся с заглавной (прописной) буквы. Переменная может быть конкретизирована каким-либо значением или не конкретизирована. Следует отметить, что конкретизация не является полным аналогом оператора присваивания.

Рис. 8.1. Классификация данных PROLOG

Переменная получает свое значение только в результате сопоставления с константами в фактах и правилах программы. Получив значение, переменная владеет им лишь до получения ответа на запрос. После этого переменная вновь становится свободной и участвует в поиске альтернативных решений. Поэтому следует помнить:

  • переменная не является хранилищем информации на все время работы программы, а служит частью процесса сопоставления (унификации), о котором речь пойдет далее;

  • областью действия переменной является не вся программа, а лишь одно предложение, то есть одно правило или один вопрос.

Во многих случаях переменная встречается в правиле только один раз и ее значение не влияет на результат логического вывода. Такую переменную называют анонимной и замещают знаком подчеркивания.

Атомом называют любой набор символов алфавита, заключенный в кавычки, или набор строчных букв и цифр, начинающийся с буквы, например:

"alpha","Alpha","4beta",anna,x5

Не являются атомами наборы:

1b,#d,a-b

Атомом также является любой символ алфавита. Например:

( , ; , < , >

Числовые константы определяются в PROLOG так же, как и в других языках.

Принято также использовать рекурсивное определение списка:

  • пустой список [] – это список;

  • [A¦B] – список, если B – список.

И наконец, структурой называют единый объект PROLOG, состоящий из совокупности других объектов, например:

Отец(Х,иван)

8.3. Структура программы на prolog

Программа на языке PROLOG состоит из:

  • раздела объявления типов переменных (domains);

  • раздела объявления предикатов (predicates);

  • раздела целей (clauses).

Раздел объявления типов переменных имеет вид:

Domains

<список имен типов>=<описание типа>.

Например:

Domains

X=integer.

Z=real.

U=symbol*.

В этом разделе объявлены целый тип с именем X, вещественный тип с именем Z, и тип U обозначает список слов.

Раздел объявления предикатов имеет вид:

Predicates

<имя предиката>(<список типов аргументов>).

Например:

Predicates

vvod(X).

dlina(U,X).

Здесь объявлен предикат vvod с одним целым аргументом, и предикат dlina с двумя аргументами, первый из которых – список, второй – целое число.

В конце любого предложения ставится точка.

8.3.1. Раздел целей

Фактом называют предложение PROLOG следующего вида:

<имя факта>(<список констант через запятую>), –

которое считается всегда истинным.

Например:

Хобби(анна,марки).

Хобби(петя,фантики).

Данное([1,2,3,4]).

Предикатом называют предложение PROLOG вида:

<имя предиката>(<список имен переменных и констант через запятую>),

которое может принимать значение истина или ложь в зависимости от значений переменных.

Правилом называют следующее предложение PROLOG:

<предикат> if <предикат1>, <предикат2>, ...,<предикатN>.

Раздел целей PROLOG имеет вид:

Clauses

<факты>.

<правила>.

Например:

Clauses

Отец(Иван,Петр). /*Иван–отец Петра*/

Отец(Иван,Игорь). /*Иван – отец Игоря*/

Отец(Игорь,Семен).

Отец(Игорь,Анна).

Дед(X,Y) if отец(Z,Y),отец(X,Z).

/*X–дед Y,если отцом Y является Z, а отцом

Z является Х*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]