При попытке ввести переменные, не удовлетворяющих условию, программа даст возможность ввести размерность или строку матрицы повторно.
На рисунке 6.18 отображён некорректный ввод размерности матрицы.
Рисунок 6.18 - Сообщения об ошибках, при некорректном вводе данных
На рисунке 6.8 отображен некорректный ввод строк матрицы.
Рисунок 6.19- Сообщения об ошибках, при некорректном вводе строки
Исходя из вышеперечисленного, можно сделать вывод, что программа работает в исключительных ситуациях правильно и без ошибок,так как отвергает все неверные значения и даёт возможность пользователю повторить ввод данных.
Программа была протестирована в нормальных условиях, экстремальных условиях и исключительных ситуациях, следовательно, программа работает правильно.
Листинг программы приведён в приложении A, а результаты выполнения - в приложении Б.
7. Руководство пользователя
Минимальные системные требования:
- операционная система: Windows. Рекомендуемая ОС: WindowsXP и выше;
- процессор: 1 ГГц;
- ОЗУ: 64 МБ;
- свободное место на жестком диске: 10КБ;
- наличие IBM - совместимых клавиатуры и мыши.
Программное обеспечение предназначено для проверки треугольности квадратной матрицы. Для выполнения программы необходимо запустить файл main.py.
При запуске пользователю будет предложено ввести размерность матрицы и саму матрицу, это показано на рисунке 7.1.
Рисунок 7.1 - Ввод начальных значений.
После ввода последней строки матрицы и нажатия кнопки Enter, программа выведет на экран саму матрицу и её тип, это показано на рисунке 7.2.
Рисунок 7.2 -Вывод результатов работы программы на экран
Далее программа будет автоматически завершена.
Заключение
программа матрица листинг тестирование
Данная программа занимается проверкой типа квадратных матриц, размерность которых составляет не менее 1 и не более 10.
Листинг программы имеет понятные пошаговые комментарии, позволяющие увидеть алгоритм её работы. Имеется практически совершенный алгоритм контроля ошибок, который не позволит пользователю ввести значение, которое приведёт к остановке и завершению программы.
Также программа составлена с использованием основной парадигмы - объектно-ориентированного программирования, что открывает широкие возможности для её последующей модификации и расширения функционала. Крайне малый вес программы и очень низкие требования к ресурсам позволяют запускать её на любых компьютерах, а также любых операционных системах, на которых установлен интерпретатор Python.
Ввод и вывод значений имеет понятную для пользователя структуру, которая в сочетании с алгоритмом предотвращения ошибок создаёт полноценный продукт.
Исходя из вышеперечисленного, можно считать, что задача, поставленная в курсовом проекте, выполнена полностью.
Список использованных источников
1 Ален Б. Думай на Python. Питер, 2009.
2 Билл Л. Простой Python. Современный стиль программирования. Питер, 2016.
3 Лутц М. Изучаем Python. Символ-Плюс, 2011.
4 Рейтц К. Автостопом по Python. Питер, 2017.
5 Северенс Ч. Введение в программирование на Python. Питер, 2016.
6 Томас Х. Алгоритмы. Вводный курс. Питер, 2014.
7 Хейнеман Дж. Алгоритмы. Справочник. Питер, 2017.
8 Шоу Зед. Лёгкий способ выучить Python. Эксмо, 2017.
9 ArbuckleD. MasteringPython. Альфа-книга,2017.
10 BeazleyD. PythonCookbook. Эксмо, 2013.
11 ChitipothuA. Python Practice Book. Дрофа, 2014.
12 Payne J. Beginnig Python: Using Python 2.6 and Python 3.1. Эксмо, 2010.
13 Phillips D. Python Object-Oriented Programming, Эксмо, 2010.
14 https://www.python.org/doc/
15 https://www.sololearn.com/Course/Python/.
Приложение
Листинг программы
#Курсовой проект.
#
#По профессиональному модулю МДК 03.01: "Технология разработки программного обеспечения".
#Тема: "Разработка программы проверки треугольности квадратной матрицы".
#Разработал: Лосев Николай Дмитриевич ТМП-62.
#Версия 5.5, 04.22.2018.
#Язык разработки: Python
#
#Задание:
#Разработать программу проверки треугольности квадратной матрицы.
#Возможные типы матриц: треугольная верхняя, треугольная нижняя, диагональная, нулевая.
#######################################################################
#
#класс NewMatrix - основной класс программы, содержащий все функции.
#
######################################################################
#Используемые переменные:
#A - содержит матрицу;
#my_matrix - объект класса NewMatrix.
#
######################################################################
#Используемые функции:
#__init__() - инициализация класса NewMatrix;
#create_matrix() - создание и ввод матрицы;
#first_check() - проверка на корректность ввода размерность матрицы;
#second_chekc() - проверка на корректность ввода элементов матрицы;
#show_matrix() - вывод матрицы на экран;
#check() - проверка матрицы на принадлежность к одному из типов матриц.
#
#######################################################################
#Используемые переменные:
#matrix - матрица;
#row - строка матрицы;
#elem - элемент матрицы;
#n - размерность матрицы;
#maxx - значение максимального по модулю элемента матрицы;
#lowd - количество нулевых элементов нижних диагоналей;
#uppd - количество нулевых элементов верхних диагоналей;
#maind - количество нулевых элементов главной диагонали;
#alld - количество элементов нижних или верхний диагоналей;
#i - cчётчик строк матрицы;
#j - счётчик элементов строки матрицы.
#######################################################################
class NewMatrix:
#######################################################################
#
#__init__ - инициализация класса NewMatrix.
#
#######################################################################
#Локальный параметр:
#matrix - матрица.
#
#######################################################################
def __init__(self):
matrix = []
self.matrix = matrix
#######################################################################
#
#create_matrix - создание и ввод матрицы.
#
#######################################################################
#Формальные параметры:
#matrix - матрица;
#######################################################################
#Локальные параметры:
#row - строка матрицы;
#n - размерность матрицы;
#i - счётчикстрокматрицы.
#######################################################################
def create_matrix(self, matrix):
#######################################################################
#
#first_check() - проверка на корректность ввода размерность матрицы;
#
#######################################################################
#Локальный параметр:
#n - размерность матрицы.
#######################################################################
def first_check():
try:
n = int(input("Введитеразмерностьматрицы: "))
if (n < 1) or (n > 10):
print("Число значений не может быть равно ", n)
return False
return n
except ValueError:
print("Количество элементов не может содержать буквы или специальные символы")
return False
#######################################################################
#
#second_check - проверка на корректность ввода элементов матрицы.
#
#######################################################################
#Формальный параметр:
#n - размерность матрицы.
#######################################################################
#Локальные параметры:
#row - строка матрицы;
#elem - элементстрокиматрицы;
#
#######################################################################
def second_check(n):
try:
row = [float(elem) for elem in input().split()]
if len(row) != n:
print("Неверное количество элементов в строке")
return False
return row
except ValueError:
print("Ни один из элементов строки не может быть буквой или содержать специальные символы")
return False
n = False
while not n:
n = first_check()
print("Введите элементы в строку")
for i in range(n):
row = False
while not row:
row = second_check(n)
self.matrix.append(row)
return self.matrix
#######################################################################
#
#show_matrix - выводматрицынаэкран.
#
#######################################################################
#Формальный параметр:
#matrix - матрица.
#######################################################################
#Локальные параметры:
#maxx - максимальный элемент матрицы;
#row - строка матрицы;
#elem - элементстрокиматрица.
#######################################################################
def show_matrix(self, matrix):
maxx = 0
for row in self.matrix:
for elem in row:
if abs(elem) > maxx:
maxx = elem
for row in self.matrix:
print('|' + '|'.join([str(elem).rjust(len(str(maxx)) + 2) for elem in row]) + '|')
########################################################################
#
#check - проверка матрицы на принадлежность к одному из типов матриц.
#
########################################################################
#Формальный параметр:
#matrix - матрица.
########################################################################
#Локальные параметры:
#i - счётчик строк матрицы;
#j - счётчик элементов строки матрицы;
#lowd - количество нулевых элементов нижних диагоналей;
#uppd - количество нулевых элементов верхних диагоналей;
#maind - количество нулевых элементов главной диагонали;
#alld - количество элементов нижних или верхний диагоналей.
#
########################################################################
def check(self, matrix):
i = j = lowd = uppd = maind = alld = 0
for i in range(len(self.matrix)):
for j in range(i):
if self.matrix[i][j] == 0:
lowd += 1
if self.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:
uppd += 1
alld += 1
if self.matrix[i][i] == 0:
maind += 1
print("\nКоличество нулевых элементов НИЖЕ главной диагонали: ", lowd)
print("Количество нулевых элементов ВЫШЕ главной диагонали: ", uppd)
print("Количество нулевых элементов в ГЛАВНОЙ диагонали: ", maind, "\n")
if (lowd == alld) and (uppd == alld) and (maind == len(self.matrix)):
print("Нулеваяматрица")
elif (lowd == alld) and (uppd == alld):
print("Диагональная матрица")
elif (lowd == alld):
print("Треугольная ВЕРХНЯЯ матрица")
elif (uppd == alld):
print("Треугольная НИЖНЯЯ матрица")
else:
print("Матрица нетреугольная")
########################################################################
#Используемый класс:
#NewMatrix - основной класс программы, содержащий все функции.
#
########################################################################
#Используемые функции:
#create_matrix - создание и ввод матрицы;
#show_matrix - вывод матрицы на экран;
#check - проверка матрицы на принадлежность к одному из типов матриц.
#
########################################################################
#Используемые переменные:
#А - матрица А;
#my_matrix - объекткласса NewMatrix.
########################################################################
A = []
my_matrix = NewMatrix()
my_matrix.create_matrix(A)
my_matrix.show_matrix(A)
my_matrix.check(A)
Результаты выполнения программы
Ввод данных для треугольной верхней матрицы представлен на рисунке Б.1.
Рисунок Б.1 - Ввод данных для треугольной верхней матрицы
Результат выполнения программы для треугольной верхней матрицы представлен на рисунке Б.2.
Рисунок Б.2- Результат выполнения программы для треугольной верхней матицы
Ввод данных для треугольной нижней матрицы представлен на рисунке Б.3.
Рисунок Б.3- Ввод данных для треугольной нижней матрицы
Результат выполнения программы для треугольной нижней матрицы представлен на рисунке Б.4.
Рисунок Б.4- Результат выполнения программы для треугольной нижней матицы
Ввод данных для диагональной матрицы представлен на рисунке Б.5.
Рисунок Б.5- Ввод данных для диагональной матрицы
Результат выполнения программы для диагональной матрицы представлен на рисунке Б.6.
Рисунок Б.6- Результат выполнения программы для диагональной матицы
Ввод данных для нулевой матрицы представлен на рисунке Б.7.
Рисунок Б.7- Ввод данных для нулевой матрицы
Результат выполнения программы для нулевой матрицы представлен на рисунке Б.8.
Рисунок Б.8- Результат выполнения программы для нулевой матицы
Ввод данных для нетреугольной матрицы представлен на рисунке Б.9.
Рисунок Б.9- Ввод данных для нетреугольной матрицы
Результат выполнения программы для нетреугольной матрицы представлен на рисунке Б.10.
Рисунок Б.10- Результат выполнения программы для нетреугольной матицы