Планирование самостоятельной работы студентов
№ | Модули и темы | Виды СРС | Неделя семестра | Объем часов | Кол-во баллов | |
обязательные | дополнительные | |||||
Модуль 1 | ||||||
1.1 | Введение в проблематику функционального программирования. Процедурные и декларативные языки программирования. | Конспектирование материала на лекционных занятиях. Разработка программ | 1 | 2 | 0-7 | |
1.2 | Теоретические основы функционального программирования. Лямда-исчисление А. Черча. Языки функционального программирования. | Конспектирование материала на лекционных занятиях. Разработка программ | Работа с учебной литературой. | 2-3 | 2 | 0-19 |
Всего по модулю 1: | 4 | 0-26 | ||||
Модуль 2 | ||||||
2.1 | Основные понятия функционального программирования. Основные понятия функционального программирования. Основы языка Лисп. Символы, константы, атомы, логические значения. Базовые функции. | Конспектирование материала на лекционных занятиях. Разработка программ | 4-7 | 7 | 0-19 | |
2.2 | Определение функции в программе. Передача параметров в Лиспе. | Конспектирование материала на лекционных занятиях. Разработка программ | Работа с учебной литературой. | 8 | 3 | 0-12 |
2.3 | Управляющие структуры. | Конспектирование материала на лекционных занятиях. Разработка программ | 9 | 2 | 0-10 | |
Всего по модулю 2: | 12 | 0-41 | ||||
Модуль 3 | ||||||
3.1 | Рекурсивный стиль программирования. | Конспектирование материала на лекционных занятиях. Разработка программ | 10-11 | 3 | 0-14 | |
3.2 | Функционалы. | Конспектирование материала на лекционных занятиях. Разработка программ | Работа с учебной литературой. | 12 | 3 | 0-14 |
3.3 | Средства ввода и вывода. | Конспектирование материала на лекционных занятиях. Разработка программ | 13 | 3 | 0-5 | |
Всего по модулю 3: | 9 | 0-33 | ||||
ИТОГО: | 25 | 0-100 |
4. Разделы дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами.
№ п/п | Наименование обеспечиваемых (последующих) дисциплин | Темы дисциплины, необходимые для изучения обеспечиваемых (последующих) дисциплин | |||||||
1.1 | 1.2 | 2.1 | 2.2 | 2.3 | 3.1 | 3.2 | 3.3 | ||
1. | ВКР | + | + | + | + | + | + | + | + |
5. Содержание дисциплины.
1.1. Введение в проблематику функционального программирования. Процедурные и декларативные языки программирования. Основные разделы курса и требования к изучению дисциплины. Список литературных источников. Введение в проблематику функционального программирования. Применение функционального программирования в системах искусственного интеллекта. Современные парадигмы решения задач искусственного интеллекта. Особенности языков функционального программирования.
1.2. Теоретические основы функционального программирования. Лямда-исчисление А. Черча. Языки функционального программирования. Теоретические основы функционального программирования. Рекурсивные функции и лямбда-исчисление А. Черча. Программирование в функциональных обозначениях. Понятие строго функционального языка. Представление и интерпретация функциональных программ. Примеры языков функционального программирования.
2.1. Основные понятия функционального программирования. Основные понятия функционального программирования. Основы языка Лисп. Символы, константы, атомы, логические значения. Базовые функции. Основные понятия функционального программирования: атом, список, символьное выражение, функция. Базовые функции языка ЛИСП. Селекторы, конструкторы и предикатные функции.
2.2. Определение функции в программе. Передача параметров в Лиспе. Определение функции в программе. Лямбда-выражение и лямбда-вызов. Функция определения функции. Список аргументов. Сопоставление формальных и фактических параметров при оценивании лямбда-вызова.
2.3. Управляющие структуры. Управляющие структуры. Классификация управляющих структур. Структуры следования, разветвления и повторения.
3.1. Рекурсивный стиль программирования. Рекурсивный стиль программирования. Основы теории рекурсивных функций. Средства и приемы построения рекурсивных программ. Сравнение рекурсивного и итеративного подхода к реализации алгоритмов.
3.2. Функционалы. Функционалы. Понятие функционала. Применяющие и отображающие функционалы. Организация циклических вычислений с применением функционалов. Примеры решения задач.
3.3. Средства ввода и вывода. Ввод и вывод. Организация работы с файлами. Основные функции ввода/вывода информации. Макросы чтения. Заключение. Перспективы развития языков функционального программирования.
6. Планы семинарских занятий.
1. Изучение среды разработки muLisp. Общие принципы работы интерпретатора.
2. Применение селекторов для операций над списками.
3. Применение функции Quote.
4. Применение арифметических функций List.
5. Написание простейших функций.
6. Реализация сортировки с помощью рекурсивных функций.
7. Практическое применение инструментов ввода-вывода.
7. Темы лабораторных работ.
Тема 1.2 .Разработка программ в декларативном стиле в процедурном языке программирования.
Тема 2.2 . Лямбда-выражение и специальная форма DEFUN. Простые и условные формы. Рекурсивное определение функции. Алгоритм сортировки слиянием на языке Lisp.
Тема 2.3. Алгоритм «быстрой» сортировки на языке Haskell. Передача параметров и область их действия.
8. Примерная тематика курсовых работ (не запланированы).
9. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины (модуля).
Задания для домашних работ:
1. Функции для работы с числами
Реализовать функции тремя способами:
1) с использованием только функции IF;
2) с использованием функций IF и RETURN-FROM;
3) с использованием только функции COND.
Функции для реализации:
1) (Max a b) – определение максимального из двух чисел;
2) (Fact N) – расчёт факториала числа;
3) (Fib N) – определение числа Фибоначчи по его номеру в последовательности:
−10 | −9 | −8 | −7 | −6 | −5 | −4 | −3 | −2 | −1 |
−55 | 34 | −21 | 13 | −8 | 5 | −3 | 2 | −1 | 1 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 |
4) (Pow a n) – расчёт степени в целых числах.
5) (Discriminant a b c) – определение дискриминанта квадратного уравнения с коэффициентами a, b и c. При реализации следует использовать функцию (Pow a n).
6) (Root a b c n) – определение корня квадратного уравнения с коэффициентами a, b и c, где n – номер корня (n = 1 для x1, n = 2 для x2). При реализации следует использовать функцию (Discriminant a b c).
7) (BiRoot a b c n) – определение корня биквадратного уравнения. Аналогична функции (Root a b c n), n может принимать значения 1, 2, 3, 4. При реализации следует использовать функцию (Root a b c n).
Допускается использовать рекурсивный вызов функции. Функции должны обрабатывать возможные некорректные значения аргументов, возвращая NIL.
Вспомогательные функции:
(INTEGERP N) – проверяет, является ли параметр N целым числом.
(SQRT N) – извлекает квадратный корень из числа N.
2. Функции для работы со списками
Реализовать функции для работы со списками:
1) (Len L) – определение длины списка (учитываются элементы первого уровня): (Len '(1= 3.
2) (Append1 L1 L2) – слияние двух списков аналогично стандартной функции APPEND (при реализации следует использовать стандартную функцию CONS).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


