Лабораторная работа № 1.
Программирование простой базы данных.
ОБЩИЙ ОБЗОР ЯЗЫКА ПРОЛОГ
Пролог - это язык программирования, предназначенный для обработки символьной нечисловой информации. Особенно хорошо он приспособлен для решения задач, в которых фигурируют объекты и отношения между ними.
Программирование на языке Пролог состоит из следующих этапов:
· объявления некоторых фактов об объектах и отношениях между ними,
· определения некоторых правил об объектах и отношениях между ними и
· формулировки вопросов об объектах и отношениях между ними.
Факты
Факты – основной элемент программы на Прологе. Рассмотрим понятие факта на примере родственных отношений олимпийских богов.
Предположим, мы хотим сообщить Прологу факт: «Зевс является отцом Аполлона». Этот факт включает в себя два объекта, обозначенных именами «Зевс» и «Аполлон», и отношение «отец». В языке Пролог используется стандартная форма записи фактов:
отец(зевс, аполлон).
Важно соблюдать следующие правила:
· Имена всех отношений и объектов должны начинаться с строчной буквы. Например, отец, зевс, аполлон.
· Сначала записывается имя отношения. Затем через запятую записываются имена объектов, а весь список имен объектов записывается в круглые скобки.
· Каждый факт заканчивается точкой.
Определяя с помощью фактов отношения между объектами, необходимо учитывать, в каком порядке перечисляются имена объектов внутри круглых скобок. Этот порядок может быть произвольным, но выбрав один раз какой-то определенный порядок нужно везде следовать ему. Например, в приведенном выше факте мы поставили на первое место в списке объектов «того, кто является отцом», а объект «который является ребенком» стоит во второй позиции. Таким образом, факт отец (зевс, аполлон) не одно и то же, что отец(аполлон, зевс). В соответствии с принятой нами (хотя и произвольным образом) договоренностью первый факт говорит, о том, что Зевс является отцом Аполлона, а второй факт говорит, что Аполлон является отцом Зевса (В данном случае возникает противоречие).
Вопросы
Имея некоторую совокупность фактом можно обращаться к Прологу с вопросами о них. В прологе вопрос записывается почти также как и факт, за исключением того, что он записывается после определенного символа, обозначающего предложение сделать ввод вопроса (В разных реализациях это организовано по-разному). Например, знак вопроса и следующее за ним тире. Например:
?- отец (зевс, аполлон).
Обращение к Прологу с вопросом инициирует процедуру поиска в базе данных, ранее введенной в систему. Пролог ищет факты, сопоставимые с фактом о вопросе. Два факты сопоставимы (или соответствуют один другому), если их предикаты одинаковы(побуквенное совпадение) и их соответствующие аргументы попарно совпадают. Если Пролог находит факт, сопоставимый с вопросом, то отвечает да. Если в базе данных такого факта не существует, то Пролог отвечает нет. Ответ, выдаваемый Прологом, выводится на дисплей терминала непосредственно под запросом.