ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Post on 06-Jan-2016
105 Views
Preview:
DESCRIPTION
TRANSCRIPT
ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Направление 231000.62 – Программная инженерия, 7 семестр
Ст. преподаватель каф. ВТ НГТУЮлия Вадимовна НовицкаяEmail: novitskaya@corp.nstu.ruWeb: http://ermak.cs.nstu.ru/flp
ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Направление 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 баллов– 60 баллов в семестре– 40 баллов на экзамене
• Лабораторные работы с №1 по №4– 6 12 баллов
• Расчетно-графическое задание– 6 12 баллов
• Срок защиты ЛР без потери баллов – одна неделя после лабораторной работы по расписанию
• Срок защиты РГЗ без потери баллов– ФЛП – 17 неделя
БАЛЛЬНО-РЕЙТИНГОВАЯ СИСТЕМАФП и ЛП
• Дисциплина в целом – 100 баллов– 80 баллов в семестре– 20 баллов на зачете
• Лабораторные работы с №1 по №4– 8 16 баллов
• Расчетно-графическое задание– 8 16 баллов
• Срок защиты ЛР без потери баллов – одна неделя после лабораторной работы по расписанию
• Срок защиты РГЗ без потери баллов– ФП – 16 неделя, ЛП – 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• Разработкой языка занимается фирма PDC
Prolog 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)
ОСНОВЫ LISP’А
Символьные выражения
Атомы
Символы
Числа
t nil Length=LengthT+1 2=1+1
Списки
top related