480 likes | 881 Views
Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая Email: novitskaya@corp.nstu.ru Web: http://ermak.cs.nstu.ru/flp. ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. Направление 231000.62 – Программная инженерия, 7 семестр. ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ.
E N D
Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая Email: novitskaya@corp.nstu.ru Web: http://ermak.cs.nstu.ru/flp ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление 231000.62 – Программная инженерия, 7 семестр ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление 230100.62 – Информатика и ВТ, 7 семестр
ПРЕДМЕТ ИЗУЧЕНИЯ • ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕязык программирования Lisp(LISt Processing) • ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕязык программирования Prolog(PROgramming in LOGic)
ФУНКЦИОНАЛЬНОЕИ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (ФЛП) • Лекции – 34 часа(17 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет
ФУНКЦИОНАЛЬНОЕПРОГРАММИРОВАНИЕ (ФП) • Лекции – 34 часа(17 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (ЛП) • Лекции – 17 часов(8 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет
БАЛЛЬНО-РЕЙТИНГОВАЯ СИСТЕМА • Дисциплинав целом – 100 баллов • 80 баллов в семестре • 20 баллов на зачете • Лабораторные работы с №1 по №4 • 8 16 баллов • Расчетно-графическое задание • 8 16 баллов • Срок защиты ЛР без потери баллов – одна неделя после лабораторной работы по расписанию • Срок защиты РГЗ без потери баллов • ФЛП – 17 неделя, ФП – 15 неделя, ЛП – 16 неделя
ОТЧЕТНОСТЬ • Отчеты по лабораторным работам представляются в электронном виде одним файлом в конце семестра • Отчет по расчетно-графическому заданию представляется в распечатанном виде в конце семестра
ИСТОЧНИКИ (ОСНОВНЫЕ) • Адаменко А.Н., Кучуков А.М. Логическое программирование и Visual Prolog. - СПб.: БХВ-Петербург, 2003. - 992 С. • Братко И. Алгоритмы искусственного интеллекта на языке Prolog. – М. : Вильямс , 2004. – 637 с. • Городняя Л.В. Основы функционального программирования. – М. : ИНТУИТ.РУ , 2004. – 272 с. • Ин Ц., Соломон Д. Использование Турбо-Пролога. - М.: Мир, 1993. - 608 С. • Непейвода Н.Н. Стили и методы программирования. – М.: Интернет-университет информационных технологий, 2005. – 316 с.
ИСТОЧНИКИ (ОСНОВНЫЕ) • Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. - М.: Мир, 1990. - 235 С. • Хювёнен Э., Сеппянен Й. Мир Лиспа. М.: Мир, 1990. - 447 С. • Цуканова Н.И., Дмитриева Т.А. Логическое программирование на языке Visual Prolog. - М.: Горячая Линия - Телеком, 2008. - 144 С. • Чанышев О.Г. ПРОграммирование в ЛОГике. – Омск : Изд-во ОмГУ , 2004. – 63 с. • Шрайнер П.А. Основы программирования на языке Пролог. Курс лекций. - М.: Интернет-университет информационных технологий, 2005. - 176 С.
ИСТОЧНИКИ (ДОПОЛНИТЕЛЬНЫЕ) • Доорс Дж., Рейблейн А.Р., Вадера С. Пролог язык программирования будущего. - М.: ФиС, 1990. - 144 С. • Клоксин У., Меллиш Д. Программирование на языке Пролог. - М.: Мир, 1987. - 336 С. • Маурер У. Введение в программирование на языке ЛИСП. - М.: Мир, 1978. - 104 С. • Полещук Н., Лоскутов П. AutoLISP и Visual LISP в среде AutoCAD. - СПб.: БХВ-Петербург, 2006. - 960 С. • Стобо Дж. Язык программирования Пролог. - М.: Мир, 1993. - 368 С. • Хендерсон П. Функциональное программирование: применение и реализация. М.: Мир, 1983. - 349 С. • Янсон А. Турбо-Пролог в сжатом изложении. - М.: Мир, 1991. - 94 С.
ИНТЕРНЕТ-РЕСУРСЫ • Программирование на языке ПРОЛОГ [Электронный ресурс]. – Электрон. дан. – USAM SRL, cop. 2009. – Режим доступа : http://www.prolog.md • Русскоязычное сообщество лисперов [Электронный ресурс]. – Электрон. дан. – Lisp.ru, cop. 2008-2010. – Режим доступа : http://lisp.ru • Lisper.ru [Электронный ресурс]. – Электрон. дан. – lisper.ru, cop. 2009-2010. – Режим доступа : http://lisper.ru • Home Lisp [Электронный ресурс]. – Электрон. дан. – Режим доступа : http://homelisp.ru • XLISP Home Page [Electronic resource]. – Electronic data. – Mode acess : http://xlisp.org • Amzi! inc. [Electronic resource]. – Electronic data. – Mode acess : http://www.amzi.com
ИНТЕРНЕТ-РЕСУРСЫ • Association of Lisp Users [Electronic resource]. – Electronic data. – Mode acess : http://www.lisp.org • LispWorks [Electronic resource]. – Electronic data. – LispWorks Ltd., cop. 2001-2011. – Mode acess : http://www.lispworks.com • Prolog Development Center [Electronic resource]. – Electronic data. – Copenhagen, cop. 1983-2011. – Mode acess : http://www.pdc.dk • SWI-Prolog [Electronic resource]. – Electronic data. – Mode acess : http://www.swi-prolog.org • Visual Prolog [Electronic resource]. – Electronic data. – Mode acess : http://www.visual-prolog.com
ПАРАДИГМА • Парадигма – это система взглядов на явления окружающего мира и представлений о возможных взаимодействиях с ними • Парадигма программирования – система идей и понятий, определяющих фундаментальный стиль программирования
ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • декларативная • логическая • функциональная • императивная • объектно-ориентированная • параллельная • процедурная • …
ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • Некоторый язык программирования не обязательно использует только одну парадигму, многие языки поддерживают несколько парадигм • Ни одна парадигма не может быть одинаково эффективной для всех задач, и программисту следует выбирать лучший стиль программирования для решения каждой отдельной задачи
ОТЛИЧИЯ • Алгоритмический (процедурный) способ программирования соответствует вопросу «как» (необходимо описать, как решается задача), декларативный способ – вопросу «что» (достаточно описать, что должно быть решено) • Программа на декларативном языке состоит из двух компонент: условия задачи (которую иногда называют «базой данных») и целевого запроса • Для декларативного программирования необходимо наличие «решателя» (называемого обычно интерпретатором), который «знает» как выполнить целевой запрос, исходя из условий, представленных в «базе данных»
ОБЛАСТИ ПРИМЕНЕНИЯ ДЕКЛАРАТИВНЫХ ЯЗЫКОВ • Реализация обработки типов данных, имеющих рекурсивную природу: списков, деревьев, графов и сводящихся к ним структур • Такого рода задачи характерны для обработки символьной информации, то есть для создания трансляторов и решения задач искусственного интеллекта: обработки естественного языка, трансформации и автоматического синтеза программ, аналитического преобразования формальных текстов и др. • Создание систем искусственного интеллекта • Разработка экспертных систем и оболочек экспертных систем • Создание систем помощи принятия решений • Разработка систем обработки естественного языка • Построение планов действий роботов • …
Современное состояние ЛП • Visual Prolog 7.5 • Разработкой языка занимается фирма PDCProlog Development Center • http://www.pdc.dk
ЯЗЫК ЛП PROLOG • Особенности языка • Описание проблемы и правил ее решения • Нахождение всех возможных решений с помощью механизма поиска с возвратом(backtracking) • Простой синтаксис
ПЕРВАЯ ПРОГРАММА • Факты • Воробей – это птица.Воробей – родитель птенца. • Правило вывода • Некто является птицей при условии, что у него есть родитель – птица. • Программа • птица(воробей). • птица(X):– родитель(Y,X), птица (Y). • родитель(воробей, птенец). • Запрос • птица(Z) • Все возможные решения: • Z = воробей • Z = птенец
ПЕРВАЯ ПРОГРАММА • bird(sparrow).bird(X):–parent(Y,X), bird(Y).parent(sparrow,nestling). • ? – bird(Z)Z=sparrowZ=nestling Факт Правило вывода Факт Запрос
ОСНОВНЫЕ СПОСОБЫ РЕШЕНИЯ • Поиск с возвратом (backtracking) • Рекурсия Вход
ПОИСК С ВОЗВРАТОМ • Для работы поиска с возвратом необходимо выполнение двух условий • Недоказательство некоторой цели • Возврат (откат) к цели, которую можно передоказать
РЕКУРСИЯ • Нахождение значения факториала0! = 1n! = 1 * 2 * 3 * … * (n – 1) * n • Рекурсивная формула для расчета факториала0! = 1n! = (n – 1)! * n
РЕКУРСИЯ • factorial (0, 1).factorial (N, RES):-M=N – 1,factorial (M, TMP), RES= TMP * N. • ? – factorial (3, RES) RES = 6
ЯЗЫК ФП LISP • Особенности языка • Одинаковая форма представления данных и программ – в виде списка • Функциональный образ мышления • Не требуется явное описание типов данных, используемых в программе • Основной способ решения – рекурсия
ПЕРВАЯ ПРОГРАММА • > (+ 2 3)программаданные • > (+ 2 3)5 • > ‘(+ 2 3)(+ 2 3) • > (quote (+ 2 3))(+ 2 3)