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

Оглавление

ВВЕДЕНИЕ.. 3

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

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

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

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

2. Код программы.. 7

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

Заключение. 15

Список использованной литературы.. 16

 


ВВЕДЕНИЕ

Целью данной контрольной работы является разработка программного модуля, с помощью которого можно задать размерность квадратной матрицы, заполнить матрицу случайными целыми числами от 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;

- сумма элементов, находящихся под главной диагональю;

- сумма элементов, составляющих главную диагональ.

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

- выходные данные выводятся в числовом виде.

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

 


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

Dim Имя_переменной As Тип_переменной - синтаксис описания типа переменной;

Private - указывает, что процедура Sub доступна для всех других процедур только того модуля, в котором она описана;

If Условие Then [Инструкция] [Else Инструкции_else] - оператор условного перехода. Если условие принимает значение True, то выполняется инструкция Then, если False, то выполняется инструкция_else. Ветвь Else является необязательной;

IsNumeric(переменная) - функция, проверяющая является ли переменная числовым значением;

MsgBox (сообщение, [кнопка], [заголовок])- выводит на экран диалоговое окно, содержащее сообщение;

CDbl() - функция преобразования считываемых данных в числовой формат типа Double, т.к. числа, вводимые в текстовую область формы, воспринимаются как текст, а не как число.

Int() - функция, которая возвращает целые числовые значения;

ReDim <имя массива>(<задаётся размерность массива>) - функция задания динамического массива;

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

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

Next Счетчик - повторяет выполнение группы инструкций, пока Счетчик изменяется от начального значения до конечного с указанным шагом. Если шаг не указан, то он полагается равным 1;

Rnd - функция, которая служит для генерации случайных чисел;

With Объект

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

End With - позволяет выполнить последовательность инструкций над Объектом не повторяя его имени;

ColumCount - устанавливает число столбцов в списке;

Clear - очистка;

SetFocus - возвращает курсор в указанное поле;

InputBox () - выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле;

Select Case Выражение

Case список выражений

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

Case Else

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

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

 


 

Значит, первое текстовое поле мы делаем пустым, второе текстовое поле мы делаем тоже пустым, а у третьего текстового поля мы ставим 0. Это всё мы можем сделать в окне свойств.

У первой кнопки мы делаем свойство Caption CE, у второй свойство Caption мы делаем Х, у третьей свойство Caption мы делаем /, у четвёртой свойство Caption мы делаем -, у пятой свойство Caption мы делаем +

Private Sub Command1_Click() (СЕ) Калькулятор

Text1.Text = ""

Text2.Text = ""

Text3.Text = "0"

End Sub

При нажатие на кнопку CE, 1 и 2 поле будут ""(пусты), а третье будет "0"(равно 0). То есть говоря попросту. Мы например умножили два числа и получили определённый результат и нам надо всё стереть при нажатие на эту кнопку всё сострётся.

Private Sub Command2_Click() (Х) Операция умножения

Text3.Text = Text1.Text * Text2.Text

End Sub

При нажатие на кнопку X, то что было вписано в 1 поле и то что было вписано во 2 поле - умножатся

Private Sub Command3_Click() (/) Операция деления

Text3.Text = Text1.Text / Text2.Text

End Sub

При нажатие на кнопку /, то что было записано в 1 поле и то что было записано во 2 поле - разделятся.

Private Sub Command4_Click() (-) Операция вычитания

Text3.Text = Text1.Text - Text2.Text

End Sub

При нажатие на кнопку -, то что было записано в 1 поле и то что было записано во второе поле - вычтутся

Private Sub Command5_Click() (+) Операция Сложения

Text3.Text = Val(Text1.Text) + Val(Text2.Text)

End Sub

При нажатие на кнопку +, то что было записано в 1 поле и то что было записано во второе поле - сложатся.

Внимание: свойство Val нужно для того чтобы компьютер преоброзовал символ из строки в число. Потому что если мы не напишем это свойство, то допустим мы хотим сложить 5+5, то у нас не 10 получится а 55.
Заключение

В данной контрольной работе с помощью языка программирования Visual Basic for Application был разработан программный модуль, который позволяет: задавать квадратную матрицу и программно заполнять её случайными числами от 0 до 6; вычислять сумму элементов находящихся под главной диагональю; вычислять сумму элементов составляющих главную диагональ. Был предусмотрен режим работы с листом Excel.

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

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

 


Список использованной литературы

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

 

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

 

3. MS OfficeXP: Разработка приложений / Под редакцией Ф.А. Новикова. СПб.: БХВ - Санкт-Петербург, 2003.

 

                                   


Дата добавления: 2018-02-18; просмотров: 263; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!