Лабораторные работы функциональное программирование

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Лабораторные работы по курсу «Функциональное программирование», ИУ7 2021г.

License

SorCube/IU7-Functional-Programming

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Читайте также:  Программирование приложений автоматизированных систем

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Лабораторные работу по курсу «Функциональное программирование», ИУ7 2021г.

Список лабораторных работ

ЛР Тема Код Отчёт Сдано
1 Списки в Lisp. Использование стандартных функций. Отчёт ✔️
2 Определение функций пользователя Код Отчёт ⭕️
3 Работа интерпретатора Lisp Код Отчёт ⭕️
4 Использование управляющих структур, работа со списками Код Отчёт ⭕️
5 Код Отчёт ⭕️
6 Код Отчёт ⭕️
7 Использование управляющих структур, модификация списков Код Отчёт ⭕️
8 Использование функционалов Код Отчёт ⭕️
9 Использование функционалов и рекурсии
10 Вложенные рекурсия и функционалы

✔️ — выполнено, ⭕️ — ожидает проверки, ❌ — не готово

About

Лабораторные работы по курсу «Функциональное программирование», ИУ7 2021г.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Лабораторные работы по функциональному программированию (ИТМО, ПИиКТ-СиППО, 4 курс).

License

Avvessalom/itmo-functional-programming

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Цель: освоить базовые приёмы и абстракции функционального программирования: функции, поток управления и поток данных, сопоставление с образцом, рекурсия, свёртка, отображение, работа с функциями как с данными, списки. В рамках лабораторной работы вам предлагается решить несколько задач проекта Эйлер. Список задач – ваш вариант. Для каждой проблемы должно быть представлено несколько решений:

  • монолитные реализации с использованием:
    • хвостовой рекурсии;
    • рекурсии (вариант с хвостовой рекурсией не является примером рекурсии);

    Требуется использовать идиоматичный для технологии стиль программирования.

    Цель: освоиться с построением пользовательских типов данных, полиморфизмом, рекурсивными алгоритмами и средствами тестирования (unit testing, property-based testing). В рамках лабораторной работы вам предлагается реализовать одну из предложенных классических структур данных (список, дерево, бинарное дерево, hashmap, граф. ). Требования:

    1. Функции:
      • добавление и удаление элементов;
      • фильтрация;
      • отображение (map);
      • свертки (левая и правая);
      • структура должна быть моноидом.
    2. Структуры данных должны быть неизменяемыми. Если язык допускает изменение данных – необходимо это протестировать.
    3. Реализованные функции должны быть встроены/совместимы со стандартными интерфейсами/библиотекой.
    4. Библиотека должна быть протестирована в рамках unit testing.
    5. Библиотека должна быть протестирована в рамках property-based тестирования (как минимум 3 свойства).
    6. Структура должна быть полиморфной.
    7. Требуется использовать идиоматичный для технологии стиль программирования.

    About

    Лабораторные работы по функциональному программированию (ИТМО, ПИиКТ-СиППО, 4 курс).

    Источник

    Функциональное программирование Введение

    Методические указания к выполнению лабораторных работ по дисциплине «Функциональное программирование» предназначены для студентов третьего курса специальности 220400. Данные методические указания содержат:

    • перечень теоретических вопросов, которые должны быть разъяснены преподавателем ведущим лабораторные занятия;
    • практические задания, которые должны быть разобраны и выполнены под руководством преподавателя;
    • практические задания для самостоятельной работы.

    Лабораторная работа № 1.

    • Знакомство со средой ЛИСП (загрузить, закончить работу).
    • Функция (setq . ), функция (eql . ), арифметические и логические операции («+». «-» ,»*», «/», «», «=»,»and», «or», «not»), префиксная форма записи выражений в среде ЛИСП.
    • Использование оператора (if . ).
    • Определение и вызов функции пользователя ((defun . )).
    • Использование рекурсии.
    • Трассировка.
    • Вызов функции записанной и сохраненной в текстовом файле ((load ‘*.lsp)).
    1. Определите функцию, аргументами которой являются три числа и которая возвращает значение True если первое число принадлежит интервалу ограниченному следующими двумя числами. В противном случае — функция возвращает значение NIL.
    1. Завершите работу в среде ЛИСП, после чего наберите и сохраните текст функции из задания 1 в файле с расширением .lsp. Повторно войдите в среду, загрузите файл с сохраненным текстом функции, вызовите функцию.
    1. Определите функцию возвращающую сумму чисел от 1 до n. Осуществите трассировку написанной функции, рассмотрите результаты трассировки.
    1. Определите функцию возводящую число a в степень n.
    1. Определите функцию возвращающую значение факториала числа n.

    Лабораторная работа № 2.

    • Списки. Простейшие функции работы со списками ((car . ), (cdr . ), (cons . ), (null . )).
    1. Определите функцию возвращающую количество элементов в списке
    1. Определите функцию возвращающую минимальный/максимальный элемент списка.
    1. Определите функцию удаляющую из списка l все элементы равные k.
    1. Определите функцию удаляющую из списка l n-й элемент. Первым элементом списка считается голова списка.
    1. Повторите задание 4 для списка с обратной нумерацией.
    1. Определите функцию добавляющую в список l элемент k в качестве n-го элемента. Первым элементом считается голова списка.
    1. Повторите задание 6 для списка с обратной нумерацией элементов.
    1. Определите функцию моделирующую «детскую считалочку». В кругу стоит n человек имеющих разные имена, в «считалочке» m слов. Функция должна возвращать последовательность выбывания игроков из круга.

    Источник

Оцените статью