- •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.5 Функция v1spisok
7.1.5.1 Спецификация
Функция должна формировать из двух списков чисел единый список.
-
Структура входных данных
Структурой входных данных в данной функции является 2 списка. Примеры записи на языке LISP приведены на рисунке 7.15
(3 4) (2 1) |
Рисунок 7.15
-
Структура выходных данных
Структурой выходных данных в данной функции является список (чисел). Примеры записи на языке LISP приведены на рисунке 7.16
(3 4 2 1) (7 9 6 8 4 1 5 3 2) |
Рисунок 7.16
-
Функциональные тесты
Функциональные тесты для функции v1spisok приведены в таблице 7.5
Таблица 7.5
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
(v1spisok ‘()) |
nil |
Два списка
|
(v1spisok‘(1) ‘(2))
|
(1 2)
|
Один список пустой |
(v1spisok ‘() ‘(1 2 3)) |
(1 2 3) |
-
Словесное описание результата применения функции
Из двух списков в итоге формируется единый список чисел.
-
Текст программы
Текст программы представлен на рисунке 7.16
(defun v1spisok(lst1 lst2) (cond ((Null lst1)lst2) (T(cons(car lst1) (v1spisok(cdr lst1) lst2))))) |
Рисунок 7.16
7.1.6 Функция get1
7.1.6.1 Спецификация
Функция должна получать верхние уголки матрицы.
-
Структура входных данных
Структурой входных данных в данной функции является список. списков с равным количеством элементов в подсписках(квадратная матрица). Примеры записи на языке LISP приведены на рисунке 7.17
((3 4) (2 1)) |
Рисунок 7.17
-
Структура выходных данных
Структурой выходных данных в данной функции является список списков(чисел). Примеры записи на языке LISP приведены на рисунке 7.18
((1) (7 9))
|
Рисунок 7.18
-
Функциональные тесты
Функциональные тесты для функции get11 приведены в таблице 7.6
Таблица 7.6
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
(get11 ‘()) |
nil |
матрица |
(get11‘((7 1 5) (4 6 2)(9 3 8))) |
((1 )) |
-
Словесное описание результата применения функции
Функция должна получать верхнюю часть уголков матрицы до главной диагонали.
-
Текст программы
Текст программы представлен на рисунке 7.19
(defun get11(lst) (getpolug (2polverh lst) (revpod(1polverh lst)))) |
Рисунок 7.19
7.1.7 Функция get22
7.1.7.1 Спецификация
Функция должна получать нижние уголки матрицы.
-
Структура входных данных
Структурой входных данных в данной функции является список. списков с равным количеством элементов в подсписках (квадратная матрица). Примеры записи на языке LISP приведены на рисунке 7.20
((3 4) (2 1)) |
Рисунок 7.20
-
Структура выходных данных
Структурой выходных данных в данной функции является список списков(чисел). Примеры записи на языке LISP приведены на рисунке 7.21
((1) (7 9)) |
Рисунок 7.21
-
Функциональные тесты
Функциональные тесты для функции get22 приведены в таблице 7.7
Таблица 7.7
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
(get22 ‘()) |
nil |
матрица |
(get22‘((7 1 5) (4 6 2)(9 3 8))) |
((2 3 4 )(5 6 7)(8 9) |
-
Словесное описание результата применения функции
Функция должна получать нижнюю часть уголков матрицы включая уголок главной диагонали.
-
Текст программы
Текст программы представлен на рисунке 7.22
(defun get22(lst) (getpolug (2polniz lst) (revpod(1polniz lst)))) |
Рисунок 7.22