- •3 Лабораторная работа №2 (программирование разветвлённых алгоритмов) 12
- •4 Лабораторная работа №3 (программирование простых циклических алгоритмов) 16
- •7 Решение индивидуального задания 28
- •Постановка задачи
- •Лабораторная работа №1 (программирование линейных алгоритмов)
- •Реализация на языке lisp
- •Реализация на языке Prolog
- •Лабораторная работа №2 (программирование разветвлённых алгоритмов)
- •Реализация на языке lisp
- •Реализация на языке Prolog
- •Лабораторная работа №3 (программирование простых циклических алгоритмов)
- •Реализация на языке lisp
- •Реализация на языке Prolog
- •Лабораторная работа №4 (программирование с использованием одномерных массивов)
- •Реализация на языке lisp
- •Реализация на языке Prolog
- •Лабораторная работа №5 (программирование с использованием многомерных массивов)
- •Реализация на языке lisp
- •Реализация на языке Prolog
- •Решение индивидуального задания
- •Реализация на языке lisp
- •Функция podspvsp
- •Функция evropa
- •Функция opa
- •7.1.5 Функция v1spisok
- •7.1.6 Функция get1
- •7.1.7 Функция get22
- •7.1.8 Функция getpolug
- •7.1.9 Функция 1polniz
- •7.1.10 Функция 2polniz
- •7.1.11 Функция 2polverh
- •7.1.12 Функция 1polverh
- •7.1.13 Функция getdiag
- •7.1.14 Функция getdown
- •7.1.15 Функция getup
- •Функция 1hlpod
- •Функция 2hlpod
- •7.1.18 Функция revpod
- •7.1.19 Функция deletefirst
- •7.1.20 Функция get1half
- •7.1.21 Функция get2half
- •7.1.22 Функция neto
- •7.1.23 Функция dl
- •7.1.24 Функция revers
- •7.1.25 Функция gl
- •7.1.26 Полный текст программы
- •Реализация на языке Prolog
- •Функция ygolki
- •Функция app
- •Функция main
- •7.2.4 Функция opp
- •7.2.5 Функция verhyg
- •7.2.6 Функция nizyg
- •7.2.7 Функция diag
- •Функция fpolpodsp
- •Функция npolpodsp
- •7.2.10 Функция reveverspodsp
- •7.2.11 Функция delall
- •7.2.12 Функция fpol
- •7.2.13 Функция npoll
- •7.2.14 Функция npol
- •7.2.15 Функция dl
- •7.2.16 Функция revers
- •7.2.17 Функция getlalst
- •7.2.18 Полный текст программы
7.1.18 Функция revpod
7.1.18.1 Спецификация
Функция должна разворачивать реверсивно элементы в подсписках.
-
Структура входных данных
Структурой входных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.51
((3 4) (2 1)) |
Рисунок 7.51
-
Структура выходных данных
Структурой выходных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.52.
((1 7 9)(3 4)(1))
|
Рисунок 7.52
-
Функциональные тесты
Функциональные тесты для функции 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)) |
-
Словесное описание результата применения функции
Функция должна разворачивать элементы в подсписках.
-
Текст программы
Текст программы представлен на рисунке 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 Спецификация
Функция должна удалять последний элемент во всех подсписках.
-
Структура входных данных
Структурой входных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.54
((3 4) (2 1)) |
Рисунок 7.54
-
Структура выходных данных
Структурой выходных данных в данной функции является список списков чисел. Примеры записи на языке LISP приведены на рисунке 7.55
((1 7 9)(3 4)(1))
|
Рисунок 7.55
-
Функциональные тесты
Функциональные тесты для функции deletefirst приведены в таблице 7.19
Таблица 7.19
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
(deletefirst‘()) |
nil |
матрица |
(deletefirst ‘((7 1 5) (4 6 2) (9 3 8))) |
((7 1)( 4 6)(9 3)) |
-
Словесное описание результата применения функции
Функция должна последний элемент в подсписках.
-
Текст программы
Текст программы представлен на рисунке 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 Спецификация
Функция должна возвращать первую половину списка, причем большую, если количество элементов нечетное.
-
Структура входных данных
Структурой входных данных в данной функции является список чисел или списков чисел. Примеры записи на языке LISP приведены на рисунке 7.57
((3 4) (2 1)) (1 2 3 4 5) |
Рисунок 7.57
-
Структура выходных данных
Структурой выходных данных в данной функции является список списков чисел или просто список чисел. Примеры записи на языке LISP приведены на рисунке 7.58.
((1 7 9)(3 4)(1)) (1 2 3 4 5) |
Рисунок 7.58
-
Функциональные тесты
Функциональные тесты для функции 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) |
-
Словесное описание результата применения функции
Функция должна возвращать первую большую половину списка.
-
Текст программы
Текст программы представлен на рисунке 7.59.
(defun get1half(lst) (cond ((null lst)nil) (t(cons(car lst) (get1half(cdr(dl lst))))))) |
Рисунок 7.59