Скачать презентацию ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Ст преп каф ВТ Юлия Вадимовна Скачать презентацию ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Ст преп каф ВТ Юлия Вадимовна

06900ce7461834e2ef01225ca4505f40.ppt

  • Количество слайдов: 37

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Ст. преп. каф. ВТ Юлия Вадимовна Новицкая novitskaya@corp. nstu. ru http: //ermak. ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Ст. преп. каф. ВТ Юлия Вадимовна Новицкая novitskaya@corp. nstu. ru http: //ermak. cs. nstu. ru/logprog

Предмет изучения • Логическое программирование – декларативная парадигма • Язык логического программирования Prolog (PROgramming Предмет изучения • Логическое программирование – декларативная парадигма • Язык логического программирования Prolog (PROgramming in LOGic)

Учебный график • В летнюю сессию – Установочная лекция – 2 часа • В Учебный график • В летнюю сессию – Установочная лекция – 2 часа • В течение семестра – Контрольная работа (основы, поиск с возвратом) • В зимнюю сессию – Лекции – 4 часа – Две лабораторные работы – 8 часов • Рекурсия. Списки. • Деревья. • Диф. зачет

Балльно-рейтинговая система • Дисциплина – всего 100 баллов – В семестре – 20 баллов Балльно-рейтинговая система • Дисциплина – всего 100 баллов – В семестре – 20 баллов (контрольная работа – 20 баллов) срок сдачи – до начала сессии, во время сессии – 10 баллов – В сессию – 40 баллов (лаб. работы №№ 1, 2 – по 20 баллов) срок сдачи – сессия, после сессии – по 10 баллов – Диф. зачет – 40 баллов (один теоретический вопрос и один практический вопрос или тестирование)

Эпиграф Эпиграф

Эпиграф Эпиграф

Эпиграф Эпиграф

ЯЗЫК ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ PROLOG ЯЗЫК ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ PROLOG

Парадигмы программирования • Парадигма программирования – система идей и понятий, определяющих фундаментальный стиль программирования Парадигмы программирования • Парадигма программирования – система идей и понятий, определяющих фундаментальный стиль программирования • Парадигмы программирования: – декларативная • логическая • функциональная – императивная – объектно-ориентированная – параллельная –…

Парадигмы программирования • Некоторый язык программирования не обязательно использует только одну парадигму, многие языки Парадигмы программирования • Некоторый язык программирования не обязательно использует только одну парадигму, многие языки поддерживают несколько парадигм, являясь мультипарадигменными • Ни одна парадигма не может быть одинаково эффективной для всех задач, и программисту следует выбирать лучший стиль программирования для решения каждой отдельной задачи

Классификация Языки программирования Алгоритмические (процедурные) языки (C, С++, Pascal, Basic, …) Декларативные (неалгоритмические) языки Классификация Языки программирования Алгоритмические (процедурные) языки (C, С++, Pascal, Basic, …) Декларативные (неалгоритмические) языки Языки логического программирования (Prolog, …) Языки функционального программирования (Lisp, Haskell, Erlang…)

Отличия • Алгоритмический (процедурный) способ программирования соответствует вопросу «как» (необходимо описать, как решается задача), Отличия • Алгоритмический (процедурный) способ программирования соответствует вопросу «как» (необходимо описать, как решается задача), декларативный способ – вопросу «что» (достаточно описать, что должно быть решено) • Для декларативного программирования необходимо наличие «решателя» (называемого обычно интерпретатором), который «знает» , как выполнить целевой запрос, исходя из условий, представленных в «базе данных»

Области применения декларативных языков • Реализация обработки типов данных, имеющих рекурсивную природу: списков, деревьев, Области применения декларативных языков • Реализация обработки типов данных, имеющих рекурсивную природу: списков, деревьев, графов и сводящихся к ним структур • Создание систем искусственного интеллекта • Разработка экспертных систем и оболочек экспертных систем • Создание систем помощи принятия решений • Разработка систем обработки естественного языка • Построение планов действий роботов • …

Современное состояние ЛП • Visual Prolog • Разработкой занимается фирма Prolog Development Center (PDC) Современное состояние ЛП • Visual Prolog • Разработкой занимается фирма Prolog Development Center (PDC) • http: //www. pdc. dk

Современное состояние ЛП • SICStus Prolog • Разработкой занимается исследовательский институт Swedish Institute оf Современное состояние ЛП • SICStus Prolog • Разработкой занимается исследовательский институт Swedish Institute оf Computer Science (SICT) • http: //www. sics. se

Современное состояние ЛП • SWI Prolog • Разработкой занимаются в University of Amsterdam • Современное состояние ЛП • SWI Prolog • Разработкой занимаются в University of Amsterdam • http: //www. swi-prolog. org

Современное состояние ЛП • Amzi! Prolog • http: //amzi. com Современное состояние ЛП • Amzi! Prolog • http: //amzi. com

ОСНОВЫ ОСНОВЫ

ЯЗЫК PROLOG • Особенности языка – Описание проблемы и правил ее решения – Нахождение ЯЗЫК PROLOG • Особенности языка – Описание проблемы и правил ее решения – Нахождение всех возможных решений с помощью механизма поиска с возвратом (backtracking) – Простой синтаксис

ПЕРВАЯ ПРОГРАММА • Факты – Воробей – это птица. Воробей – родитель птенца. • ПЕРВАЯ ПРОГРАММА • Факты – Воробей – это птица. Воробей – родитель птенца. • Правило вывода – Некто является птицей при условии, что у него есть родитель – птица. • Запрос – птица(Z) • Все возможные решения: • Программа – птица(воробей). – птица(X): – родитель(Y, X), птица (Y). – родитель(воробей, птенец). – Z = воробей – Z = птенец

ПЕРВАЯ ПРОГРАММА Факт • bird(sparrow). bird(X): – parent(Y, X), bird(Y). parent(sparrow, nestling). Правило вывода ПЕРВАЯ ПРОГРАММА Факт • bird(sparrow). bird(X): – parent(Y, X), bird(Y). parent(sparrow, nestling). Правило вывода Факт • ? – bird(Z) Z = sparrow Z = nestling Запрос

ОСНОВНЫЕ СПОСОБЫ РЕШЕНИЯ • Поиск с возвратом (backtracking) • Рекурсия Вход ОСНОВНЫЕ СПОСОБЫ РЕШЕНИЯ • Поиск с возвратом (backtracking) • Рекурсия Вход

ПОИСК С ВОЗВРАТОМ • Для работы поиска с возвратом необходимо выполнение двух условий – ПОИСК С ВОЗВРАТОМ • Для работы поиска с возвратом необходимо выполнение двух условий – Недоказательство некоторой цели – Возврат (откат) к цели, которую можно передоказать

РЕКУРСИЯ • Нахождение значения факториала 0! = 1 n! = 1 * 2 * РЕКУРСИЯ • Нахождение значения факториала 0! = 1 n! = 1 * 2 * 3 * … * (n – 1) * n • Рекурсивная формула для расчета факториала 0! = 1 n! = (n – 1)! * n

РЕКУРСИЯ • factorial (0, 1). factorial (N, RES) : - M is N – РЕКУРСИЯ • factorial (0, 1). factorial (N, RES) : - M is N – 1, factorial (M, TMP), RES is TMP * N. • ? – factorial (3, RES) RES = 6