Смекни!
smekni.com

Разработка программного модуля который находит сумму угловых элементов матрицы и сумму элементов (стр. 2 из 2)

Else

n = CInt(TextBoxInput.Value) 'если пользователь ввел дробное число, то округляем до целого

If n = 1 Then

MsgBox "Размерность не может быть равной еденице", vblnformation, "Ошибка задания матрицы"

End If

If n <= 0 Then

If n < 0 Then

MsgBox "Размерность не может быть отрицательной", vblnformation, "Ошибка задания матрицы"

TextBoxInput.Value = Abs(n)

End If

If n = 0 Then

MsgBox "Размерность не может быть равной нулю", vblnformation, "Ошибка задания матрицы"

End If

End If

For i = 1 To 100

For j = 1 To 100

Cells(i, j) = ""

Next j

Next i

ListBoxOutput.Clear

For i = 1 To n

For j = 1 To n

a(i, j) = Int((20 - 0 + 1) * Rnd + 0) 'генерируем случайное число от 1 до 20

Cells(i, j) = a(i, j)

If a(i, j) <= 9 Then

'если число представлено одной цифрой, то пробел между ним и след.числом больше

space = " "

Else

'в противном случае пробел меньше. Это делается, чтобы числа располагались одно под одним

space = " "

End If

strng(i) = strng(i) + CStr(a(i, j)) + space 'скливаем все значения в i строку

Next j

ListBoxOutput.AddItem (strng(i)) 'добавляем строку на поле вывода

Next i

End If

End Sub

Private Sub ButtonExit_Click() 'при нажатии на кнопку выхода, закрываем программу

Application.Quit

End Sub

Private Sub BtnExcel_Click()

UserForm1.Hide

Application.Visible = True

End Sub

Private Sub UserForm_Initialize()

Application.Visible = False

Dim a(1 To 100, 1 To 100)

Dim space As String

Dim strng(10) As String

End Sub

Function Check_Angular_Elements(a, i, j)

'проверяет, является ли элемент матрицы угловым, если да, то возвращает его

If (i = 1) And (j = 1) Then

Check_Angular_Elements = a

End If

If (i = 1) And (j = Int(TextBoxInput.Value)) Then

Check_Angular_Elements = a

End If

If (i = Int(TextBoxInput.Value)) And (j = 1) Then

Check_Angular_Elements = a

End If

If (i = Int(TextBoxInput.Value)) And (j = Int(TextBoxInput.Value)) Then

Check_Angular_Elements = a

End If

End Function

Function Check_Top_Elements(a, i, j) 'проверяет, находится ли элемент над гл. диагональю

If j > i Then

Check_Top_Elements = a

End If

End Function

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

Private

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

MsgBox

Выводит на экран диалоговое окно, содержащее сообщение, MsgBox устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.

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

If Then Else

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

If Условие Then

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

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

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

[Else]

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

End If.

Оператор For-Next.

Синтаксис:

For Счётчик = Начало То Конец [Step Шаг]

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

[Exit For]

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

Next [Счётчик]

Повторяет выполнение группы инструкций, пока Счётчик изменяется от начального до конечного значения с указанным шагом. Если Шаг не указан, то он полагается равным 1. Альтернативный способ выхода из цикла предоставляет инструкция Exit For.

Инструкция Dim

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

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

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

Int(x) – функция округления переменной Х.

IsNumeric (x) – проверка является ли переменная Х числом.

Если IsNumeric (x) = True, то переменная Х является числом.

Если IsNumeric (x) = False, то переменная Х не является числом.

Abs (x) – возвращает модуль числа.


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

Тестирование этого программного модуля заключается в проверке правильности ввода данных, которые ввел пользователь. Результатом ввода корректных данных является правильное выполнение программы: вывод матрицы, заданной пользователем и вычисление сумм элементов.

Сначала проверим программный модуль на отлавливание и обработку ошибок пользователя.

При вводе в поле параметра n не числового выражения выводится окно представленное на рисунке 5.

Рисунок 5 – Введено не числовое значение параметра m

Если пользователь ввел размерность матрицы, равную нулю, либо не ввел данные (по умолчанию в VBA пустое значение автоматически приравнивается нулю), то выводится окно, представленное на рисунке 6.

Рисунок 6 – Пользователь указал размерность матрицы, равную нулю

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


Рисунок 7 – Введено отрицательное значение параметра n

Если пользователь указал размерность матрицы равную единице, то, теоретически, это не является ошибкой, т.к. если исходить из определения, то любое действительное число – это матрица, размерностью 1*1. Но в условии данной задачи такая матрица не представляет интереса, поэтому рекомендуется поставить ограничение и на размерность равную единице. Выводимое окно представлено на рисунке 8.

Рисунок 8 – Введенное значение параметра n равно 1

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

Проверим правильность работы программного модуля заполнив матрицу, размерность 3*3 и 5*5.


Рисунок -9 – заполнение матрицы, размерностью 3*3

Рисунок -10 – заполнение матрицы, размерностью 5*5

Теперь проверим выполнение поставленных задач.

Рисунок 11 – корректное выполнение поставленных задача


Как видно из рисунков 9 ,10 ,11 программный модуль, разработанный в данном курсовом проекте, работает правильно и без сбоев.


Заключение

Согласно заданию был разработан программный модуль, осуществляющий заполнение матрицы А(n,n), которую задает пользователь, чтение заданной матрицы с листа Excel и подсчета суммы угловых элементов и элементов над верхней диагональю. При тестировании программ никаких отклонений не обнаружено: каждая функция корректно выполняет все операции. Таким образом, можно сделать вывод о том, что поставленная задача выполнена: на языке программирования Visual Basic for Application созданы программы, с помощью которых можно заполнить случайными числами квадратную матрицу размером n x n, найти сумму ее диагональных элементов и элементов над главной диагональю. В программе предусмотрена обработка ошибок, что обеспечивает бесперебойную работу программы.

Задание на курсовой проект выполнено полностью.


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

1. Выгодский М.Я., “Справочник по высшей математике”, Москва - 1982 г., 323 с.

2. Гутер Р.С., Овчинский Б.В. Элементы числового анализа и математической обработки результатов опыта - М.: “Наука”, 1970 г. - 432 с.

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

4. Ракитин В.И. “Практическое руководство по методам программного вычисления с приложением для ПК”. - М.: “Высшая школа”, 1998 г. - 383.