- 151 -
4.4. Основные приёмы программирования в Прологе
Каждый из представленных в предыдущем разделе смыслов
программы на прологе задаѐтся в определѐнном разделе Пролог-программы.
Рассмотрим более подробно сами разделы, их назначение и синтаксис на
примере Visual Prolog.
Разделы программы на языке Пролог
Пролог-программа включает в себя следующие разделы:
1) domains — имена и структуры объектов, используемых в задаче
(используется: 1) для определения доменам осмысленных имѐн, причем даже
в том случае, если внутренне они совпадают с именами уже существующих
доменов; 2) для объявления специальных доменов, которые используются
для объявления структур данных, и стандартными доменами не
определяются);
2) predicates — названия отношений между объектами (объявление
собственных предикатов);
3) clauses — факты и правила, описывающие эти отношения (все
предложения для одного предиката должны быть сгруппированы; каждое
предложение заканчивается точкой);
4) goal — описание цели решения.
Задаваемые в этом разделе цели называются ВНУТРЕННИМИ
ЦЕЛЯМИ, поскольку они являются частью исходного текста программы и
компилируются наряду со всеми другими ее частями.
Важно отметить то, что содержание раздела goal аналогично правилу.
Это попросту список подцелей. Но между разделом goal и правилом есть два
отличия:
− после ключевого слова goal не следует знак :- (если);
− при запуске программы на выполнение Пролог отрабатывает цель
автоматически.
Если достигаются все подцели раздела goal, то программа успешно
завершается. Если же в процессе выполнения программы какая-либо подцель
не достигается, то, и программа заканчивает работу неудачно.
Не все эти разделы являются обязательными. Разделы clauses и goal
могут быть переставлены. Если цель является внешней, т.е. задается при
вызове программы, то раздел goal в программе отсутствует.
Раздел database
Программа на Прологе представляет собой совокупность фактов и
правил. Иногда в процессе выполнения программы может возникнуть
потребность видоизменения (модификации, удаления или добавления)
некоторых фактов, с которыми работает программа. В таком случае факты
образуют ДИНАМИЧЕСКУЮ или ВНУТРЕННЮЮ базу данных; она может
изменяться в процессе выполнения программы.