- •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.2.7 Функция diag
7.2.7.1 Спецификация
Функция должна получать элементы на главной диагонали матрицы.
-
Структура входных данных
Структурой входных данных в данной функции является список списков чисел(квадратная матрица). Примеры записи на языке prolog приведены на рисунке 7.95.
[[3 ,4],[2 ,1]] |
Рисунок 7.95
-
Структура выходных данных
Структурой выходных данных в данной функции является список чисел. Примеры записи на языке prolog приведены на рисунке 7.96.
[1, 7, 9]
|
Рисунок 7.96
-
Функциональные тесты
Функциональные тесты для функции diag приведены в таблице 7.32.
Таблица 7.32
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
diag([],Rez) |
[] |
матрица |
diag([[7, 1, 5],[4, 6, 2], [9 ,3, 8]] |
[7, 6, 8] |
-
Словесное описание результата применения функции
Функция должна получать главную диагональ матрицы.
-
Текст программы
Текст программы представлен на рисунке 7.97.
diag([[H|T1]|T],[H|Rez]):-T1=[_|_], delallfirst(T,ZT), diag(ZT,Rez). diag([[]|T],[]). diag([[H|[]]|T],[H]). diag([],[]). |
Рисунок 7.97
-
Функция fpolpodsp
-
Спецификация
Функция должна извлекать левую часть матрицы чисел
7.2.8.2 Структура входных данных
Структурой входных данных в данной функции является список (списков чисел). Примеры записи на языке prolog приведены на рисунке 7.98.
[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]] [[1, 2, 3],[4, 5, 6],[7, 8,9]] |
Рисунок 7.98
7.2.8.3 Структура выходных данных
Структурой выходных данных в данной функции является список (списков чисел). Примеры записи на языке prolog приведены на рисунке 7.99.
[[1, 2],[5, 6],[9, 10],[13,14]] [[1, 2],[4, 5],[7, 8]] |
Рисунок 7.99
-
Функциональные тесты
Функциональные тесты для функции fpolpodsp приведены в таблице 7.33
Таблица 7.33
Проверяемая ситуация |
Вызов функции со входным значением |
Предполагаемый результат |
Пустой список |
fpolpodsp ([],Rez) |
[] |
Списки списков с чётным количеством элементов |
fpolpodsp ([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11,12],[13, 14, 15, 16]],Rez)
|
[[1, 2],[5, 6],[9 ,10],[13 ,14]] |
Списки списков с нечётным количеством элементов |
fpolpodsp([[1, 2, 3],[4, 5, 6],[7, 8, 9]],Rez) |
[[1, 2],[4, 5],[7, 8]] |
-
Словесное описание результата применения функции
Из матрицы чисел формируется новая матрица из тех чисел, которые расположены слева от горизонтальной середины матрицы.
-
Текст программы
Текст программы представлен на рисунке 7.100.
fpolpodsp([H|T],[]):-H=[]. fpolpodsp([H|T],[R|Rez]):-H=[_|_], fpol(H,R), fpolpodsp(T,Rez).
fpolpodsp([],[]). |
Рисунок 7.100