3. Язык программирования Пролог.
Язык Пролог был изобретен французским
математиком-программистом Колмэрауе в 1972 году как
язык логического программирования для проведения экспериментов в области
“искусственного интеллекта” на ЭВМ.
Интерпретаторы
Пролога в 80-ых годах были созданы практически для всех типов компьютеров
для исследований по проекту ЭВМ пятого поколения и в том числе для IBM PC и
всех типов школьных компьютеров.
Базис
языка Пролог - исчисление предикатов, являющегося одним из разделов математической
логики, в котором изучается техника математических доказательств и методы
автоматического доказательства теорем на ЭВМ.
Программы на Прологе состоят из фактов и правил
вывода, записываемых в форме предикатов. Предикаты - это функции, принимающие логические значения “истина” или “ложь” и
имеющие один или нескольких аргументов.
Пример программы на языке Пролог:
мама( Зина, Вова);
папа( Вова,
Лена);
бабушка( x, z ) <- мама( x, y ), мама( y,
z );
Факты
в Прологе служат для описания конкретных данных и простейших сведений.
Примеры фактов:
мама(зина,вова) –
Зина – мама Вовы
папа(миша,вова) – Миша – папа Вовы
Правила
в Прологе используются для описания определений, процедур принятия решений
и обработки данных. Примеры использования правил для описания определения
понятия "родитель":
родитель(x,y) ¬ папа(x,y); –
Родитель – это папа или мама
родитель(x,y)
¬ мама(x,y).
Предикаты в Прологе в отличие от
языка математической логики записываются с использованием идентификаторов
- слов русского, английского и других национальных языков. Примеры: рост( х, у ); мама( х, у ); бабушка( x, z ) .
Логически
предикаты выражают некоторые суждения о некоторых переменных либо
объектах и их свойствах. Примеры
суждений, выражаемых в предикатах: A( x ) = “цвет = х ”; B( x, y ) = “ x < y “.
Программы в Прологе – это наборы правил
над группами фактов, к которым можно обращаться с вопросами. Примеры записи
вопросов на языке Пролог:
? мама( x, Вова ); - кто мама у Вовы?
?
родитель( x, Вова ); - кто родители у Вовы?
Поиск
ответов на вопросы проводится интерпретатором Пролога на основе фактов и правил вывода, содержащихся в
программе. Ответами в простейших случаях будут значения переменных, отвечающих
запросам. Пример:
? мама( x, Вова ); - кто мама у Вовы?
х = Зина
Ответы на вопросы могут быть логические
значения ДА (истина) или НЕТ.
Примеры простых вопросов:
? мама( Зина, Вова ); -
Зина - мама Вовы?
ДА
? папа( Миша, Вова ); -
Миша - папа Вовы?
НЕТ