Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_LISP_Prolog.docx
Скачиваний:
14
Добавлен:
12.04.2015
Размер:
4.54 Mб
Скачать

7.1.18 Функция revpod

7.1.18.1 Спецификация

Функция должна разворачивать реверсивно элементы в подсписках.

        1. Структура входных данных

Структурой входных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.51

((3 4) (2 1))

Рисунок 7.51

        1. Структура выходных данных

Структурой выходных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.52.

((1 7 9)(3 4)(1))

Рисунок 7.52

        1. Функциональные тесты

Функциональные тесты для функции revpod приведены в таблице 7.18

Таблица 7.18

Проверяемая ситуация

Вызов функции со входным значением

Предполагаемый результат

Пустой список

(revpod‘())

Nil

матрица

(revpod‘((7 1 5) (4 6 2)) (9 3 8))

((5 1 7)(2 6 4)(8 3 9))

        1. Словесное описание результата применения функции

Функция должна разворачивать элементы в подсписках.

        1. Текст программы

Текст программы представлен на рисунке 7.53.

(defun revpod(lst)

(cond

((null lst)nil)

(t (cons (revers(car lst)) (revpod (cdr lst))))))

Рисунок 7.53

7.1.19 Функция deletefirst

7.1.19.1 Спецификация

Функция должна удалять последний элемент во всех подсписках.

        1. Структура входных данных

Структурой входных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.54

((3 4) (2 1))

Рисунок 7.54

        1. Структура выходных данных

Структурой выходных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.55

((1 7 9)(3 4)(1))

Рисунок 7.55

        1. Функциональные тесты

Функциональные тесты для функции deletefirst приведены в таблице 7.19

Таблица 7.19

Проверяемая ситуация

Вызов функции со входным значением

Предполагаемый результат

Пустой список

(deletefirst‘())

nil

матрица

(deletefirst ‘((7 1 5) (4 6 2) (9 3 8)))

((7 1)( 4 6)(9 3))

        1. Словесное описание результата применения функции

Функция должна последний элемент в подсписках.

        1. Текст программы

Текст программы представлен на рисунке 7.56.

(defun deletefirst(lst)

(cond

((NULL lst)nil)

((NULL (cdr (car lst)))nil)

(t (cons (cdr (car lst)) (deletefirst (cdr lst))))))

Рисунок 7.56

7.1.20 Функция get1half

7.1.20.1 Спецификация

Функция должна возвращать первую половину списка, причем большую, если количество элементов нечетное.

        1. Структура входных данных

Структурой входных данных в данной функции является список чисел или списков чисел. Примеры записи на языке LISP приведены на рисунке 7.57

((3 4) (2 1))

(1 2 3 4 5)

Рисунок 7.57

        1. Структура выходных данных

Структурой выходных данных в данной функции является список списков чисел или просто список чисел. Примеры записи на языке LISP приведены на рисунке 7.58.

((1 7 9)(3 4)(1))

(1 2 3 4 5)

Рисунок 7.58

        1. Функциональные тесты

Функциональные тесты для функции get1half приведены в таблице 7.20

Таблица 7.20.

Проверяемая ситуация

Вызов функции со входным значением

Предполагаемый результат

Пустой список

(get1halft‘())

nil

Список списков

(get1half‘((7 1 5) (4 6 2)) (9 3 8)))

((7 1 5)( 4 6 2))

Один список

(get1half ‘(1 2 3 4))

(1 2)

        1. Словесное описание результата применения функции

Функция должна возвращать первую большую половину списка.

        1. Текст программы

Текст программы представлен на рисунке 7.59.

(defun get1half(lst)

(cond

((null lst)nil)

(t(cons(car lst) (get1half(cdr(dl lst)))))))

Рисунок 7.59

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]