
2.5 Практическая работа №2
2.5.1 Постановка задачи
Тема: Реализация фильтрации радиограммы на языке ЛИСП.
Цель работы: Научиться создавать функцию предикат для проверки условия фильтрации данных, рекурсивно обрабатывать структуры списка.
Задание.
1. Реализовать функцию предикат проверки элемента списка и части списка согласно заданного по варианту предиката ошибки из таблиц 2.1 – 2.5 (который задает правило, что считать ошибочной структурой в радиограмме (мусором), а что – полезными данными). В качестве исходного списка брать индивидуальную радиограмму по варианту (см. табл. 2.6).
2. Реализовать фильтрацию данных (радиограммы) рекурсивным способом, используя функции из пункта 1.
2.5.2 Примеры решений фильтрации радиограммы
Рассмотрим функцию фильтрации радиограммы.
(defun musor (x) (cond ((null x) nil) ((listp (car x)) (cons (musor (car x)) (musor (cdr x)))) ((> (car x) 180) (musor (cdr x))) (t (cons (car x) (musor (cdr x)))) )) |
Рисунок 2.3 – Листинг функции Musor
Функция Musor (рисунок 2.3) находит «мусор» - числа большие 180 в списке и удаляет его.
> (musor '(1 2 (666 5) 876 (67 456 2 60)))
(1 2(5)(67 2 60))
2.6 Практическая работа №3
2.6.1 Постановка задачи
Тема: Реализация расшифровки сообщения на языке ЛИСП.
Цель работы: Научиться создавать функцию для проверки условия фильтрации данных, рекурсивно обрабатывать структуры списка.
Задание.
1. Реализовать на языке Lisp алгоритм расшифровки сообщения в среде Allegro CL Lite 3.0.1 (результат представить в виде последовательного описания всех функций, используемых в программе).
2. Применить функцию расшифровки к отфильтрованной в практической работе №2 радиограмме. Привести расшифрованное сообщение.