пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

96. Программа на языке пролог. Цель программы, стратегия её выполнения. Подцели, сопоставление подцелей. Побочные эффекты сопоставления.

Основная цель логического программирования – создать возможность разработки программ на языке высокого уровня. В идеале программист должен записать аксиомы, определяющие требуемые отношения, полностью игнорируя, каким образом эти аксиомы будут использоваться в процессе выполнения. Имеющиеся языки логического программирования, и, в частности Пролог, всё ещё далеки от этого идеала декларативного программирования. Нельзя игнорировать конкретный, четко определённый способ моделирования абстрактного оператора в реализации каждого языка. Эффективное логическое программирование требует знания и использования этого способа.

Структура программы на языке Turbo Prolog

Domains <раздел описания доменов> ~ Type

DataBase <раздел описания динамических предикатов>

Predicates <статистический предикат>

Goal <раздел цели>

Clouses <раздел утверждений (фактов)>

Цели и подцели

Вопросы используются в прологе для выяснения выполнимости некоторого отношения между описанными объектами. Система рассматривает вопросы как цель, которую надо выполнить. Ответ на вопрос может оказаться положительным или отрицательным в зависимости от того достигнута цель или нет. Если в программе раздел goal присутствует, то цель называется внутренней. В этом случае после запуска программы на выполнение система проверяет достижимость заданной цели. Если же внутренней цели в программе нет – она запрашивает окном диалога и называется внешней. Если цель достигнута, то система отвечает, что у нее есть информация, позволяющая сделать вывод об истинности вопроса. Если достичь цели не удается, система отвечает, что у нее нет положительного ответа. Отличаются спецификой работы. У внутренне цели вывод ответа автоматически не производится. Цель может быть согласованная, если она сопоставляется с заголовком какого-либо предложения. если сопоставление происходит с фактом, то цель согласуется немедленно. Если же сопоставление происходит с заголовком правила, то цель согласуется только тогда, когда согласована каждая подцель. Подцели вызываются слева на право. Поиск подходящего для сопоставления предложения ведется с самого начала программы. Если подцель не допускает сопоставления, то система совершает возврат для попытки повторного согласования подцели, при этом просмотр программы осуществляется с предложения следующего за тем, которое обеспечивало согласование цели ранее. Побочные эффекты – печать на экране, очистка экрана.

Порядок правил.

Два синтаксических понятия, несущественные в логических программах, важны при создании программ на Прологе. В каждой процедуре должен быть принят порядок правил, или порядок предложений. Кроме того, в теле каждого предложения должен быть определён порядок целей. Последствия этих решений могут оказаться колоссальными: эффективность программирования на Прологе может измениться в десятки раз. В крайних и тем не менее распространённых случаях корректные логические программы вообще не приведут к решению вследствие не завершающегося вычисления.

Порядок правил определяет порядок поиска решений.

Изменение порядка правил в процедуре приводит к перестановке ветвей в любом дереве поиска цели, использующей данную процедуру. Обход дерева поиска происходит в глубину. Поэтому перестановка ветвей дерева изменяет порядок обхода дерева и порядок нахождения решений. Порядок, в котором находятся ответы на вопросы при работе рекурсивной программы, определяется порядком предложений.

Порядок целей более существен, чем порядок предложений. Порядок целей имеет решающее значение при определении последовательности действий в программе на Прологе.

Причина, по которой порядок целей в предложении влияет на порядок решений, отличается от причины, по которой порядок правил в процедуре влияет на порядок решений. Изменение порядка правил не изменяет дерево поиска, которое используется при решении данной цели. Просто обход дерева производится в ином порядке. Изменение порядка целей приводит к изменению дерева поиска.

Порядок целей определяет дерево поиска. По этой причине порядок целей влияет на количество проверок, выполняемых программой при решении.

При успешном выполнении вычисления средства управления программ на языке Пролог подобны средствам управления в обычных процедурных языках. Обращение к некоторой цели соответствует вызову процедуры, порядок целей в теле правила соответствует последовательности операторов. Точнее, правило А Я В1,В2,…,Вn можно рассматривать как определение процедуры:

Procedure A

Call B1

Call B2

.

.

.

Call Bn

End.

Рекурсивный вызов цели в Прологе в последовательности действий и в реализации подобен тому же вызову в обычных рекурсивных языках. Различие возникает при реализации возврата. В обычных языках, если вычисление не может быть продолжено (например, все ветви в операторе case ложны), возникает ошибка выполнения. В Прологе вычисление просто возвращается к последнему выбору и делается попытка продолжить вычисления по новому пути.

 


12.06.2014; 21:20
хиты: 64
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь