Розробка програмного модуля який знаходить суму кутових елементів матриці і суму елементів

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

Постановка завдання

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

Реалізація програмного модуля

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

Висновок

Список використаних джерел

Введення

Метою даної курсової роботи є розробка програмного модуля який знаходить суму кутових елементів і суму елементів, що знаходяться над головною діагоналлю.

У першому розділі розглядається математичний опис, представлені вхідні і вихідні дані, обробка помилок. У другому розділі міститься структурна діаграма програмного модуля, а також блок-схема алгоритму програми з докладним описом всіх її блоків. У третьому розділі представлений код програми на мові VBA і міститься опис усіх використаних у написанні програмного модуля операторів мови VBA. У четвертому розділі наводиться тестування програмного модуля. Потім даний висновок і наведений список використаних джерел.

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

1.1 Математична модель задачі

Для виконання поставленого завдання необхідно скласти програмний модуль, який знаходить або суму кутових елементів, або суму елементів, розташованих над головною діагоналлю, в залежності від дії користувача. Якщо припустити, що розмірність квадратної матриці дорівнює n, то:

1. Елемент матриці A = a (i, j) буде кутовим, якщо i = n або j = n

2. Елемент матриці A = a (i, j) перебуватиме над головною діагоналлю, якщо j буде більше i. Тобто число стовпців повинна перевищувати число рядків.

1.2 Вхідні дані

До вступним даними для даного курсового проекту відносяться:

- Введення значення n - розмірності матриці;

Вимоги до вхідних даних:

- N повинно бути цілим числом

- N має бути позитивним числом

- N повинно бути більше або дорівнює двом

- Введення вихідних даних здійснювати у відповідні поля введення форми.

1.3 Вихідні дані

До вихідних даних для даного курсового проекту відносяться:

- Висновок на форму заповненої матриці;

Вимоги до вихідних даних:

- Вихідні дані виводяться в числовому вигляді.

1.4 Обробка помилок

При складанні програми важливо, щоб сама програма аналізувала дані, які вводить користувач, і в разі введення некоректних даних, або інформувала користувача, або намагалася програмно виправити помилки, що більш переважно. Таким чином, у разі введення некоректних даних є два варіанти розвитку подій:

1. Запобігання помилок: програмно аналізувати вводяться або обчислювані дані і у випадку, якщо вони можуть призводити до помилки, інформувати користувача про те, що запроваджені ним дані помилкові і можуть призвести до неправильної роботи програми.

2. Обробка помилок: у разі появи помилки, програма помічає її і намагається самостійно виправити її, без відома користувача.

При створенні додатків треба поєднувати обидва підходи, застосовуючи в кожному конкретному випадку і для кожної можливої ​​помилки той, який здається розробнику найбільш ефективним.

Передбачена можливість припинення роботи програми і видачі відповідного повідомлення у випадку неправильних дій користувача.

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

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

Структурна діаграма програмного модуля представлена ​​на рисунку 1.

Рисунок 1 - Структурна діаграма програмного модуля

UserForm1_Initialize () - процедура початкової ініціалізації користувача форми.

ButtonCreate _click () - процедура, що спрацьовує при натисканні кнопки «Заполнить матрицю», яка проводить перевірку вихідних даних і створення матриці матриці.

ButtonClear _click () - процедура, що спрацьовує при натисканні кнопки «Очистити», яка очищає форму.

ButtonExit _click () - процедура, що спрацьовує при натисканні кнопки «Вихід», яка виходить з програми.

BtnTask 1_ click () - процедура, що спрацьовує при натисканні кнопки "завдання 1".

BtnTask 2_ click () - процедура, що спрацьовує при натисканні кнопки "завдання 2".

BtnExcel _ click () - поцедури, що спрацьовує при натисканні кнопки "На лист Excel", яка ховає налаштовувану форму і виводить дані, представлені на аркуші Excel.

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

2.2.1 Знаходження суми кутових елементів

Схема програмного модуля для знаходження кутових елементів представлена ​​на малюнку 2.

Малюнок 2

2.2.2 Знаходження суми елементів, що знаходяться над головною діагоналлю

Знаходження суми елементів, що знаходяться над головною діагоналлю представлено на малюнку 3.

Рисунок 3 - Перебування суми елементів, розташованих вище головної діагоналі

Опис блок-схеми 1:

Блок 1 - початок циклу;

Блок 2 - читання розмірності матриці, заданій користувачем;

Блок 3-5 - цикл, у якому знаходиться сума кутових елементів;

Блок 4-5 - підцикл, в якому перевіряється рядок матриці на наявність кутових елементів;

Блок 6 - записуємо знайдені дані в клітинку на аркуші Excel;

Блок 7 - виводимо знайдене значення на екран.

Опис блок-схеми 2:

Блок 1 - початок циклу;

Блок 2 - читання розмірності матриці, заданої користувачем;

Блок 3-5 - цикл, у якому знаходиться сума елементів над головною діагоналлю;

Блок 4-5 - підцикл, в якому перевіряється рядок матриці на наявність елементів, розташованих над головною діагоналлю;

Блок 6 - записуємо знайдені дані в клітинку на аркуші Excel;

Блок 7 - виводимо знайдене значення на екран.

2.3 Розробка користувальницького інтерфейсу

При розробці інтерфейсу необхідно дотримуватися наступних принципів:

  1. дотримуватись стандартів при виборі колірної палітри і елементів введення-виведення;

  1. інтерфейс є основним, а не процеси введення-виведення;

  2. склад і форма представлення вхідних і вихідних даних повинні бути стандартними.

Мета створення ергономічного інтерфейсу полягає в тому, щоб відобразити інформацію настільки ефективно наскільки це можливо для людського сприйняття і структурувати відображення на дисплеї таким чином, щоб привернути увагу до найбільш важливим одиницям інформації. Основна ж мета полягає в тому, щоб мінімізувати загальну інформацію на екрані і представити тільки те, що є необхідним для користувача.

Інтерфейс для програмного модуля розробленого в даному курсовому проекті представлений на малюнку 5.

Малюнок 4 - Користувацька форма: 1 - TextBoxInput - поле для введення значення n, розмірності матриці; 2 - ButtonCreate - кнопка, при натисканні якої здійснюється заповнення матриці, 3 - ButtonClear-кнопка, при натисканні якої здійснюється очищення всіх полів форми; 4 - BtnTask 1 - кнопка, при натисканні якої програма знаходить суму кутових елементів матриці; 5 - BtnTask 2 - кнопка, при натисканні якої програма знаходить суму елементів матриці, що знаходяться над верхньою діагоналлю; 6 - BtnExcel - кнопка, при натисканні якої користувальницька форма ховається, і відображаються дані на аркуші Excel; 7 - Кнопка, при натисненні якої здійснюється вихід з програмного модуля; 8 - Поле для виведення заповненої матриці

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

3.1 Програмний код

Програма розроблена в додатку Microsoft Excel на мові програмування Visual Basic For Application.

Private Sub BtbTask2_Click ()

Dim a (1 To 100, 1 To 100) As Variant

Dim summ As Integer

n = TextBoxInput.Value

For i = 1 To n

For j = 1 To n

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

summ = summ + Check_Top_Elements (a (i, j), i, j)

Next j

Next i

m = Application.CountA (Range ("A: A"))

Cells (m + 3, 1) = "Сума елементів над головною діагоналлю:" + CStr (summ)

TextBoxOutput2.Value = CStr (summ)

End Sub

Private Sub BtnTask1_Click ()

Dim a (1 To 100, 1 To 100) As Variant

Dim summ As Integer

n = TextBoxInput.Value

For i = 1 To n

For j = 1 To n

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

summ = summ + Check_Angular_Elements (a (i, j), i, j)

Next j

Next i

m = Application.CountA (Range ("A: A"))

Cells (m + 2, 1) = "Сума угловх елементів:" + CStr (summ)

TextBoxOutput.Value = summ

End Sub

Private Sub ButtonClear_Click ()

ListBoxOutput.Clear

End Sub

Private Sub ButtonCreate_Click ()

Dim n As Variant

Dim m As Variant

Dim strng (100) As String

Dim a (100, 100) As Variant

Dim space As String 'пробіл, який розділяє матрицю

If IsNumeric (TextBoxInput.Value) = False Then

MsgBox "Ви ввели неправильні дані Підказка: дані повинні бути представлені числом.", _

vblnformation, "Помилка вводу"

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.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
59.2кб. | скачати


Схожі роботи:
Розробка програми для зрушення елементів матриці по верствам
Розробка в середовищі Turbo Pascal програми сортування елементів рядків матриці
Розташування елементів в матриці
Аналіз та синтез НВЧ елементів. Хвильові матриці п-полюсника.
Аналіз впливів на суму витрат підприємства
Врахування факторів впливають на суму прибутку
Розробка програмного модуля
Розробка програмного модуля для обчислення інтеграла
Розробка універсального програмного модуля УПМ для РЕУ
© Усі права захищені
написати до нас