Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Funktsionalnoe_i_logicheskoe_programmirovanie.doc
Скачиваний:
32
Добавлен:
19.01.2023
Размер:
1.75 Mб
Скачать

Задание на лабораторную работу №1.

Запустите интерпретатор Hugs (файл winhugs.exe).

В режиме работы с интерпретатором

1. Вычислите числовое выражение.

2. Вычислите логическое выражение

3. Получите списки с помощью генератора списков

а) арифметическую прогрессию с первым элементом и разностью , с элементами, не превышающими значения . (в варианте указаны три числа, соответствующие , и , соответственно);

б) первые 20 элементов списка, указанного в варианте;

в) получить список, описанный в варианте, и найти число его элементов .

Далее работаем и непосредственно в интерпретаторе (удобно при отладке программ) и создаем полноценные исходные тексты программ в редакторе. Создайте файл с расширением *.hs в блокноте или любом текстовом редакторе, также в интерпретаторе есть кнопка “Run Text Editor” для перехода в режим редактирования. ВНИМАНИЕ! При использовании этой кнопки загрузится модуль Prelude с основными встроенными функциями Haskell, ни в коем случае не изменяйте его, а создайте новый файл. Убедитесь, что у вашего файла расширение именно *.hs. Запишите в нем:

4. Функцию myexpr(определив самостоятельно тип и необходимое число аргументов), позволяющую вычислить выражение из задания 1. Убедитесь в равенстве ответов. Продемонстрируйте работу функции при каких-нибудь 3 наборах аргументов, отличных от начальных (в задании 1).

После создания файла сохраните его и вернитесь в интерпретатор. Загрузить файл можно а) с помощью кнопки «Открыть файл» б) набрав в интерпретаторе команду :l <имя файла>. После успешного (нет сообщений об ошибках) открытия файла набирайте в интерпретаторе имя функции и необходимые параметры (см. пример выполнения лабораторной работы ниже).

Работа со списочными и кортежными функциями.

5. а),б) Создайте функцию (функции) для обработки списков и кортежей (задание в варианте), используя встроенные функции из таблицы 1.3.

Результаты работы сохраните в виде скринов экрана и вставьте в отчет, как показано в примере выполнения работы.

Вариант 1.

1.

2. «Неверно, что если число, в четыре раза меньшее числа предшествующему числу 54 больше квадрата 7, то сумма списка первых трех простых натуральных чисел четна»

3. а) 5, 3, 90;

б) пятиугольные числа;

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

5. а) По заданным двум спискам функция возвращает список, содержащий в обратном порядке элементы списка, имеющего меньшую длину.

б) Дан кортеж двух числовых списков. Получить кортеж, содержащий два числа – минимальное из первого списка и максимальное из второго.

Вариант 2.

1.

2. Верно каждое из трех утверждений: 1) разность квадратов 18 и 24 не превышает их наименьшего общего кратного 2) первый элемент кортежа (5,4) нечетное число 3)

произведение элементов списка [2,5,4] больше удесятеренного последнего элемента

3. а) 2,7,120;

б) числа Сабита;

в) Имеется 5 монет – в 1,3,5,10 и 15 копеек. Найти все комбинации из двух(различных) монет и их число.

5. а) Возвращает максимальный элемент из 4 чисел – двух последних и двух первых элементов заданного числового списка.

б) По заданному кортежу двух чисел получает список, в котором первое число повторяется число раз, равное второму элементу кортежа.