Основные понятия Турбо-Пролога

Пролог – это язык программирования, предназначенный для представления и использования знаний о некоторой предметной области. Под предметной областью понимается множество рассматриваемых объектов и совокупность знаний о них. Любая взаимосвязь между объектами и (или) их свойствами называется отношением.

Объекты могут быть объединены в классы, обладающие определенными свойствами. Элементы этих классов являются конкретными объектами предметной области. Для представления конкретного объекта в программе на Прологе используется константа. Константа – это число или символическое имя объекта. Примеры констант: mary, 54, 8.09, ”Иванов”.

Символическое имя (атом) – это неразрывная цепочка латинских букв, цифр и символа подчеркивания, начинающаяся со строчной латинской буквы.

Для именования объектов и их свойств могут использоваться строки – последовательности любых символов, заключенных в двойные кавычки.

Для описания в программе некоторого объекта, принадлежащего определенному классу, используется переменная. Переменная в программе представляется своим именем. Имя переменной в Прологе – это цепочка латинских букв или цифр, начинающихся с прописной латинской буквы. Примеры имен переменных: F, Dog, St7.

Чтобы описать отношение, необходимо указать его имя и перечислить либо классы объектов, либо конкретные объекты, связываемые с этим отношением.

<имя отношения>(<имя объекта 1>,…,<имя объекта n>)

Отношение характеризуется именем и числом аргументов (число классов объектов, связанных этим отношением). Для описания отношений в программе на Прологе используются предикаты.

Предикат – это логическая функция от n аргументов, имеющая только два значения ”истина” и ”ложь”. Синтаксис предиката:

<имя предиката>(<аргумент 1>,…,<аргумент n>)

При описании имя предиката совпадает с именем отношения, а аргументы предиката – это связываемые отношением объекты. Если описываемое предикатом отношение имеет место в предметной области, то предикат принимает значение ”истина”, иначе значение предиката ”ложь”. В качестве имени предиката используется цепочка латинских букв и цифр, начинающихся со строчной латинской буквы. Допустимо использовать знак подчеркивания. Примеры предикатов: likes(mary, sport), bank_book(“Таня”, 1000).

Знания о предметной области выражаются на языке Пролог в виде предложений, называемых утверждениями (CLAUSES). Каждое утверждение заканчивается точкой и описывает какое-либо отношение, свойство, объект или закономерность. Структура утверждения имеет одну из форм:

<заголовок>. /*факт*/

или

<заголовок>:- <тело>. /*правило*/

где заголовок является предикатом и полностью характеризует описываемое отношение.

Тело утверждения состоит либо из одного предиката, либо из списка предикатов, разделенных знаками ”,”, ”;”, ” not ”, соответствующими логическим операциям ”и”, ”или”, ”не”. Таким образом, тело утверждения является логическим выражением. Каждый входящий в это выражение предикат описывает какое-либо отношение. Знак ” :- ” соответствует слову ”если”. Утверждение читается так: «Отношение, стоящее в заголовке, будет истинным, если истинно логическое выражение, находящееся в теле утверждения».

Факты

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

Синтаксически правильно записанный факт имеет следующую структуру предиката:

<имя отношения> (<список аргументов>).

В списке аргументов перечисляются имена объектов (не более 255), связанных данным отношением. Аргументы в списке отделяются друг от друга запятыми, в некоторых случаях могут отсутствовать. Если аргумент представляет собой имя конкретного объекта (свойства) или число, то он является константой Пролога.

Определяя с помощью фактов отношения между объектами, необходимо учитывать порядок, в котором перечисляются их имена внутри круглых скобок. Следует учитывать, что одно и то же утверждение, записанное в виде фактов, может по-разному интерпретироваться. Только автор программы определяет истинную интерпретацию имен объектов и порядок следования аргументов, и им он должен следовать в процессе написания всей программы, отражая в комментариях смысл записанных им высказываний. Комментарий – это текст, заключенный между символами “/* … */” или строка, начинающаяся со знака “%”.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: