Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет_Лаба2_ФП_Ихсанова

.doc
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
1.89 Mб
Скачать

Уфимский Университет Науки и Технологий

ОТЧЕТ по лабораторной работе №2

по дисциплине:

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

на тему:

«Создание простейших рекурсивных программ. Функции работы со строками и множествами. Сообщения об ошибках и преобразования типов.»

Выполнил: бакалавр гр. ПРО-432

Ихсанова Э. А.

Проверил: Усманова А. Р.

Содержание

Содержание 2

2 задание 4

3 задание 5

4 задание 6

5 задание 7

6 задание 7

7 задание 9

Вывод 9

1 Цель работы (Вариант 9)

  1. Определите функции для вычисления чисел Фибоначчи по номеру и для вычисления факториала. С помощью них определите собственную функцию, записанную в условной математической нотации. (fib(n) - означает n-е число Фибоначчи).

F(n,m)=(min{n,m})!-fib( )

  1. Определите рекурсивные функции (задание в варианте) для решения задачи, постарайтесь по возможности не использовать встроенные списочные функции.

а) Найти произведение элементов списка, больших заданного числа;

б) найти номер последнего вхождения в список нечетного числа.

  1. В задании описаны правила составления некоторого пароля. Написать функцию, проверяющую удовлетворяет ли заданная строка данным правилам, используя различные функции из модуля Char.

а) должен содержать четное количество цифр; б) код второго символа не должен превышать кода первого; в) содержит хотя бы одну строчную букву.

  1. Дано универсальное множество U= {1, 2...10} и некоторые его подмножества A,B,C. Найти множество D, заданное в варианте. Реализовать множества списками и использовать функции из модуля List.

  1. Написать функцию двух аргументов строкового типа, для выполнения арифметической операции. Вид операции, представление аргументов (система счисления) и результат в варианте задан в следующем виде:

При выполнении непосредственно арифметической операции разрешается использовать любую систему счисления (в т. ч. десятичную).

Операция

1-й аргумент

2-й аргумент

Результат

вычитание

8-ричная

2-ичная

римская

  1. Используя функции 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