Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Первая программа



Программа

на Прологе состоит из фактов и правил, которые образуют базу знаний Пролог-программы, и запроса к этой базе, который задает цель поиска решений.

Предикат

описывают отношение между объектами, которые являются аргументами предиката.

Факты

Констатируют наличие заданного предикатом отношения между указанными объектами.

ПРИМЕР

Констатация факта в предложениии

Эллен любит теннис.

в синтаксисе Пролога выглядит так:

Имя предиката ( функтора ) и объекта должно начинаться с маленькой буквы и может содержать латинские буквы, кириллицу, цифры и символ подчеркивания (_). Кириллица используется наравне с латинскими буквами. Обычно предикатам дают такие имена, чтобы они отражали смысл отношения. Например: main, add_file_name. Два предиката могут иметь одинаковые имена, тогда система распознает их как разные предикаты, если они имеют различное число аргументов ( арность ). Например, любит/2, любит/3.

Имя предиката может совпадать с именем какого-либо встроенного предиката SWI/PROLOG-а. Однако, если совпали имена пользовательского и встроенного предиката, то при обращении к нему (либо из интерпретатора, либо из программы), будет вызван пользовательский предикат, т.е. пользовательское определение «перекроет» предопределенное в SWI/PROLOG-е.

Правила

описывают связи между предикатами.

ПРИМЕР

Билл любит все, что любит Том.

в синтаксисе Пролога

любит('Билл',Нечто):- любит('Том',Нечто).

Правило B:-A соответствует импликации A→BЕСЛИ A, ТО B»).

В общем виде правило - это конструкция вида:

P0:-P1,P2,…,Pn.

которая читается «P0 истинно, если P1 и P2 и... Pn истинны".

Предикат P0 называется заголовком правила, выражение P1,P2,…,Pn - телом правила, а предикаты Pi - подцелями правила. Запятая означает логическое " И ".

Факты и правила называются также утверждениями или клозами. Факт можно рассматривать как правило, имеющее заголовок и пустое тело.

Процедура

- это совокупность утверждений, заголовки которых имеют одинаковый функтор и одну и ту же арность. Процедура задает определение предиката.

Конец предложения всегда отмечается точкой, поэтому все факты, правила и запросы должны заканчиваться точкой. Заметим также, что между именем предиката и скобкой не должно быть пробелов.

Переменная

- поименованная область памяти, где может храниться значение.

Если переменная не связана со значением – она называется свободной переменной.

Унификация

- процесс получения свободной переменной значения в результате сопоставления при логическом выводе в SWI/PROLOG-е.

Понятие переменной в логическом программировании отличается от базового понятия переменной, которое вводится в структурном программировании. Прежде всего, это отличие заключается в том, что переменная в SWI/PROLOG-е, однажды получив свое значение при унификации в процессе работы программы, не может его изменить, т.е. она скорее является аналогом математического понятия «переменная» – неизвестная величина. Переменная в SWI/PROLOG не имеет предопределенного типа данных и может быть связана с значением любого типа данных.

Переменная в SWI/PROLOG обозначается как последовательность латинских букв, кириллицы и цифр, начинающаяся с заглавной буквы или символа подчеркивания (_). Заметим, что если значение аргумента предиката или его имя начинается с заглавной буквы, то оно пишется в апострофах (см. предыдущий пример).

В SWI/PROLOG различаются строчные и заглавные буквы.

Рассмотрим следующую программу на SWI/PROLOG, которую будем использовать для иллюстрации процессов создания, выполнения и редактирования Пролог-программ.

ПРОГРАММА 1. /* кто что любит */

любит('Эллен',теннис). %Эллен любит теннис

любит('Джон',футбол). %Джон любит футбол

любит('Том',бейсбол). %Том любит бейсбол

любит('Эрик',плавание). %Эрик любит плавание

любит('Марк',теннис). %Марк любит теннис

любит('Билл',X):-любит('Том',X). %Билл любит то, что любит Том

Комментарий в строке программы начинается с символа % и заканчивается концом строки. Блок комментариев выделяется специальными скобками: /* (начало) и */ (конец).





Дата публикования: 2014-12-11; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...