- •Введение
- •1. История Пролога
- •2. Синтаксис и семантика Пролог-программ
- •2.1. Объекты данных1
- •2.2. Декларативный смысл Пролог-программ
- •2.3. Основные определения
- •3. Практическое программирование на Прологе
- •3.1. Структура Пролог-программы
- •3.2. Некоторые предопределенные термы
- •3.3. Свободные и связанные переменные
- •3.4. Внутренняя бд Пролога
- •3.5. Обработка условий и организация циклов в Prolog’е
- •3.5.1. Обработка условия
- •3.5.2. Использование предиката типа repeat
- •3.6. Списки в Прологе
- •3.6.1. Примеры списков
- •3.6.2. Разделение списков на голову и хвост
- •3.6.3. Некоторые полезные программы для работы со списками
- •1. Слияние списков.
- •2. Сортировка списков
- •3.7. Ввод и вывод
- •3.7.1. Файловая система
- •Операции с именами файлов
- •Чтение и запись
- •3.8. Строки и функции работы со строками
- •4. Простенькая экспертная система
- •Игрушечная эс «Кто чем увлекается?»
- •5. Базовые понятия и термины Пролога
- •5.1. Объекты
- •5.2. Внутренние дела Пролога
- •5.3. Что такое шаблоны?
- •5.4. Управление поиском
- •Литература
2.3. Основные определения
Пролог – «декларативный язык, программы на котором содержат объявления логических взаимосвязей, необходимых для решения задачи» [48].
Отношение между объектами задается в форме предиката: "имя_отношения(<имена_объектов>)".
Примеры: синий(шар), красный(платок,флаг,яблоко), любит("Cаша",Некто).
Предикат - символическое имя отношения, за которым следуют аргументы в скобках (через запятую)
Факт - отношение, в котором все объекты известны; факты всегда истинны. Факты можно рассматривать как аксиомы.
Предложение - запись на Прологе отдельных отношений.
Правило - предложение с логической связкой если (if,:-).
Пример: предложение естественного языка «Гена пойдет на пляж, если день будет солнечным» на Прологе может быть записано так:
ходить("Гена",пляж):-день(солнечный)
ходить("Гена",пляж) if день(солнечный)
Левая часть правила называется заголовком, правая - телом.
Процедура - последовательность предложений, описывающих предикат.
Переменные - позволяют формулировать отношения и правила общего вида, и, таким образом, формулировать вопросы. Переменные должны получить значения в результате операций сопоставления и конкретизации. До этого переменная называется свободной, после - связанной.
Имя переменной должно начинаться с прописной буквы или знака подчеркивания (_). Далее могут следовать любое число букв (в любом регистре), цифр или знаков подчеркивания.
Анонимная переменная обозначается знаком подчеркивания и используется вместо любой другой, когда ее значение не интересует программиста.
Цель - более общее наименование запроса. Пролог пытается разрешить цель, просматривая все факты. Разрешение цели эквивалентно доказательству теоремы на основе аксиом - фактов.
3. Практическое программирование на Прологе
Лучший известный мне учебник по программированию на Turbo Prologe, переведенный на русский язык - это уже цитированная книга «Использование Турбо-Пролога» [48]. В ней есть все, за исключением использования системы управления внешней «бинарной» БД. Наиболее полное руководство на русском языке по логическому программированию и Visual Prolog'у вышло в 2003 г. [49].
Исходные модули, написанные на Turbo Prolog’е, могут быть включены и в состав приложений Visual Prolog’а. Полный комплект документации на английском языке можно получить в составе Visual Prolog v. 5.2 Personal Edition. Она содержит также удобную и полную Help-систему.
Изучение версии 5.2. визуального пролога рекомендую начать с написания программ, работающих в режиме (точнее, в пользовательской стратегии) EASYWIN - Вы будете иметь простой, но вполне достаточный для начала интерфейс с Вашими программами. Для этого:
Стартуйте систему.
В общем меню выбираете Projec.Затем New Project.
Появлятся меню Эксперта приложения (Application Axpert). В этом меню в подменю GENERAL (оно уже выбрано) печатаете наименование проекта и имя файла-проекта (VPR-файла). Печатаете или выбираете директорию проекта.
Выбираете подменю TARGET. В позиции UI Strategy заменяете VPI на EASYWIN.
Нажимаете кнопку Create. Создаются все необходимые файлы. В настоящий момент Вас интересуют только два из них - файлы с расширениями .pro и pre.Последний содержит секции GLOBAL DOMAINS и GLOBAL DATABASE.
Напишите в этих секциях необходимые определения, не убирая уже имеющийся текст. Файл с расширением .pro содержит секции predicates, goal, clauses.
Пишите необходимый код. Можно редактировать вообще вне системы. Для вызова системы установите курсор на файл с раширением .vpr и нажмите Enter.
После того, как вы написали текст программы, откомпилируйте Ваш основной файл ("<имя_проекта>.pro"). Для этого: либо Ctrl-F9 либо соответствующая позиция в меню Projec. Если есть ошибки, появится соответствующее окно с сообщениями. Установите курсор на сообщение и нажмите Enter (либо двойное нажатие левой клавишей мышки) и вы окажетесь в исходном модуле в позиции ошибки.
Устранив ошибки, выберите позицию Rebuild All или нажмите сочетание клавиш Ctrl-Alt-F9 для получения исполняемого файла.
В нижеследующем разделе приведены самые необходимые сведения и примеры, для того чтобы понять специфику Пролога и начать писать прораммы. Тема работы с внешней («бинарной») базой данных Пролога не затрагивается.