
Отчет_Лаба2_ФП_Ихсанова
.docУфимский Университет Науки и Технологий
ОТЧЕТ по лабораторной работе №2
по дисциплине:
«Функциональное программирование»
на тему:
«Создание простейших рекурсивных программ. Функции работы со строками и множествами. Сообщения об ошибках и преобразования типов.»
Выполнил: бакалавр гр. ПРО-432
Ихсанова Э. А.
Проверил: Усманова А. Р.
Содержание
Содержание 2
2 задание 4
3 задание 5
4 задание 6
5 задание 7
6 задание 7
7 задание 9
Вывод 9
1 Цель работы (Вариант 9)
Определите функции для вычисления чисел Фибоначчи по номеру и для вычисления факториала. С помощью них определите собственную функцию, записанную в условной математической нотации. (fib(n) - означает n-е число Фибоначчи).
F(n,m)=(min{n,m})!-fib(
)
Определите рекурсивные функции (задание в варианте) для решения задачи, постарайтесь по возможности не использовать встроенные списочные функции.
а) Найти произведение элементов списка, больших заданного числа;
б) найти номер последнего вхождения в список нечетного числа.
В задании описаны правила составления некоторого пароля. Написать функцию, проверяющую удовлетворяет ли заданная строка данным правилам, используя различные функции из модуля Char.
а) должен содержать четное количество цифр; б) код второго символа не должен превышать кода первого; в) содержит хотя бы одну строчную букву.
Дано универсальное множество U= {1, 2...10} и некоторые его подмножества A,B,C. Найти множество D, заданное в варианте. Реализовать множества списками и использовать функции из модуля List.
Написать функцию двух аргументов строкового типа, для выполнения арифметической операции. Вид операции, представление аргументов (система счисления) и результат в варианте задан в следующем виде:
При выполнении непосредственно арифметической операции разрешается использовать любую систему счисления (в т. ч. десятичную).
-
Операция
1-й аргумент
2-й аргумент
Результат
вычитание
8-ричная
2-ичная
римская
Используя функции show, read, error, undefined (не обязательно все сразу) напишите функцию, выполняющую указанные действия.
По введенной дате в формате «dd.mm» выводит сообщение о празднике (определить самостоятельно 5–10 праздников.). Выводит соответствующие сообщения об ошибках в данных.
2 Теоретические основы
В императивных языках программирования основной конструкцией является цикл.
В Haskell вместо циклов используется рекурсия. Функция называется рекурсивной, если
она вызывает сама себя (или, точнее, определена в терминах самой себя). Рекурсивные
функции существуют в императивных языках, но используются не столь широко.
Рекурсия — это способ определять функции таким образом, что функция применяется в собственном определении.
3 Результат выполнения работы
1 задание
F(n,m)=(min{n,m})!-fib( )
Рисунок 1 Результат работы
Рисунок 2 Исходный код
2 задание
а) Найти произведение элементов списка, больших заданного числа
Рисунок 3 Результат работы программы
Рисунок 4 Исходный код
б) найти номер последнего вхождения в список нечетного числа.
Рисунок 5 Исходный код
Рисунок 6 Результат
3 задание
а) должен содержать четное количество цифр
Рисунок 7 Исходный код
Рисунок 8 Результат работы программы
б
)
код второго символа не должен превышать
кода первого
Рисунок 9 Исходный код
Рисунок 10 Результат
в) содержит хотя бы одну строчную букву
Рисунок 11 Исходный код
Рисунок 12 Результат
4 задание
З
ашифруйте
заданную строку с помощью шифра Цезаря
с ключом, соответствующим номеру варианта
(9). Напишите функцию для расшифровки
(можно одну функцию с дополнительным
аргументом, задающим режим шифровки
или расшифровки). Внимание! Шифроваться
должны только буквы, все остальные
символы должны оставаться без изменений.
Шифр Цезаря означает циклический
сдвиг каждого символа в строке на число,
равное коду.
Рисунок 13 Исходный код для шифрования
Рисунок 14 Исходный код для расшифровки
Рисунок 15 Результат
5 задание
Рисунок 16 Исходный код
Рисунок 17 Результат
6 задание
-
Операция
1-й аргумент
2-й аргумент
Результат
вычитание
8-ричная
двоичная
римская
Рисунок 18 Исходный код
Рисунок 19 Результат
7 задание
По введенной дате в формате «dd.mm» выводит сообщение о празднике (определить самостоятельно 5-10 праздников.). Выводит соответствующие сообщения об ошибках в данных.
Рисунок 14 Исходный код
Рисунок 15 Результат
Вывод
Выполнила задания лабораторной, соответствующие моему варианту.
Уфа – 2024