скачать Министерство образования Российской Федерации Санкт-Петербургский государственный электротехнический университет “ЛЭТИ” РАБОЧАЯ ПРОГРАММА дисциплины ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Для подготовки дипломированных специалистов по направлению 657100–”Прикладная математика" по специальности 073000–“Прикладная математика ” и бакалавров по направлению 510200–”Прикладная математика и информатика" Санкт-Петербург 2001 Санкт-Петербургский государственный электротехнический университет “ЛЭТИ” “УТВЕРЖДАЮ” Проректор по учебной работе проф. ___________ Ушаков В.Н. “_____”_______________2001г. ^ дисциплины ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Для подготовки дипломированных специалистов по направлению 657100 – ”Прикладная математика" по специальности 073000–“Прикладная математика ” и бакалавров по направлению 510200–”Прикладная математика и информатика" Факультет компьютерных технологий и информатики Кафедра математического обеспечения и применения ЭВМ Курс – 3 Семестр – 5
2001 Рабочая программа обсуждена на заседании кафедры Математического обеспечения и применения ЭВМ “____”_______________2001 г., протокол №______. Рабочая программа составлена в соответствии с государственным образовательным стандартом по направлению 657100 – ”Прикладная математика" и специальности 073000 -“Прикладная математика”. Рабочая программа согласована с рабочими программами изученных ранее дисциплин: 1) Программирование; 2) Структуры и алгоритмы обработки данных; Рабочая программа одобрена методической комиссией факультета компьютерных технологий и информатики “____”_____________2001 г. ^ Целью дисциплины является изучение и практическое освоение средств логического и функционального программирования для решения научных и прикладных задач. В качестве инструментальных средств изучаются языки ПРОЛОГ и ЛИСП. Рассматриваются теоретические и прикладные аспекты использования данных программных средств для решения задач искусственного интеллекта. ^ В результате изучения дисциплины студенты должны:
^ Введение в проблематику логического и функционального программирования. Применение логического и функционального программирования в системах искусственного интеллекта: Задачи искусственного интеллекта. Современные парадигмы решения задач искусственного интеллекта. Роль логики в решении задач ИИ. Логика предикатов первого порядка. Клаузы Хорна. Соотношение между клаузальной и стандартной формой логики. Доказательство теорем в исчислении предикатов первого порядка. Алгоритм унификации и принцип резолюции Робинсона. Использование логики как языка программирования. Особенности языков функционального программирования. Использование функционального программирования для разработки систем искусственного интеллекта. ^ Основные понятия логического программирования: понятие логической программы. Основные конструкции. Факты, правила, вопросы. Логические переменные, подстановки и примеры. Абстрактный интерпретатор. Значение логической программы. Вычислительная модель логических программ. Концепция языков "нового принципа". Ретроспективный обзор создания средств логического программирования. ПРОЛОГ как система, реализующая логический вывод в исчислении предикатов первого порядка ^ Основные элементы языка: алфавит языка. Термы. Виды термов: константы, переменные, структуры. Литеры и их типы. Интерпретация литер. Операторы. Свойства операторов (позиция, приоритет, ассоциативность). Инфиксные, префиксные, постфиксные операторы. Запись фактов и правил. Предикат. Цели, конъюнкция целей. Общая схема доказательства целевого утверждения ^ Встроенные предикаты для сравнения чисел: =, \=, >, <, >=, =<. Вычисление арифметических выражений: операторы +, -, *, /, ^. Предикат is. Примеры программ с выполнением арифметических операций. ^ Диаграмма успешного доказательства целевых утверждений. Доказательство целевых утверждений при использовании механизма возврата. Правила установления соответствия. Недетерминизм первого и второго рода. Понятие "связанной" переменной. Примеры программ с использованием механизма возврата. Операционная модель вычисления ПРОЛОГ-программ. ПРОЛОГ и математическая логика. ^ Построение рекурсивных программ. Граничные условия и способы использования рекурсии. Структуры и деревья. Список как частный вид структуры. Формы записи списков. Работа со списками. Примеры программ с рекурсивными определениями. ^ Модели Причины использования отсечения. Предикат !. Диаграмма работы программы с использованием отсечения. Общие случаи использования отсечения. Тема 7. Ввод и вывод Ввод и вывод термов (предикаты read, write, display). Ввод и вывод литер (предикаты get, get0, put). Примеры программ с использованием ввода и вывода. ^ Предикаты: добавление и исключение утверждений, классификация термов, изменение и анализ утверждений, работа со структурами произвольного вида, воздействие на процесс возврата, реализация сложных способов выражения целевых утверждений, объявление операторов, обработка файлов, наблюдение за выполнением программы на ПРОЛОГе. Примеры использования встроенных предикатов. ^ Программирование второго порядка. Множественные выражения. Предикаты "univ", findall, bagof, setof. Интерфейсные и графические возможности версий ПРОЛОГа. ^ Рекомендации по расположению текста программ. Типичные ошибки при работе с ПРОЛОГом. Использование трассировки и контрольных точек в ПРОЛОГ-системе. Фиксация ошибок. ^ Constraint-технология в логическом программировании: обобщение механизма унификации, понятие constraint'а. Операционная модель Constraint-ПРОЛОГа. Инструментальные средства Constraint-ПРОЛОГа; Применение Constraint-ПРОЛОГА в задачах исследования операций. ^ Тенденции и перспективы развития методов и средств логического программирования. Параллелизм в ПРОЛОГЕ. Логическое программирование как перспективная методология разработки интеллектуальных систем. ^ Теоретические основы функционального программирования: рекурсивные функции и лямбда-исчисление А. Черча. Программирование в функциональных обозначениях. Понятие строго функционального языка. Представление и интерпретация функциональных программ. ^ Алфавит, семантика языка. Цикл работы интерпретатора. Атом, список, символьное выражение, функция. Селекторы, конструкторы и предикатные функции. Внутренне представление списков. ^ Системные свойства символа: печатное имя, значение, определение функции, список свойств. Определение и модификации значений системных свойств. Обобщенная функция присваивания. ^ Определение функции: лямбда-выражение и лямбда-вызов. Функция определения функции. Список аргументов. Тема 17. Управляющие структуры Классификация управляющих структур. Структуры следования, разветвления и повторение. Императивный стиль программирования средствами функционального языка. ^ Основы теории рекурсивных функций. Средства и приемы построения рекурсивных программ. Сравнение рекурсивного и итеративного подхода к реализации алгоритмов. Тема 19. Функционалы Понятие функционала. Применяющие и отображающие функционалы. Примеры решения задач с использованием функционалов. Тема 20. Ввод и вывод Организация работы с файлами. Основные функции ввода/вывода информации. Макросы чтения. Программирование с использованием «черепаховой графики». Тема 21. Объектно-ориентированное программирование средствами ЛИСПа Концепции организации интерфейса. Классы, методы, наследование. Примеры создания и инициализации объектов. ^ Перспективы развития языков функционального программирования. Перечень практических занятий
^
ЛИТЕРАТУРА Основная
Дополнительная
|