1 / 47

ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая Email: novitskaya@corp.nstu.ru Web: http://ermak.cs.nstu.ru/flp. ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. Направление 231000.62 – Программная инженерия, 7 семестр. ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ.

lowri
Download Presentation

ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая Email: novitskaya@corp.nstu.ru Web: http://ermak.cs.nstu.ru/flp ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление 231000.62 – Программная инженерия, 7 семестр ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление 230100.62 – Информатика и ВТ, 7 семестр

  2. ПРЕДМЕТ ИЗУЧЕНИЯ • ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕязык программирования Lisp(LISt Processing) • ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕязык программирования Prolog(PROgramming in LOGic)

  3. ФУНКЦИОНАЛЬНОЕИ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (ФЛП) • Лекции – 34 часа(17 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет

  4. ФУНКЦИОНАЛЬНОЕПРОГРАММИРОВАНИЕ (ФП) • Лекции – 34 часа(17 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет

  5. ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (ЛП) • Лекции – 17 часов(8 лекций) • Лабораторные работы (ЛР) – 17 часов(4 лаб. работы) • Расчетно-графическое задание (РГЗ)(получение задания на 2-й лаб. работе) • Диф. зачет

  6. БАЛЛЬНО-РЕЙТИНГОВАЯ СИСТЕМА • Дисциплинав целом – 100 баллов • 80 баллов в семестре • 20 баллов на зачете • Лабораторные работы с №1 по №4 • 8  16 баллов • Расчетно-графическое задание • 8  16 баллов • Срок защиты ЛР без потери баллов – одна неделя после лабораторной работы по расписанию • Срок защиты РГЗ без потери баллов • ФЛП – 17 неделя, ФП – 15 неделя, ЛП – 16 неделя

  7. ОТЧЕТНОСТЬ • Отчеты по лабораторным работам представляются в электронном виде одним файлом в конце семестра • Отчет по расчетно-графическому заданию представляется в распечатанном виде в конце семестра

  8. УЧЕБНЫЕ МАТЕРИАЛЫ

  9. ИСТОЧНИКИ (ОСНОВНЫЕ) • Адаменко А.Н., Кучуков А.М. Логическое программирование и Visual Prolog. - СПб.: БХВ-Петербург, 2003. - 992 С. • Братко И. Алгоритмы искусственного интеллекта на языке Prolog. – М. : Вильямс , 2004. – 637 с. • Городняя Л.В. Основы функционального программирования. – М. : ИНТУИТ.РУ , 2004. – 272 с. • Ин Ц., Соломон Д. Использование Турбо-Пролога. - М.: Мир, 1993. - 608 С. • Непейвода Н.Н. Стили и методы программирования. – М.: Интернет-университет информационных технологий, 2005. – 316 с.

  10. ИСТОЧНИКИ (ОСНОВНЫЕ) • Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. - М.: Мир, 1990. - 235 С. • Хювёнен Э., Сеппянен Й. Мир Лиспа. М.: Мир, 1990. - 447 С. • Цуканова Н.И., Дмитриева Т.А. Логическое программирование на языке Visual Prolog. - М.: Горячая Линия - Телеком, 2008. - 144 С. • Чанышев О.Г. ПРОграммирование в ЛОГике. – Омск : Изд-во ОмГУ , 2004. – 63 с. • Шрайнер П.А. Основы программирования на языке Пролог. Курс лекций. - М.: Интернет-университет информационных технологий, 2005. - 176 С.

  11. ИСТОЧНИКИ (ДОПОЛНИТЕЛЬНЫЕ) • Доорс Дж., Рейблейн А.Р., Вадера С. Пролог язык программирования будущего. - М.: ФиС, 1990. - 144 С. • Клоксин У., Меллиш Д. Программирование на языке Пролог. - М.: Мир, 1987. - 336 С. • Маурер У. Введение в программирование на языке ЛИСП. - М.: Мир, 1978. - 104 С. • Полещук Н., Лоскутов П. AutoLISP и Visual LISP в среде AutoCAD. - СПб.: БХВ-Петербург, 2006. - 960 С. • Стобо Дж. Язык программирования Пролог. - М.: Мир, 1993. - 368 С. • Хендерсон П. Функциональное программирование: применение и реализация. М.: Мир, 1983. - 349 С. • Янсон А. Турбо-Пролог в сжатом изложении. - М.: Мир, 1991. - 94 С.

  12. ИНТЕРНЕТ-РЕСУРСЫ • Программирование на языке ПРОЛОГ [Электронный ресурс]. – Электрон. дан. – 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

  13. ИНТЕРНЕТ-РЕСУРСЫ • 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

  14. ПАРАДИГМА • Парадигма – это система взглядов на явления окружающего мира и представлений о возможных взаимодействиях с ними • Парадигма программирования – система идей и понятий, определяющих фундаментальный стиль программирования

  15. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • декларативная • логическая • функциональная • императивная • объектно-ориентированная • параллельная • процедурная • …

  16. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • Некоторый язык программирования не обязательно использует только одну парадигму, многие языки поддерживают несколько парадигм • Ни одна парадигма не может быть одинаково эффективной для всех задач, и программисту следует выбирать лучший стиль программирования для решения каждой отдельной задачи

  17. КЛАССИФИКАЦИЯ

  18. ОТЛИЧИЯ • Алгоритмический (процедурный) способ программирования соответствует вопросу «как» (необходимо описать, как решается задача), декларативный способ – вопросу «что» (достаточно описать, что должно быть решено) • Программа на декларативном языке состоит из двух компонент: условия задачи (которую иногда называют «базой данных») и целевого запроса • Для декларативного программирования необходимо наличие «решателя» (называемого обычно интерпретатором), который «знает» как выполнить целевой запрос, исходя из условий, представленных в «базе данных»

  19. ОБЛАСТИ ПРИМЕНЕНИЯ ДЕКЛАРАТИВНЫХ ЯЗЫКОВ • Реализация обработки типов данных, имеющих рекурсивную природу: списков, деревьев, графов и сводящихся к ним структур • Такого рода задачи характерны для обработки символьной информации, то есть для создания трансляторов и решения задач искусственного интеллекта: обработки естественного языка, трансформации и автоматического синтеза программ, аналитического преобразования формальных текстов и др. • Создание систем искусственного интеллекта • Разработка экспертных систем и оболочек экспертных систем • Создание систем помощи принятия решений • Разработка систем обработки естественного языка • Построение планов действий роботов • …

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

  21. Современное состояние ФП

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

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

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

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

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

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

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

  29. ЯЗЫК ФП LISP • Особенности языка • Одинаковая форма представления данных и программ – в виде списка • Функциональный образ мышления • Не требуется явное описание типов данных, используемых в программе • Основной способ решения – рекурсия

  30. ПЕРВАЯ ПРОГРАММА • > (+ 2 3)программаданные • > (+ 2 3)5 • > ‘(+ 2 3)(+ 2 3) • > (quote (+ 2 3))(+ 2 3)

  31. ОСНОВЫ LISP’А

More Related