ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление 231000.62 – Программная инженерия, 7 семестр Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая.

Презентация:



Advertisements
Похожие презентации
Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая
Advertisements

Декларативное программирование Лекция 1. План 1.Парадигмы программирования 2.Классификация языков программирования. Основные концепции парадигм функционального.
Рекурсивно-логическое программирование Представление дисциплины.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
Дисциплина по выбору Кафедра ИиП Авторы курса – к.т.н. Синицын Иван Васильевич, к.т.н. Крахмалев Дмитрий Владимирович.
О курсе ФЛП … [ Вкратце о главном ]. Преподаватель Иконников Михаил Владимирович (220400) Программное обеспечение вычислительной техники и автоматизированных.
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. Содержание дисциплины В ГОСТе на специальность записано, что в рамках дисциплины «Системное программное обеспечение»
Профильные курсы информатики, ориентированные на программирование. Объекто- ориентированное программирование.
ТЕХНОЛОГИИ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ. Отличия систем искусственного интеллекта от обычных программных систем ХарактеристикаПрограммирование в системах.
Теория экономических информационных систем Представление дисциплины.
Учебный курс «ИНТЕЛЛЕКТУАЛЬНЫЕ СИСТЕМЫ» Кафедра СОИУ (ИУ-5) Филиппович Андрей Юрьевич к.т.н., доцент МГТУ им. Н.Э.Баумана уч. секретарь УМС «ИТ в образовании»
Сравнение количества заданий, включенных в ГИА и ЕГЭ по темам курса «Информатика и ИКТ»
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Особенности и структура контрольно – измерительных материалов по информатике и ИКТ (9 класс) Председатель предметной комиссии по информатике Ленинского.
Функциональное программирование Язык Lisp. Введение.
Основы визуального программирования Количество недель – 13 ( до 17 мая ) Количество лаб. работ – РГЗ Зачет (по результатам работы в семестре) Срок.
Основные понятия и определения информатики Тема 1.
Введение в предмет Лекция 1 Парадигмы и стили программирования.
Организация балльно-рейтинговой системы оценки успеваемости студентов по дисциплине «Информационные и коммуникационные технологии в образовании» Кафедра.
Транксрипт:

ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление – Программная инженерия, 7 семестр Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая Web: ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление – Информатика и ВТ, 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. - СПб.: БХВ-Петербург, С. Братко И. Алгоритмы искусственного интеллекта на языке Prolog. – М. : Вильямс, – 637 с. Городняя Л.В. Основы функционального программирования. – М. : ИНТУИТ.РУ, – 272 с. Ин Ц., Соломон Д. Использование Турбо-Пролога. - М.: Мир, С. Непейвода Н.Н. Стили и методы программирования. – М.: Интернет- университет информационных технологий, – 316 с.

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

ИСТОЧНИКИ (ДОПОЛНИТЕЛЬНЫЕ) Доорс Дж., Рейблейн А.Р., Вадера С. Пролог язык программирования будущего. - М.: ФиС, С. Клоксин У., Меллиш Д. Программирование на языке Пролог. - М.: Мир, С. Маурер У. Введение в программирование на языке ЛИСП. - М.: Мир, С. Полещук Н., Лоскутов П. AutoLISP и Visual LISP в среде AutoCAD. - СПб.: БХВ-Петербург, С. Стобо Дж. Язык программирования Пролог. - М.: Мир, С. Хендерсон П. Функциональное программирование: применение и реализация. М.: Мир, С. Янсон А. Турбо-Пролог в сжатом изложении. - М.: Мир, С.

ИНТЕРНЕТ-РЕСУРСЫ Программирование на языке ПРОЛОГ [Электронный ресурс]. – Электрон. дан. – USAM SRL, cop – Режим доступа : Русскоязычное сообщество липскеров [Электронный ресурс]. – Электрон. дан. – Lisp.ru, cop – Режим доступа : Lisper.ru [Электронный ресурс]. – Электрон. дан. – lisper.ru, cop – Режим доступа : Home Lisp [Электронный ресурс]. – Электрон. дан. – Режим доступа : XLISP Home Page [Electronic resource]. – Electronic data. – Mode acess : Amzi! inc. [Electronic resource]. – Electronic data. – Mode acess :

ИНТЕРНЕТ-РЕСУРСЫ Association of Lisp Users [Electronic resource]. – Electronic data. – Mode acess : LispWorks [Electronic resource]. – Electronic data. – LispWorks Ltd., cop – Mode acess : Prolog Development Center [Electronic resource]. – Electronic data. – Copenhagen, cop – Mode acess : SWI-Prolog [Electronic resource]. – Electronic data. – Mode acess : Visual Prolog [Electronic resource]. – Electronic data. – Mode acess :

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

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

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

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

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

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

Современное состояние ЛП Visual Prolog 7.5 Разработкой языка занимается фирма PDC Prolog Development Center

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

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

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

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

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

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

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