Рисунок 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с.