
- •1.1 Знакомство с интерпретатором Hugs.
- •1.2 Выполнение математических операций в интерпретаторе.
- •1.3. Простейшие генераторы списков.
- •1.4 Логические функции, функции сравнения, функции работы с перечислимыми типами данных.
- •1.5 Простейшие списочные и кортежные функции.
- •Задание на лабораторную работу №1.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Пример выполнения лабораторной работы 1.
- •Лабораторная работа 2. Создание простейших рекурсивных программ. Функции работы со строками и множествами. Сообщения об ошибках и преобразования типов.
- •2.1 Создание простейших рекурсивных программ.
- •2.2 Функции работы со строками и множествами.
- •2.3 Сообщения об ошибках и преобразования типов
- •Задание на лабораторную работу 2.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Пример выполнения работы
- •Лабораторная работа 3. Функции высших порядков.
- •Задание на лабораторную работу 3.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Лабораторная работа 4. Текстовые файлы. Факторизация, простые числа, разные задачи.
- •4. 1 Работа с текстовыми файлами в Haskell
- •Задание на лабораторную работу 4.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Лабораторная работа 5. Управление выводом в Прологе. Простейшие рекурсивные программы.
- •5.1 Факты и правила. База знаний. Запросы.
- •5.2 Управление выводом.
- •5.3 Рекурсия
- •Задание на лабораторную работу 5.
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №6. Работа со списками в Прологе.
- •6.1 Списки в Прологе.
- •6.2 Алгоритмы обработки списков
- •6.3 Алгоритмы сортировки
- •Лабораторная работа № 7. Решение логических задач на Прологе.
- •Пример выполнения работы.
- •Лабораторная работа № 8.
Задание на лабораторную работу №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 чисел – двух последних и двух первых элементов заданного числового списка.
б) По заданному кортежу двух чисел получает список, в котором первое число повторяется число раз, равное второму элементу кортежа.