Реферат: Разработка программного модуля

Кафедра «Автоматизированные системыуправления»

Курсовая работа

по дисциплине ВТиП

Разработка программного модуля


Введение

Целью данной курсовойработы является разработка программного модуля, с помощью которого можно задатьразмерность квадратной матрицы, заполнить матрицу случайными целыми числами от0 до 6 и вычислить:

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

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

Для разработки программыиспользован табличный процессор Excel и язык программирования Visual Basic forApplication.

В первом разделе, которыйназывается «Постановка задачи», приведена математическая модель задачи, описанывходные и выходные данные, описана обработка ошибок.

Во втором разделе,«Проектирование программного модуля», изображена структурная диаграммапрограммного модуля, разработана схема программного модуля и пользовательскийинтерфейс.

В разделе «Реализацияпрограммного модуля» описан код программы, произведено описание используемыхоператоров и функций.

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

Кроме того, данозаключение и приведён список использованных источников.


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

 

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

Определение квадратнойматрицы: квадратной матрицей 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.

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

В данном курсовом проектек входным данным относится размерность квадратной матрицы (значение m).

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

— значение m должновводиться в числовой форме;

— значение m должно бытьцелым, положительным числом больше нуля.


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

К выходным даннымотносятся:

— вывод заполненнойматрицы на форму;

— вывод заполненнойматрицы на лист Excel;

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

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

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

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

1.4 Обработка ошибок

При выполнениипрограммного модуля произведена обработка следующих ошибок:

— в поле вводаразмерности матрицы вводится нечисловое значение. В этом случае появляется сообщениеоб ошибке, которое имеет вид, представленный на рисунке 1:

/>

Рисунок 1 — Сообщение обошибке, в случае нечислового ввода размерности матрицы

— в поле ввода вводитсядробное числовое значение. В этом случае появляется сообщение об ошибке,которое имеет вид, представленный на рисунке 2:


/> 

Рисунок 2 — Сообщение обошибке, в случае ввода дробного значения размерности матрицы

— в поле ввода вводитсяотрицательное число, либо число равное нулю. В этом случае появляется сообщениеоб ошибке, которое имеет вид, представленный на рисунке 3:

/>

Рисунок 3 — Сообщение обошибке, в случае ввода отрицательного, либо нулевого значения размерностиматрицы

После уведомленияпользователя об ошибке поле ввода очищается, и курсор возвращается в это поле.


2. Проектированиепрограммного модуля

 

2.1 Структурнаядиаграмма программного модуля

Программа имеетструктуру, показанную на рисунке 4:

/>


Рисунок 4 — Структурнаядиаграмма программного модуля

В данной диаграммеUserForm_Initialize() – процедура инициализации пользовательской формы. CommandButton1_Click()– процедура, срабатывающая при нажатии кнопки «Заполнить матрицу», котораяпроизводит проверку правильности ввода размерности матрицы, заполнение матрицыи вывод её на пользовательскую форму. CommandButton2_Сlick() – процедура,срабатывающая при нажатии кнопки «Очистить», которая очищает форму. CommandButton3_Сlick()– процедура, срабатывающая при нажатии кнопки «Выйти», позволяющая пользователюзавершить работу с программой. CommandButton4_Click() – процедура,срабатывающая при нажатии кнопки «О программе», которая даёт краткие сведения опрограмме и её разработчике. CommandButton5_Сlick() – процедура, срабатывающаяпри нажатии кнопки «Работать с Excel», позволяющая пользователю переключиться наработу с листом Excel. OptionButton1_Click() – процедура-переключатель, привыборе которого вычисляется сумма элементов, находящихся под главной диагональю.OptionButton2_Click() – процедура-переключатель, при выборе которого вычисляетсясумма элементов, составляющих главную диагональ.

2.2 Разработка схемыпрограммного модуля и ее описание

Блок-схема процедурызаполнения квадратной матрицы представлена на рисунке 5:

/>


1

2

3

4

5

6

7

8


/>


9

Рисунок 5 – Схемапрограммного модуля (Заполнение матрицы)

Описание блок-схемы:

1 – ввод размера массива;

2 – проверка того, чтовведённый размер массива является числом;

3 – проверка того, что введённыйразмер массива является положительным числом, отличным от нуля;

4 – проверка того, чтовведённый размер массива является целым числом;

5 – задание динамическогомассива;

6 – цикл, которыйпробегает значения строк от 1 до заданного размера массива, с шагом равным поумолчанию 1;

7 – цикл, которыйпробегает значения столбцов от 1 до заданного размера массива, с шагом равнымпо умолчанию 1;

8 – тело цикла, котороезаполняет массив случайными числами от 0 до 6;

9 – вывод результата вполе, предназначенное для вывода квадратной матрицы.

Блок-схема процедуры дляпервого переключателя представлена на рисунке 6:


/>


1

2

3

4

5

6

Рисунок 6 – Схемапрограммного модуля (первый переключатель)

Описание блок-схемы:

1 – задание начальныхпараметров для вычисления суммы элементов матрицы;

2 – цикл, которыйпробегает значения строк от f дозаданного размера массива, с шагом равным по умолчанию 1;

3 – цикл, которыйпробегает значения столбцов от 1 до m-b, с шагом равным по умолчанию 1;

4 – вычисление суммыэлементов, лежащих под главной диагональю;

5 – увеличение параметра f на 1 и уменьшение параметра b на 1, после окончания цикла длястолбцов (блок 3), и переход к циклу для строк (блок 2);

6 – вывод результата в полевывода суммы элементов.

Блок-схемапроцедуры для второго переключателя представлена на рисунке 7:

/>


1

2

3

4

5

6

Рисунок 7 – Схемапрограммного модуля (второй переключатель)

Описание блок-схемы:

1 – задание начальныхпараметров для вычисления суммы элементов матрицы;

2 – цикл, которыйпробегает значения строк от 1 до заданного размера массива, с шагом равным поумолчанию 1;

3 – цикл, которыйпробегает значения столбцов от 1 до заданного размера массива, с шагом равнымпо умолчанию 1;

4 – проверка условия i = j. В случае выполнения данного условия происходит переход кблоку 5, в противном случае – к блоку 3;

5 – вычисление суммыэлементов, составляющих главную диагональю;

6 – вывод результата вполе вывода суммы элементов.

Блок-схемапроцедуры для работы с листом Excel представленана рисунке 8:

/>


1

2

3

4

5

6

7

8

9


/>


10

11

12

13

14

15

16

17

18

19

20


/>21

 

Рисунок 8 – Схемапрограммного модуля (Работа с листом Excel)

Описание блок-схемы:

1 – ввод размера массива;

2 – проверка того, чтовведённый размер массива является числом;

3 – проверка того, чтовведённый размер массива является положительным числом, отличным от нуля;

4 – проверка того, чтовведённый размер массива является целым числом;

5 – задание динамическогомассива;

6 – цикл, которыйпробегает значения строк от 1 до заданного размера массива, с шагом равным поумолчанию 1;

7 – цикл, которыйпробегает значения столбцов от 1 до заданного размера массива, с шагом равнымпо умолчанию 1;

8 – тело цикла, котороезаполняет массив случайными числами от 0 до 6;

9 – вывод массива на листExcel;

10 – задание начальныхпараметров для вычисления суммы элементов матрицы, расположенных под главнойдиагональю;

11 – цикл, которыйпробегает значения строк от f дозаданного размера массива, с шагом равным по умолчанию 1;

12 – цикл, которыйпробегает значения столбцов от 1 до m-b, с шагом равным по умолчанию 1;

13 – вычисление суммыэлементов, лежащих под главной диагональю;

14 – увеличение параметраf на 1 и уменьшение параметра b на 1, после окончания цикла длястолбцов (блок 12), и переход к циклу для строк (блок 11);

15 – вывод суммыэлементов, лежащих под главной диагональю на лист Excel;

16 – задание начальныхпараметров для вычисления суммы элементов матрицы, составляющих главнуюдиагональ;

17 – цикл, которыйпробегает значения строк от 1 до заданного размера массива, с шагом равным поумолчанию 1;

18 – цикл, которыйпробегает значения столбцов от 1 до заданного размера массива, с шагом равнымпо умолчанию 1;

19 – проверка условия i = j. В случае выполнения данного условия происходит переход кблоку 5, в противном случае – к блоку 3;

20 – вычисление суммыэлементов, составляющих главную диагональю;

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

2.3 Разработкапользовательского интерфейса.

Пользовательскийинтерфейс (ПИ) программы — это совокупность элементов, позволяющих пользователюпрограммы управлять ее работой и получать требуемые результаты, т.е. это диалогмежду компьютером и пользователем.

Интерфейс дляпрограммного модуля, разработанного в данном курсовом проекте представлен нарисунке 9:


/>


 

/> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> />

Рисунок 9 — Видпользовательской формы: 1 – поле для ввода размерности квадратной матрицы; 2 –поле для вывода суммы элементов матрицы, в зависимости от выбранногопереключателя; 3 – переключатель, при выборе которого вычисляется суммаэлементов матрицы, находящихся под главной диагональю; 4 – переключатель, привыборе которого вычисляется сумма элементов матрицы, составляющих главнуюдиагональ; 5 – кнопка, при нажатии которой происходит заполнение матрицы; 6 –кнопка, которая осуществляет очистку всех полей формы; 7 – кнопка,осуществляющая выход из программы; 8 – кнопка, при нажатии которой появляетсякраткая информация о программе; 9 – кнопка, позволяющая пользователюпереключиться на работу с листом Excel; 10 — поле для вывода заполненнойматрицы


3. Реализацияпрограммного модуля

 

3.1 Код программы

Dim summa1 As Double

Dim summa2 AsDouble

Dim a() AsDouble

Dim m As Variant

‘задаём начальныепараметры при инициализации формы:

Private SubUserForm_Initialize()

Application.Visible= False

UserForm1.Caption= «Курсовой проект»

CommandButton1.Default= True

TextBox1.SetFocus

End Sub

‘процедура заполненияматрицы:

Private SubCommandButton1_Click()

m =TextBox1.Text

IfIsNumeric(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 Tom, 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 SubCommandButton3_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 SubOptionButton1_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 SubOptionButton2_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 SubCommandButton5_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 <= 0Then

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 Tom, 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

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

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 – выполняетодну из нескольких групп инструкций в зависимости от некоторого выражения.


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

Ниже приведён примерработы программного модуля. Для этого ввели в поле ввода размерность матрицыравную 5. При нажатии кнопки «Заполнить матрицу» в окне вывода появилоськвадратная матрица пятого порядка, заполненная случайными числами от 0 до 6,что представлено на рисунке 10:

/>


Рисунок 10 — Видпользовательской формы с заполненной матрицей

При выборе первогопереключателя определяется сумма элементов, находящихся под главной диагональюматрицы. При выборе второго переключателя – сумма элементов матрицы, составляющихглавную диагональ.


При нажатии кнопки «о программе»появляется сообщение с краткой информацией о программе.

При нажатии кнопки«Работать с Excel» появляется диалоговое окно, в котором задаётся размерностьматрицы.

При нажатии кнопки «Оk»на листе Excel появляется результат, который представлен на рисунке 11:

/>

Рисунок 11 – Лист Excel срезультатом

Диалоговое окно «окновозврата» позволяет пользователю вернуться к работе с пользовательской формой.

Как видно из приведенногопримера программа является полностью работоспособной.


Заключение

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

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

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


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

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

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

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

еще рефераты
Еще работы по информатике, программированию