Мегаобучалка Главная | О нас | Обратная связь


Оформление курсового проекта



2018-07-06 237 Обсуждений (0)
Оформление курсового проекта 0.00 из 5.00 0 оценок




Министерство образования и науки российской федерациии

Федерального государственного бюджетного образовательного учреждения

высшего образования.

«Московский государственный технический университет имени Н.Э. Баумана»

(национальный исследовательский университет)

Московский техникум космического приборостроения

Специальность 09.02.03 Программирование в компьютерных системах

 

Пояснительная записка

к курсовому проекту на тему:

 

Разработка программы ОПРЕДЕЛЕНИЯ ТИПА МАТРИЦЫ

 

Листов 30

 

 

Студент _______________________ Н. Д. Лосев

(подпись)

 

 

Руководитель курсового проекта ________________________ Н. А. Сидорова

(подпись)

 

 

Москва 2018


Министерство образования и науки российской федерациии

Федерального государственного бюджетного образовательного учреждения

высшего образования.

«Московский государственный технический университет имени Н.Э. Баумана»

(национальный исследовательский университет)

Московский техникум космического приборостроения

 

Утверждаю

Председатель ПЦК специальности 09.02.03

Н.А.Жилкина

« ___»_______________________________2017 г.

 

 

ЗАДАНИЕ

 

На выполнение курсового проекта

 

По дисциплине МДК 03.01 Технология разработки программного обеспечения

Студент Н.Д. Лосев ТМП-62

(фамилия, инициалы, индекс группы)

РуководительН.А. Сидорова

(фамилия, инициалы)

 

 

Тема курсового проекта

Разработка программы определения типа матрицы.

2. Техническое задание

Разработать программуопределения типа матрицы.

Оформление курсового проекта

3.1 Пояснительная записка на ____ листах А4.

3.2 Перечень графического материала КП (плакаты, схемы, чертежи, и т.п.) – схемы алгоритма программы

График выполнения работы

Дата выдачи задания «___» _________________________2018 г.

Руководитель курсового проекта____________________________________________Н.А.Сидорова


 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ.. 4

1 Постановка задачи. 6

2 Структура и описание программы.. 7

3 Схемы алгоритма программы.. 10

3.1 Схема алгоритма основной программы.. 10

3.1.1 Схема алгоритма класса NewMatrix. 11

3.1.1.1 Схема алгоритма функции __init__. 12

3.1.1.2 Схема алгоритма функции create_matrix. 13

3.1.1.3 Схема алгоритма функции first_check. 14

3.1.1.4 Схема алгоритма функции second_check. 15

3.1.1.5 Схема алгоритма функции show_matrix. 16

3.1.1.6 Схема алгоритма функции check. 17

4 Отладка программы.. 19

5 Оптимизация программы.. 20

6 Тестирование программы.. 21

6.1 Тестирование в нормальных условиях. 22

6.2 Тестирование программы в экстремальных условиях. 23

6.3 Тестирование в исключительных ситуациях. 25

7 Заключение. 26

Список использованных источников. 27

ПРИЛОЖЕНИЕ А.. 28

ПРИЛОЖЕНИЕБ. 37

 


 

ВВЕДЕНИЕ

Матрица – математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля (например, целых, действительных или комплексных чисел), которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов задаёт размер матрицы. Хотя исторически рассматривались, например, треугольные матрицы, в настоящее время говорят исключительно о матрицах прямоугольной формы, так как они являются наиболее удобными и общими.

Матрицы широко применяются в математике для компактной записи систем линейных алгебраических или дифференциальных уравнений. В этом случае количество строк матрицы соответствует числу уравнений, а количество столбцов – количеству неизвестных. В результате решение систем линейных уравнений сводится к операциям над матрицами. В математике рассматривается множество различных типов и видов матриц. В данной программе мы рассмотрим несколько из них:

Треугольная матрица – в линейной алгебре квадратная матрица, у которой все элементы, стоящие выше или ниже главной диагонали равны нулю.

Пример верхней треугольной матрицы:

Верхняя треугольная матрица – квадратная матрица , у которой все элементы ниже главной диагонали равны нулю: , при .

Пример нижней треугольной матрицы:

Нижняя треугольная матрица – квадратная матрица , у которой все элементы выше главной диагонали равны нулю: , при .

Квадратная матрица , где для всяких , называется диагональной матрицей.

 

 

Диагональная матрица имеет вид:

Такая матрица является одновременно верхней треугольной и нижней треугольной матрицей.

Нулевая матрица – это матрица, размера , все элементы которой равны нулю. Она обозначается как Z или O.

Нулевая матрица имеет вид:

Нулевая матрица и только она имеет ранг 0, это означает, что только нулевая матрица обладает свойством давать нулевой столбец при умножении справа на любой вектор-столбец, и аналогично для умножения на вектор-строки слева.


 

1 Постановка задачи

Темой курсового проекта является разработка программы нахождения типа квадратной матрицы.

 

Используемый язык программирования – Python 3.6

Используемая ЭВМ –

Процессор: Intel® Pentium® CPU N3540 @ 2.16GHz.

Оперативная память: 4,00 ГБ.

Видеокарта: IntelHDgraphics 4000 / 2ГБ.

ОС: Windows 10.

2 Структура и описание программы

Структура программы приведена на рисунке 2.1.

 

 

Рисунок 2.1 – Структура программы


 

Функции, используемые в классе NewMatrix, приведены в таблице 2.1.

Таблица 2.1 – Используемые подпрограммы

Функция Назначение
__init__(self) Инициализация класса NewMatrix
create_matrix(self, matrix) Создание матрицы и её заполнение
first_check() Проверка ввода размерности матрицы
second_check(n) Проверка ввода элементов матрицы
show_matrix(self, matrix) Вывод матрицы на экран
check(self, matrix) Проверка типа матрицы

 

Переменные, используемые в классе NewMatrixприведены в таблице 2.2.

Таблица 2.2 –Используемые переменные

Переменная Назначение
matrix матрица
row строка матрицы
elem елемент строки матрицы
n размерность матрицы
maxx максимальный элемент матрицы
lowd количество нулевых элементов нижних диагоналей
uppd количество нулевых элементов верхних диагоналей
maind количество нулевых элементов главной диагонали
alld количество элементов нижних или верхний диагоналей
i, j счётчики

 


 

Классы, используемые в основной программе, приведены в таблице 2.3.

Таблица 2.3 – Используемые классы

Класс Назначение
NewMatrix Основной класс программы, содержащий в себе все функции.

 

Функции, используемые в основной программе, приведены в таблице 2.4.

Таблица 2.4 – Используемые функции

Функция Назначение
create_matrix(self, matrix) Создание матрицы и её заполнение.
show_matrix(self, matrix) Вывод матрицы на экран
check(self, matrix) Проверка типа матрицы

 

Переменные, используемые в основной программе приведены в таблице 2.5.

Таблица 2.5 – Используемые переменные

Переменная Назначение
A Матрица А

 

3 Схемы алгоритма программы

3.1 Схема алгоритма основной программы

 


 

3.1.1 Схема алгоритма класса NewMatrix


 

3.1 .1.1 Схема алгоритма функции __init__


3.1.1.2 Схема алгоритма функции create_matrix


3.1.1.3 Схема алгоритма функции first_check


 

3.1.1.4 Схема алгоритма функции second_check

 


3.1.1.5 Схема алгоритма функции show_matrix


3.1.1.6 Схема алгоритма функции check


 


 

4 Отладка программы

Отладка программы – процесс локализации и исправления ошибок в программном коде. Этот процесс занимает значительную часть разработки, нередко – большую, по сравнению с составлением программы. Практически любая программа перед началом отладки содержит ошибки.

Синтаксические ошибки – ошибки, фиксируемые компилятором (транслятором, интерпретатором) при выполнении синтаксического и, частично, семантического анализа программы. Заключаются в несовпадении исходного кода с синтаксисом выбранного языка программирования.

Ошибки компоновки – ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы. Заключаются в несовпадении каких–либо связей при подключении модулей и подпрограмм или обращения к ним.

Ошибки выполнения – происходят во время вычислений и чаще всего приводят к завершению работы программы. Самый распространённый пример такой ошибки – деление на ноль.

Ошибки логики – не позволяют программе выполнять предполагаемые действия. Код может компилироваться и выполняться без ошибок, но результат операции может оказаться неожиданным и неверным.

Во время отладки данной программы возможно обнаружить следующие ошибки:

1) cинтаксические:

2) ошибки выполнения.

Все ошибки были исправлены. Для того, чтобы убедиться в правильности работы программы, необходимо провести её тестирование.


 

5 Оптимизация программы

Программу можно оптимизировать по двум критериям: времени работы и памяти. Чаще всего программы оптимизируют по времени работы, считая быстродействие наиболее необходимым. Оптимизацией по памяти часто занимаются тогда, когда появляется её нехватка и становится понятно, что она не безгранична.

Данная программа была оптимизирована по памяти, поскольку было использовано минимально возможное количество переменных.

Было уменьшено время программы за счет объединения циклов.

Рассмотрим неоптимизированный фрагмент кода:

 

fori in range(len(self.matrix)):

for j in range(i):

ifself.matrix[i][j] == 0:

lowd += 1

ifself.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:

uppd += 1

alld += 1

 

fori in range(len(self.matrix)):

ifself.matrix[i][i] == 0:

maind += 1

 

В этом фрагменте выделенный условный оператор вынесен в отдельный цикл, фрагмент может быть оптимизирован за счет объединения циклов. Он будет выглядеть следующим образом:

 

fori in range(len(self.matrix)):

for j in range(i):

ifself.matrix[i][j] == 0:

lowd += 1

ifself.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:

uppd += 1

alld += 1

ifself.matrix[i][i] == 0:

maind += 1

6 Тестирование программы

Тестирование – набор процедур и действий, предназначенных для демонстрации правильности работы программы в заданных режимах и внешних условиях. Цель тестирования – выявить наличие ошибок и правильность работы программы.

Для того, чтобы протестировать составленную программу, есть три способа тестирования, которые и были применены к данной программе:

1) тестирование в нормальных условиях:

2) тестирование в экстремальных условиях;

3) тестированиев экстремальных ситуациях.


 

 

6.1 Тестирование в нормальных условиях

Во время тестирования программное обеспечение было проверено в нормальных условиях. Для проверки программы в нормальных условиях были введены входные данные, представленные на рисунке 6.1.

 

 

Рисунок 6.1 – Входные данные программы

На рисунке 6.2 можно увидеть результаты работы программы.

Рисунок 6.2 – Результат работы программы


 

6.2 Тестирование программы в экстремальных условиях

Экстремальные условия проводятся при максимальном или минимальном количестве итераций. Введённые данные с минимальным количеством итераций представлены на рисунке 6.3.

Рисунок 6.3 –Входные данные программы при минимальном значении итерации

На рисунке 6.4 отображены выходные данные при минимальных входных значениях.

Рисунок 6.4 – Результаты работы программы при введении минимальных значений

 

Введённые данные с максимальным количеством итерация представлены на рисунке 6.5.

Рисунок 6.5– Входные данные программы при максимальном значении итерации

 

Поскольку ввести матрицу размерностью не представляется возможным, была введена матрица . На рисунке 6.6 отображена верхняя треугольная матрица размерностью .

 

Рисунок 6.6 – Результат работы программы при введении матрицы

Процесс выполнения программы на предельных значениях не прерван, а выходные данные корректны. Из этого можно сделать вывод, что программа работает правильно и без ошибок.


 

6.3 Тестирование в исключительных ситуациях

Для проверки в исключительных ситуациях будут вводится значения переменных, не удовлетворяющих условию.

При попытке ввести переменные, не удовлетворяющих условию, программа даст возможность ввести размерность или строку матрицы повторно.

На рисунке 6.7 отображён некорректный ввод размерности матрицы.

 

Рисунок 6.7 – Сообщения об ошибках, при некорректном вводе данных

 

На рисунке 6.8 отображен некорректный ввод строк матрицы.

Рисунок 6.8 – Сообщения об ошибках, при некорректном вводе строки

 

Исходя из вышеперечисленного, можно сделать вывод, что программа работает в исключительных ситуациях правильно и без ошибок.

Программа была протестирована в нормальных условиях, экстремальных условиях и исключительных ситуациях, следовательно, программа работает правильно.

Листинг программы приведён в приложении A, а результаты выполнение – в приложении Б.


 

ЗАКЛЮЧЕНИЕ

Данная программа занимается нахождением типа квадратных матриц, размерность которых составляет не менее 1 и не более 1 000 000 000.

Листинг программы имеет понятные пошаговые комментарии, позволяющие увидеть алгоритм её работы. Имеется практически совершенный алгоритм контроля ошибок, который не позволит пользователю ввести значение, которое приведёт к остановке и вылету программы. Программа имеет корректный, понятный пользователю вывод и ввод, ограниченный только размером консоли.

Также программа составлена с использованием основной парадигмы – объектно–ориентированного программирования, что открывает широкие возможности для её последующей модификации и расширения функционала.


 

Список использованных источников

1 Марк Лутц Изучаем Python– Символ–Плюс 2011.

2 Билл Любанович Простой Python. Современный стиль программирования – Питер 2017.

3 Зед Шоу Лёгкий способ выучить Python– Эксмо, Бомбора 2017.

4 Томас Х. Кормен Алгоритмы. Вводный курс 2014.

5 Daniel Arbuckle’s Mastering Python – Daniel Arbuckle 2017.

6 Beginnig Python: Using Python 2.6 and Python 3.1 – Payne 2010.

7 Алгоритмы. Справочник – Дж. Хейнеман, Г. Поллис, С. Селков 2017.

8 Python Practice Book – AnandChitipothu 2014.

9 Python Object-Oriented Programming – D. Phillips 2010.

10 Введение в программирование на Python – Ч. Северенс 2016.

11 Python Cookbook – D. Beazley, B. Jones 2013.

12 Автостопом по Python – K. Рейтц, Т. Шлюссер 2017.

13 Простой Python. Современный стиль программирования – Билл Л.

14 Курс самостоятельного обучения Pythonhttps://www.sololearn.com/Course/Python/.

15 Официальная документация языка Pythonhttps://www.python.org/doc/.


 

ПРИЛОЖЕНИЕ А

(обязательное)

Листинг программы


 

#Курсовая работа

#

#Предмет: "Технология разработки программного обеспечения"

#Тема: "Определения типов матриц"

#Разработал: Лосев Николай Дмитриевич ТМП-62.

#Версия 3.5, 04.06.2018.

#Язык разработки: Python

#

#Задание:

#Дана квадратная матрица, определить её тип

#Возможные типы матриц:

#

#Нулевая:

# 0 | 0 | 0

# 0 | 0 | 0

# 0 | 0 | 0

#

#Диагональная:

# 1 | 0 | 0

# 0 | 1 | 0

# 0 | 0 | 1

#

#Треугольная верхняя:

# 1 | 1 | 1

# 0 | 1 | 1

# 0 | 0 | 1

#

#Треугольная нижняя:

# 1 | 0 | 0

# 1 | 1 | 0

# 1 | 1 | 1

#

########################################################################

 

 

#######################################################################

#

#класс 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,j - cчётчики.

#

#######################################################################

classNewMatrix:

 

 

#######################################################################

#

#__init__ - инициализация класса NewMatrix.

#

#######################################################################

#Используемые переменные:

#matrix - матрица.

#

#######################################################################

def __init__(self):

matrix = []

self.matrix = matrix

 

 

#######################################################################

#

#create_matrix - созданиеивводматрицы.

#

#######################################################################

#Используемые переменные:

#row - строка матрицы.

#

#######################################################################

defcreate_matrix(self, matrix):

 

 

#######################################################################

#

#first_check() - проверка на корректность ввода размерность матрицы;

#

#######################################################################

#Используемые переменные:

#n - размерность матрицы.

#

#######################################################################

deffirst_check():

try:

n = int(input("Введитеразмерностьматрицы: "))

if (n < 1) or (n > 1000000000):

print("Число значений не может быть равно ", n)

return False

return n

exceptValueError:

print("Количество элементов не может содержать буквы или специальные символы")

returnFalse

 

 

#######################################################################

#

#second_check - проверка на корректность ввода элементов матрицы.

#

#######################################################################

#Используемые переменные:

#row - строка матрицы;

#elem - элемент строки матрицы;

#n - размерность матрицы;

#i - счётчики.

#

#######################################################################

defsecond_check(n):

try:

row = [float(elem) for elem in input().split()]

iflen(row) < n:

print("Неверное количество элементов в строке")

return False

return row

exceptValueError:

print("Ни один из элементов строки не может быть буквой или содержать специальные символы")

return False

 

n = False

while not n:

n = first_check()

 

print("Введите элементы в строку")

fori in range(n):

row = False

while not row:

row = second_check(n)

self.matrix.append(row)

 

returnself.matrix

 

 

#######################################################################

#

#show_matrix - выводматрицынаэкран.

#

#######################################################################

#Используемые переменные:

#maxx - максимальные элемент матрицы;

#row - строка матрицы;

#elem - элемент строки матрица.

#

#######################################################################

defshow_matrix(self, matrix):

maxx = 0

 

for row in self.matrix:

forelem 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 - проверка матрицы на принадлежность к одному из типов матриц.

#

########################################################################

#Используемые переменные:

#i, j - счётчики;

#lowd - количество нулевых элементов нижних диагоналей;

#uppd - количество нулевых элементов верхних диагоналей;

#maind - количество нулевых элементов главной диагонали;

#alld - количество элементов нижних или верхний диагоналей.

#

########################################################################

 

 

def check(self, matrix):

 

i = j = lowd = uppd = maind = alld = 0

 

fori in range(len(self.matrix)):

for j in range(i):

ifself.matrix[i][j] == 0:

lowd += 1

ifself.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:

uppd += 1

alld += 1

 

ifself.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 – Результат работы программы



2018-07-06 237 Обсуждений (0)
Оформление курсового проекта 0.00 из 5.00 0 оценок









Обсуждение в статье: Оформление курсового проекта

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (237)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)