Курсовая работа
по дисциплине ВТиП
Разработка программного модуля
Введение
Целью данной курсовой работы является разработка программного модуля, с помощью которого можно задать размерность квадратной матрицы, заполнить матрицу случайными целыми числами от 0 до 6 и вычислить:
- сумму элементов, находящихся под главной диагональю,
- сумму элементов, составляющих главную диагональ.
Для разработки программы использован табличный процессор Excel и язык программирования Visual Basic for Application.
В первом разделе, который называется «Постановка задачи», приведена математическая модель задачи, описаны входные и выходные данные, описана обработка ошибок.
Во втором разделе, «Проектирование программного модуля», изображена структурная диаграмма программного модуля, разработана схема программного модуля и пользовательский интерфейс.
В разделе «Реализация программного модуля» описан код программы, произведено описание используемых операторов и функций.
Тестирование программного модуля приведено в четвертом разделе.
Кроме того, дано заключение и приведён список использованных источников.
Постановка задачи
Математическая модель задачи
Определение квадратной матрицы: квадратной матрицей n-го порядка называется матрица, состоящая из m строк и m столбцов. Главной диагональю квадратной матрицы называется диагональ, составленная из элементов a11 a22… amm .
Способ нахождения суммы элементов квадратной матрицы, лежащих под главной диагональю:
Необходимый результат получается при суммировании элементов в следующем порядке: а21 + а31 + а32 +…+ аi1 + ai2 + ai3 + ai(j-1) – суммируются элементы, начиная со второй строки, и, при увеличении строки на 1, число столбцов, содержащих нужные элементы, также увеличивается на 1. В кратком виде этот цикл выглядит так: i=f…m, где начальное f=2; j=1…(m-b), где начальное b=m-1. При каждой последующей итерации значение f увеличивается на 1, а значение b на 1 уменьшается.
Сумму элементов диагонали матрицы можно получить при суммировании элементов, лежащих на пересечении одинаковых строки и столбца, т.е. если i=j.
Входные данные
В данном курсовом проекте к входным данным относится размерность квадратной матрицы (значение m).
Требования к входным данным:
- значение m должно вводиться в числовой форме;
- значение m должно быть целым, положительным числом больше нуля.
Выходные данные
К выходным данным относятся:
- вывод заполненной матрицы на форму;
- вывод заполненной матрицы на лист Excel;
- сумма элементов, находящихся под главной диагональю;
- сумма элементов, составляющих главную диагональ.
Требования к выходным данным:
- выходные данные выводятся в числовом виде.
Обработка ошибок
При выполнении программного модуля произведена обработка следующих ошибок:
- в поле ввода размерности матрицы вводится нечисловое значение. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 1:
Рисунок 1 - Сообщение об ошибке, в случае нечислового ввода размерности матрицы
- в поле ввода вводится дробное числовое значение. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 2:
Рисунок 2 - Сообщение об ошибке, в случае ввода дробного значения размерности матрицы
- в поле ввода вводится отрицательное число, либо число равное нулю. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 3:
Рисунок 3 - Сообщение об ошибке, в случае ввода отрицательного, либо нулевого значения размерности матрицы
После уведомления пользователя об ошибке поле ввода очищается, и курсор возвращается в это поле.
Код программы
Dim summa1 As Double
Dim summa2 As Double
Dim a() As Double
Dim m As Variant
‘задаём начальные параметры при инициализации формы:
Private Sub UserForm_Initialize()
Application.Visible = False
UserForm1.Caption = "Курсовой проект"
CommandButton1.Default = True
TextBox1.SetFocus
End Sub
‘процедура заполнения матрицы:
Private Sub CommandButton1_Click()
m = TextBox1.Text
If IsNumeric(TextBox1.Text) = False Then
MsgBox "Размерность матрицы должна задаваться числом", 16, "Ошибка ввода"
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
If m <= 0 Then
MsgBox "Размерность матрицы задаётся положительным числом отличным от нуля ", 16,
"Ошибка ввода"
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
m = CDbl(m)
If m <> Int(m) Then
MsgBox " Размерность матрицы должна задаваться целым числом ", 16, " Ошибка ввода "
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
ReDim a(1 To m, 1 To m)
For i = 1 To m
For j = 1 To m
a(i, j) = Int((7 * Rnd) + 0)
Next j
Next i
With ListBox1
ColumnCount = m
List = a
End With
End Sub
'процедура очистки пользовательской формы:
Private Sub CommandButton2_Click()
OptionButton1.Value = False
OptionButton2.Value = False
TextBox1.Text = ""
TextBox2.Text = ""
ListBox1.Clear
TextBox1.SetFocus
End Sub
'процедура выхода из программы:
Private Sub CommandButton3_Click()
UserForm1.Hide
Application.Quit
End Sub
' вызов краткой информации о программе:
Private Sub CommandButton4_Click()
MsgBox "Программа для заполнения случайными числами" & Chr(13) & _
"от 0 до 6 квадратной матрицы, размерностью" & Chr(13) & _
"задаваемой пользователем, и вычисления суммы" & Chr(13) & _
"элементов матрицы, в зависимости от выбрано-" & Chr(13) & _
"го переключателя." & Chr(13) & _
" Разработчик: Логунов А.П..", 48, "О программе"
End Sub
'процедура вычисления суммы элементов, расположенных под главной диагональю:
Private Sub OptionButton1_Click()
summa1 = 0
f = 2
b = m - 1
For i = f To m
For j = 1 To m - b
summa1 = summa1 + a(i, j)
Next j
f = f + 1
b = b - 1
Next i
TextBox2.Text = summa1
End Sub
'процедура вычисления суммы элементов, составляющих главную диагональ:
Private Sub OptionButton2_Click()
summa2 = 0
For i = 1 To m
For j = 1 To m
If i = j Then
summa2 = summa2 + a(i, j)
End If
Next j
Next i
TextBox2.Text = summa2
End Sub
'процедура для работы с Excel:
Private Sub CommandButton5_Click()
Application.Visible = True
Cells.Select
Selection.ClearContents
Range("A1").Select
UserForm1.Hide
m = InputBox("Задайте размерность матрицы", "Окно ввода")
If IsNumeric(m) = False Then
MsgBox ""Размерность матрицы должна задаваться числом", 16, "Ошибка ввода"
Exit Sub
End If
If m <= 0 Then
MsgBox "Размерность матрицы задаётся положительным числом отличным от нуля ", 16,
"Ошибка ввода"
Exit Sub
End If
m = CDbl(m)
If m <> Int(m) Then
MsgBox " Размерность матрицы должна задаваться целым числом ", 16, " Ошибка ввода "
Exit Sub
End If
Cells(5, 1) = "Матрица размерностью n=" & m & ":"
ReDim a(1 To m, 1 To m)
For i = 1 To m
For j = 1 To m
a(i, j) = Int((7 * Rnd) + 0)
Cells(i + 5, j) = a(i, j)
Next j
Next i
summa1 = 0
f = 2
b = m - 1
For i = f To m
For j = 1 To m - b
summa1 = summa1 + a(i, j)
Next j
f = f + 1
b = b - 1
Next i
Cells(2, 1) = "Сумма элементов под главной диагональю =" & summa1
summa2 = 0
For i = 1 To m
For j = 1 To m
If i = j Then
summa2 = summa2 + a(i, j)
End If
Next j
Next i
Cells(3, 1) = " Сумма элементов составляющих главную диагональ =" & summa2
Select Case MsgBox("Вернуться к UserForm?", vbYesNo, "Окно возврата")
Case vbYes
Application.Visible = False
TextBox1.SetFocus
UserForm1.Show
Case vbNo
End Select
End Sub
Заключение
В данном курсовом проекте с помощью языка программирования Visual Basic for Application был разработан программный модуль, который позволяет: задавать квадратную матрицу и программно заполнять её случайными числами от 0 до 6; вычислять сумму элементов находящихся под главной диагональю; вычислять сумму элементов составляющих главную диагональ. Был предусмотрен режим работы с листом Excel.
В программе произведена обработка возможных ошибок, что облегчает пользователю работу с программой.
В ходе тестирования программа показала себя полностью работоспособной. Следовательно, поставленную задачу можно считать выполненной.
Курсовая работа
по дисциплине ВТиП
Разработка программного модуля
Введение
Целью данной курсовой работы является разработка программного модуля, с помощью которого можно задать размерность квадратной матрицы, заполнить матрицу случайными целыми числами от 0 до 6 и вычислить:
- сумму элементов, находящихся под главной диагональю,
- сумму элементов, составляющих главную диагональ.
Для разработки программы использован табличный процессор Excel и язык программирования Visual Basic for Application.
В первом разделе, который называется «Постановка задачи», приведена математическая модель задачи, описаны входные и выходные данные, описана обработка ошибок.
Во втором разделе, «Проектирование программного модуля», изображена структурная диаграмма программного модуля, разработана схема программного модуля и пользовательский интерфейс.
В разделе «Реализация программного модуля» описан код программы, произведено описание используемых операторов и функций.
Тестирование программного модуля приведено в четвертом разделе.
Кроме того, дано заключение и приведён список использованных источников.
Постановка задачи
Дата: 2019-07-24, просмотров: 176.