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

Изм



Содержание

	

	Введение

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

	1.1 Логическая модель 

		1.2 Входные данные

		1.3 Выходные данные

		1.4 Обработка ошибок

		2 Проектирование программного модуля

	2.1 Структурная диаграмма программного модуля

		2.2 Разработка программного модуля и ее описание

		2.3 Разработка пользовательского интерфейса

		3 Реализация программного модуля

		3.1 Код программы

		3.2 Описание используемых операторов и функций

		4 Тестирование программного модуля

	Заключение

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



	
Введение



В курсовом проекте разработана программа, позволяющая пользователю вводить квадратную матрицу, и заменять значения ненулевых элементов А(i,j) на А(i,j)*N и значения элементов главной диагонали на i+N. Ввод исходных данных должен осуществляться с использованием пользовательской формы.

	Данная программа позволяет быстро проводить следующие операции с матрицами: 

	­ замена значений ненулевых элементов A(i,j) на A(i,j)*N;

	­ замена значений элементов главной диагонали на i+N. 

 При разработке данного программного модуля используются программные модули, с использованием языка проектирования программ Visual Basic for Application .

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

		В разделе 2 приводится структурная диаграмма, которая отражает взаимосвязь модулей программного комплекса, изображается схема алгоритма, а также представлена пользовательская форма. 

		Раздел 3 включает в себя код программы и описание использованных операторов и функций. 

В разделе 4 проводится тестирование программного модуля.




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



1.1 Математическая модель задачи



Матрицей называется прямоугольная таблица чисел, содержащая m строк одинаковой длины (или n столбцов одинаковой длины). Матрица записывается в виде 



 

	

	или, сокращенно А=, где i=1,m (т.е. i=1,2,3,…,m) – номер строки, j=1,n (т.е. j=1,2,3,…,n) – номер столбца. Матрицу А называют матрицей размера m x n b и пишут. Числа , составляющие матрицу, называют ее элементами. Элементы, стоящие на диагонали, идущей из верхнего угла, образуют главную диагональ. Матрица, у которой число строк равно числу столбцов, называется квадратной 

	

	1.2 Входные данные



Входные данные: размерность матрицы.

Требования к входным данным:

Ввод исходных данных осуществляется в соответствующие ячейки поля пользовательской формы.

Предусматривается проверка на допустимость исходных данных и повторение ввода при ошибочных данных.

	

	
1.3 Выходные данные



Выводятся преобразованные матрицы.

Требования к выходным данным:

Все выходные данные выводятся на формы и лист Excel.

	Ко всем выходным данным запрещен доступ со стороны пользователя, осуществлённый с помощью функции Enabled.



1.4 Обработка ошибок

	

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

	

	

	Рисунок 1- Окно предупреждения пользователя


2 Проектирование программного модуля



2.1 Структурная диаграмма программного модуля





UserForm1На рисунке 2 приведена структурная диаграмма программного модуля. 









CommandButton2_Click( )

Raschet ( )

CommandButton3_Click( )

CommandButton4_Click( )

CommandButton5_Click( )

CommandButton1_Click( )

Рисунок 2 - Структурная диаграмма программного модуля



Здесь CommandButton1_Click() – процедура, срабатывающая при нажатии кнопки «Расчет», которая считывает исходные данные и выводит результат работы программы.

CommandButton2_Click() – процедура, срабатывающая при нажатии кнопки «Вывести результат на лист Excel», используется для вывода результата на лист Excel.

CommandButton3_Click() – процедура, срабатывающая при нажатии кнопки «Заполнить матрицу», используется для ввода исходной матрицы.

CommandButton4_Click() – процедура, срабатывающая при нажатии кнопки «Обнулить матрицу», используется для обнуления матрицы.

CommandButton5_Click() – процедура, срабатывающая при нажатии кнопки «Выход», используется для выхода из программы.



2.1 Разработка схемы программного модуля и ее описание



На рисунке 3 показана блок-схема программы



 Начало

Rejim 

да

нет

Ввод A(i,j)

Raschet = A_ij

Raschet = A_ij * N

A_ij <> 0

i = j

Raschet = i + N

 Raschet = A_ij

да

да

нет

нет

Вывод A(i,j)

Конец























	

	

	

	

	

	

	

	

	

	

	Рисунок 3 – Сема программного модуля

	
2.3 Разработка пользовательского интерфейса

	

	

		1На рисунке 4 разработан пользовательский интерфейс.

	

			

		32

		84

		6542

		43

		5

		26

		74

			Рисунок 4-Пользовательский интерфейс

			Поле для ввода размерности матрицы.

	Кнопка для заполнения матрицы

	Кнопка для обнуления матрицы.

	Кнопка расчета программы.

	Поле вывода правильного результата.

	Переключатели для выбора условия задачи.

	Кнопка вывода результата на лист Excel.

	Кнопка для выхода из программы. 

	

	
3 Реализация программного модуля



3.1 Код программы



3Public N_correct As Boolean

Private Sub CommandButton1_Click()

If Not N_correct Then

 MsgBox ("Неверно указан размер матрицы")

 TextBox1.SetFocus

 Exit Sub

End If

N = Val(TextBox1.Value)

For i = 1 To N

 For j = 1 To N

 A(i, j) = Raschet(A(i, j), OptionButton1.Value, i, j, N)

 Next j

Next i

ListBox1.List = A

End Sub

Private Sub CommandButton2_Click()

If Not N_correct Then

 MsgBox ("Неверно указан размер матрицы ")

 TextBox1.SetFocus

 Exit Sub

End If

МатрицаФорма.Hide

Cells.Clear

N = Val(TextBox1.Value)

For i = 1 To N

 For j = 1 To N

 Cells(i, j) = Raschet(A(i, j), OptionButton1.Value, i, j, N)

 Next j

Next i

МатриЛист.Show

Application.Visible = True

Rem Cells.Select

Rem Selection.ClearContents

End Sub

Private Sub CommandButton3_Click()

If Not N_correct Then

 MsgBox ("Неверно указан размер матрицы ")

 TextBox1.SetFocus

 Exit Sub

End If

N = Val(TextBox1.Value)

For i = 1 To N

 For j = 1 To N

 A(i, j) = 0

 Next j

Next i

ListBox1.List = A

End Sub

Private Sub CommandButton4_Click()

If Not N_correct Then

 MsgBox ("Неверно указан размер матрицы ")

 TextBox1.SetFocus

 Exit Sub

End If

N = Val(TextBox1.Value)

For i = 1 To N

 For j = 1 To N

 A(i, j) = Abs(i - j)

 Next j

Next i

ListBox1.List = A

End Sub

Private Sub CommandButton5_Click()

ThisWorkbook.Close

End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

N = Val(TextBox1.Value)

If Not IsNumeric(N) Or N < 1 Or N <> Int(N) Then

 MsgBox ("Ошибка. Необходимо ввести натуральное число")

 N_correct = False

Else

 ReDim A(1 To N, 1 To N)

 With МатрицаФорма.ListBox1

 .ColumnCount = N

 .List = A

 End With

 N_correct = True

End If

End Sub

Private Sub UserForm_Initialize()

Application.Visible = False

TextBox1.SetFocus

End Sub

Private Sub UserForm_Terminate()

Application.Visible = True

N_correct = False

End Sub.




3.2 Описание использованных операторов

	

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

	Оператор условного перехода If Then Else. Синтаксис:

	If Условие Then [Инструкции] [Else Инструкции else]

	Если условие принимает значение True, то выполняется инструкция (или инструкции) после Then, если False, то выполняется инструкция (или инструкции) после Else. Ветвь Else является необязательной. Допускается также использование формы синтаксиса в виде блока:

	If Условие Then 

	[Инструкции]

	[ElseIf Условие-n Then

	[Инструкции elseif] …

	[Else

	[Инструкции else]]

	End If

Оператор цикла For…Next позволяет повторять группу операторов заданное число раз. 

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры, а также для описания объектного типа переменных, синтаксис:

Dim Имя переменной Аs Тип переменной [ Имя переменной Аs Тип переменной ]

Типы переменных: Integer, Double.

Double-числовой тип двойной точности. Если переменная не была объявлена, то она получает тип Variant.

В курсовой работе матрицы задавались при помощи массивов. Массив-совокупность однотипных данных объединённых общим именем. Синтаксис:

Dim Имя массива (Индексы [Аs тип]) 

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

		как динамический, при объявлении массива не надо указывать размерность.

	Функция IsNumeric( x ) проверяет, является ли переменная числовым значением.

	Функция CDbl возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа 

	Цикл с предусловием While…Wend позволяет повторять группу операторов до тех пор пока условие будет принимать значение истина. 

	Функция Exit For предоставляет возможность досрочного выхода из цикла.

	>, <, =, >=, <=, <> - операторы сравнения.

	*, /, *, -, + — математические операторы 

	Функция Fix(x) округляет число до ближайшего меньшего целого

	Unload Me – осуществляет выход из процедуры.

	

	
4 Тестирование программного модуля

	

	Тестирование программы приведено на рисунках 5,6,7.





Рисунок 5 – Заполнение матрицы





	Рисунок 6 – Результат полученный программой при выполнении следующей операции: заменить значения ненулевых элементов A(i,j) на A(i,j)*N.

	


	Рисунок 7 – Результат полученный программой при выполнении замены элементов главной диагонали на i+N.



Как видим, если сравнить первоначальную матрицу (Рисунок 5) и полученные данные, приведенные на рисунках 6 и 7, можно сказать что программа работает верно .

	

	
Заключение



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

Таким образом, можно сделать вывод о том, что поставленная задача выполнена: 

- на языке программирования VBA создана программа, с помощью которой можно преобразовать матрицы.

- ввод исходных данных осуществляется с использованием окна диалога пользовательской формы.

	Программный модуль позволяет:

	- вводить значения в пользовательскую форму в ручном режиме; 

	- позволяет быстро определить верный ответ и проверить себя.

	- результат выводится как в окно пользовательской формы, так и на лист Excel. 

	

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

	

	1 Гарнаев А.Ю Самоучитель VВА. - СПБ.: БХВ- Санкт-Петербург, 1999.-512 с.: ил.

	2 Додж М., Стинсон К Д60 Эффективная работа с Мiсrosoft Excel.

	3 Браун С. Б87 Visual Basic 6: учебный курс- СПб: ЗАО Издательство “Питер”, 1999.-576 с.: ил.

	4 Мантуров О.В. Курс высшей математики, учеб. Для вузов.- М.: Высш. шк., 1991.- 448с.: ил.

	5 А.Д. Мышкин Лекции по высшей математике.- М. 1969 -640с.

	













Лист.

№ докум.

Подп.

Дата

Лит.

Лист Листов

 2 16

 



Разработка программного модуля







02



						

				 

Разраб.

Пров.

Н.контр.

Утв.



____ммММммиссааапрМмМПАНШгщнпщгнммарппррае

__

Изм

Лист

№ докум.

Подп.

Дата

Лист

 0601С.23.02.000 РР