logo search
FINAL (Verdana, 16)

13. Объясните принципы декларативного стиля программирования.

Лог. прогр. — парадигма програм-ния, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Prolog - язык прогр-ия, используемый для решения задач, в которых действуют объекты и отношения между этими объектами. Программа на Prolog'е состоит из неск секций (необязательных): DOMAINS - секция описания доменов (типов). Применяется, если в программе используются нестанд. домены. PREDICATES - секция описания предикатов. Применяется, если в программе используются нестанд предикаты. CLAUSES - секция предложений. Записываются предложения: факты и правила вывода. GOAL - секция цели. Записывается внутренний запрос. Стоит различать два уровня смысла программы на Прологе: декларативный и процедурный. Декларативный касается отношений, определенных в программе. Декл-ый смысл определяет, что должно быть результатом работы программы. Процедурный смысл определяет еще и как этот результат был получен, т. е. как отношения реально обрабатываются пролог - системой. Программа на прологе состоит из предложений 3 видов: факты, правила, запросы. Все предложения строятся из термов, синтаксических единиц. Константы - поименованные конкретные объекты или отношения. Переменные - для обозначения объектов, значения которых меняются в ходе выполнения программы. Структура - это единый объект, состоящий из совокупности других объектов, наз-ых компонентами. Компоненты могут быть также структурами. Переменные могут быть свободными (у нее нет никакого значения, еще называют неконкретизированными) или связанными (есть какое-то значение и связана с опр-ым объектом). Областью действия переменной в Прологе является одно предложение. В разных предложениях может использоваться одно имя переменной для обозначения разных объектов. Исключением из правила определения области действия является анонимная переменная ("_").

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

Унификация – приведение выражений справа и слева от знака унификации к одному значению. Если в операции уни-ии участвуют 2 переменных, и каждая связана со своим значением, то выполняется их сравнение. Если одна переменная не связана, то выполняется приравнивание ей значения. А если в унификации участвуют выражения с наличием несвязанных частей, то эти части принимают значения из таких же частей другого выражения. При этом ПроЛог пытается привести оба выражения к одному значению. Примеры «приравнивание»: Goal А = 5, А = Б write(А, “,”, Б). ПроЛог выдаст на экран: 5,5. В процессе вычисления цели пролог проводит перебор вариантов, в соответствии с установленным порядком. Цели выполняются посл-но, а в случае неудачи происходит откат к предыдущей цели.

Механизм поиска с возвратом. Пролог при поиске решения задачи использует метод проб и возвращений назад, как например при поиске выхода в лабиринте; этот метод называется поиск с возвратом. Если, начиная поиск решения задачи, Пролог должен выбрать между альтернативными путями, то он ставит маркер у места ветвления (точкой отката) и выбирает первую подцель, которую и станет проверять. Если данная подцель не выполнится (тупик в лабиринте), Пролог вернется к точке отката и попробует проверить другую подцель. Основные правила поиска с возвратом: 1) Цели должны быть доказаны по порядку, слева, направо. 2) Для доказательства некоторой цели предложения просматриваются в том порядке, в каком они появляются в тексте программы. 3) Для того, чтобы доказать головную цель правила, необходимо доказать цели в теле правила. Тело правила состоит, в свою очередь из целей, которые должны быть доказаны. 4) Цель считается доказанной, если с помощью соответствующих фактов доказаны все цели, находящиеся в листьевых вершинах дерева целей.

Рекурсивная процедура - вызывающая сама себя до тех пор, пока не будет соблюдено некоторое условие, которое остановит рекурсию. Такое условие называют граничным. Рекурсия - хороший способ для решения задач, содержащих в себе подзадачу такого же типа. Пример рекурсии: найти факториал n!.