Содержание
Введение
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 Структурная диаграмма программного модуля
На рисунке 2 приведена структурная диаграмма программного модуля.
Рисунок 2 - Структурная диаграмма программного модуля
Здесь CommandButton1_Click() – процедура, срабатывающая при нажатии кнопки «Расчет», которая считывает исходные данные и выводит результат работы программы.
CommandButton2_Click() – процедура, срабатывающая при нажатии кнопки «Вывести результат на лист Excel», используется для вывода результата на лист Excel.
CommandButton3_Click() – процедура, срабатывающая при нажатии кнопки «Заполнить матрицу», используется для ввода исходной матрицы.
CommandButton4_Click() – процедура, срабатывающая при нажатии кнопки «Обнулить матрицу», используется для обнуления матрицы.
CommandButton5_Click() – процедура, срабатывающая при нажатии кнопки «Выход», используется для выхода из программы.
2.1 Разработка схемы программного модуля и ее описание
На рисунке 3 показана блок-схема программы
Рисунок 3 – Сема программного модуля
2.3 Разработка пользовательского интерфейса
На рисунке 4 разработан пользовательский интерфейс.
Рисунок 4-Пользовательский интерфейс
1. Поле для ввода размерности матрицы.
2. Кнопка для заполнения матрицы
3. Кнопка для обнуления матрицы.
4. Кнопка расчета программы.
5. Поле вывода правильного результата.
6. Переключатели для выбора условия задачи.
7. Кнопка вывода результата на лист Excel.
8. Кнопка для выхода из программы.
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с.
|