Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7 - Основы языка пролог.docx
Скачиваний:
7
Добавлен:
07.12.2018
Размер:
55.18 Кб
Скачать

"Какие военнослужащие имеют звание полковника?"

Вопрос формулируется так:

?- военный(S, полковник).

Ответы на него будут перечислены:

S = КЛИМОВ

S = максимов

нет

Наша программа может быть использована для ответа на более сложные вопросы, например, такие:

"Имеют ли Абрамов и Федоров одинаковые звания?"

Мы можем перефразировать этот вопрос. При этом станет ясным, что ответ на него можно получить, рассмотрев две следующие одна за другой цели, причем результат второй зависит от результата первой:

"Какое звание у Абрамова и, если обозначить звание Абрамова r, имеет ли Федоров то же звание r?"

Для выражения того, что цели в этой последовательности должны быть согласованы, будем разделять целевые структуры запятой. Вопрос выражается следующим образом:

?- военный(абрамов,R), военный(федоров, R).

Ответ на него такой:

R = капитан

Выводы:

♦ Каждый объект в Пролог-программе есть терм.

♦ Структура характеризуется своим функтором и своей размерностью.

♦ Факт - это структура, которая используется в программе для представления объекта или отношения в задаче из конкретной предметной области.

♦ Цель согласуется, если она сопоставляется с каким-либо фактом в программе.

♦ Переменная - это "забронированное место". Любой терм может заменить переменную, но для каждого вхождения переменной в структуру должна иметь место одна и та же замена.

♦ Когда два терма сопоставляются, переменные в них заменяются на некоторые значения.

Каждый факт и каждое правило в программе называется утверждением. Правило - это утверждение, имеющее заголовок и тело. Факт - это утверждение, имеющее заголовок и пустое тело.

♦ Каждый факт записывается с новой строки.

♦ Заголовок правила и знак :- записываются на одной строке, а каждая подцель - на новой строке со сдвигом.

♦ Процедуры разделяются пустой строкой.

Язык допускает свободное использование комментариев в программе. Любой текст между символом /*, находящимся слева от него, и символом */, находящимся справа от него, трактуется как комментарий.

Любой текст после символа % на какой-либо строке также воспринимается как комментарий. Концом такого комментария является символ <новая строка>.

Литеры

Имена констант и переменных образованы цепочками литер. Хотя для каждого вида имени (атом, целое число, переменная) имеются специальные правила, указывающие, из каких литер оно может составляться. Полезно знать, что представляет собой весь набор литер, распознаваемых Прологом.

В Прологе имеются два типа литер: печатаемые и непечатаемые. Печатаемые литеры обладают визуальным образом, появляющимся на терминале при выводе. Непечатаемые литеры такого образа не имеют, но при выводе они вызывают выполнение некоторых действий. Этими действиями могут быть пропуск пустого места («печать» пробела), переход на новую строку, подача звукового сигнала. Ниже приведены все печатаемые литеры, которые можно использовать в Пролог-программах.

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abedefghijklmnopqrstuvwxyz

0123456789

!"#$%&'()=–~^|\{}[] _`@ +;*:‹›,.?/

Литералом будем называть атомную формулу или отрицание атомной формулы. Атом называется положительным литералом, а его отрицание - отрицательным литералом. (Литерал – предикат или его отрицание.)

Числовые литералы - литералы, для записи чисел.

Строковые литералы, обычно, представляют собой строку символов, заключённую в кавычки или скобки.

Дизъюнкт - это дизъюнкция конечного числа литералов. Если дизъюнкт не содержит литералов, его называют пустым дизъюнктом и обозначают посредством символа ℵ.

Запуск интерпретатора проводится с помощью команды

>prolog

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

       – работа в диалоге с базами данных и программами на Прологе;

       – поиск и чтение программ и баз данных, записанных на дисках;

       – ввод и редактирование новых программ и баз данных;

       – запись на диски новых или отредактированных программ;

       – вывод на печать программ и баз данных на Прологе.