- •Часть 1
- •Введение
- •1. Основы программирования на языке Лисп
- •1.1 Представление данных в Лиспе
- •1.2 Лямбда-исчисление и функциональное программирование
- •1.3 Пример простейшей программы на языке Лисп
- •2. Функции Лиспа
- •2.1 Функции отбора
- •2.2. Функции конструктора.
- •2.3 Функции компаратора.
- •2.4 Функции распознавателя.
- •2.5 Функции назначения.
- •2.6 Логические функции
- •2.7 Числовые функции
- •Задания к лабораторным работам по языку программирования лисп
- •Часть 1
Задания к лабораторным работам по языку программирования лисп
Лабораторная работа №1
Целью работы является изучение представления данных в языке Лисп в виде атомов, списков, консов и символьных выражений. Изучаются базовые функции языка для работы со списками –CAR, CDR, CONS, предикаты ATOM и EQ и условное выражение COND. Разрабатываются программы для решения следующих задач:
1. Удалить первый и последний элемент списка.
2. В простом списке чисел заменить все отрицательные числа нулями.
3. Из простого списка чисел удалить все нулевые элементы
4. Продублировать все вхождения атома X в данный список.
5. Подсчитать число вхождений атома Х в простой список.
Лабораторная работа №2
Целью работы является изучение основных числовых функций языка. Разрабатываются программы для решения следующих задач:
1. Выделить первую цифру натурального N.
2. Получить все делители натурального N.
3. Подсчитать число и сумму цифр целого N.
4. Найти все общие делители натуральных M и N.
5. Найти наибольший общий делитель чисел из заданного списка.
Лабораторная работа №3
Целью работы является закрепление навыков работы со списками. Разрабатываются программы для решения следующих задач:
1. Даны два списка вида (a1,a2,…) и (b1,b2,…). Получить список (a1,b1,a2,b2…). Если исходные списки разной длины, то остаток более длинного отбросить.
2. Даны натуральные m, n и некоторый список. Удалить из списка элементы с номерами с m-го по n-й.
3. Из произвольного списка удалить все элементы, не являющиеся числом
4. В сложном списке заменить все атомы-числа: положительные на слово “положительное” отрицательные на слово “отрицательное”,нулевые на “ноль”.
5. В произвольном списке удалить элементы с номерами N и M (без учета скобок)
Лабораторная работа №4
Целью работы является закрепление навыков работы со сложными списками.
1. Удалить первый и последний элементы сложного списка (без учета скобок).
2. Произвольный список вида (а1,а2,...,ак) разбить на два подсписка (а1,а3,а5...) и (а2,а4,а6...).
3. Из произвольного списка удалить все отрицательные элементы.
4. Реверсировать произвольный список (включая подсписки).
5. Из произвольного списка удалить все латинские буквы, расположенные между буквами d и k.
Лабораторная работа №5
Целью работы является закрепление навыков работы с числовыми функциями. Разрабатываются программы для решения следующих задач:
1. Проверить, является ли список списком чисел, или нет
2. В списке чисел найти значение наименьшего из положительных чисел.
3. Проверить, является ли простой список чисел монотонной последовательностью.
4. Слить два упорядоченных по возрастанию списка чисел в один список.
5. Дан список (a1, a2,…, aN). Вычислить значение выражения- max(a2,a4,…)+min(a1,a3,…).
Лабораторная работа №6
Целью работы является закрепление навыков работы с числовыми функциями.
1. Дано A и натуральное N. Вычислить выражение A*(A-N)*(A-2*N)* (A-N**2).
2. Дано X и натуральное N. Вычислить sin(X), используя разложение в ряд Тейлора. В разложении учитывать N членов ряда.
3. Вычислить с заданной точностью EPS выражение 1-1/ 2+1/3-1/4+ …
4. Методом дихотомии (половинного деления) найти корень уравнения x+ln(x+0.5)-0.5=0 на отрезке [0, 2] с заданной точностью EPS.
5. Найти произведение всех ненулевых чисел из заданного сложного списка.
Лабораторная работа №7
Целью работы является закрепление навыков работы с числовыми функциями.
1. Вычислить среднее арифметическое отрицательных чисел произвольного списка.
2. Представить целое N в виде суммы квадратов двух целых чисел.
3. Представить целое N в виде суммы квадратов 3-х натуральных чисел.
4. Представить целое N в виде суммы квадратов 4-х натуральных чисел.
5. Определить предикат, который проверяет, является ли произвольный список монотонной последовательностью чисел, или нет (без учета скобок).
Лабораторная работа №8
Целью работы является закрепление навыков работы с функциями Лиспа.
1. Найти максимальную глубину вложенности произвольного списка.
2. Используя управляющую конструкцию DO, вычислить среднее арифметическое чисел 0.1+0.25+…+15.1.
3. Организовать диалог программы с пользователем.
4. Вычислить статистические характеристики вводимых пользователем чисел.
5. Разработать программу преобразования математических выражений в префиксную форму.
Литература
1. Хендерсон Н. Функциональное программирование. Применение и реализация. –М.: Мир, 1988
2. Хювенен Э., Сеппянен И. Мир Лиспа. В 2-х томах – М.: Мир, 1990
3. Приобретение знаний (п.р Осуги С., Саэки Ю.) – М.: Мир, 1990
4. Крицкий С.В. Программирование на языке Лисп. – Мн.,МРТИ, 1991.
5. Прихожий А.А. Функциональное и логическе программирование. Мн.,БГУИР, 1998.
6. Лавров С.С., Сигладзе Г.С. Автоматическая обработка данных. Язык Лисп и его реализация. – М.:Наука, 1978
Св. план 2002, поз.
Учебное издание
Авторы И.А.Мурашко, И.М.Марина
методическое пособие
по курсу "Функциональное и логическое программирование"
для студентов специальности Т10.02.00
"Программное обеспечение информационных технологий"