Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дополнение1 к мет ФП 2012.doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
151.55 Кб
Скачать

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 радиограмме. Привести расшифрованное сообщение.