Проект програмного модуля для знаходження наближеного значення нескінченної суми

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

скачати

Зміст

Введення

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

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

1.2 Вхідні дані

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

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

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

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

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

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

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

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

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

Висновок

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

Введення

Метою даної курсової роботи є розробка програмного модуля для обчислення наближеного значення нескінченної суми з точністю до Е = 0.05, якщо x приймає значення на відрізку [a, b] з кроком h. Для розробки використовується табличний процесор Excel і мова програмування Visual Basic for Application.

Ця курсова робота складається з 4 розділів.

У розділі «Постановка завдання» описані: математична модель задачі, вхідні і вихідні дані, обробка помилок, які можуть бути допущені при роботі з даною програмою.

У розділі «Проектування програмного модуля» приведена структурна діаграма програмного модуля, схема програмного модуля з її описом і описаний користувальницький інтерфейс.

У розділі «Реалізація програмного модуля» знаходиться код програми з коментарями до нього і описані використовувані оператори і функції.

У розділі «Тестування програмного модуля» показано роботу програми.

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

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

Дана сума є нескінченний ряд Тейлора. Для досягнення заданої точності треба підсумовувати члени ряду до тих пір, поки черговий член за модулем не буде менше Е. Для отримання наступного члена ряду через попередній скористаємося рекуррентной формулою:

1.2 Вхідні дані

Вхідними даними є:

Початок відрізка;

Кінець відрізка;

Крок.

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

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

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

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

Вихідними даними є:

Таблиця сум нескінченного ряду в залежності від x;

Графік функції.

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

Всі вихідні дані виводяться на форму;

До всіх вихідних даних повинен бути заборонений доступ з боку користувача.

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

У даній програмі реалізований наступний спосіб контролю введення:

Спочатку перевіряється, чи є набраний символ або цифрою, або комою;

Якщо не є, то набір символу ігнорується;

Якщо набирається символ є цифрою, то він вводиться в поле введення;

Якщо набирається символ є коми, то перевіряється, чи є вона першою вводиться коми. Якщо раніше коми не вводилися, то вона вводиться в поле введення. В іншому випадку введення коми ігнорується.

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

Проте користувач може не ввести в поле введення дані. У цьому випадку видається наступне повідомлення:

Малюнок 1. Повідомлення про помилку.

Якщо користувач ввів початок відрізка більше, ніж кінець відрізка, то в цьому випадку видається наступне повідомлення:

Малюнок 2. Повідомлення про помилку.

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

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

Малюнок 3. Структурна діаграма програмного модуля.

UserForm1 - призначена для користувача форма.

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

CommandButton1_Click () - процедура, що спрацьовує при натисканні кнопки «Обчислити суму», яка зчитує вихідні дані, робить обчислення і записує результат.

CommandButton2_Click () - процедура, що спрацьовує при натисканні кнопки «Видалити дані», яка здійснює видалення введених даних і результатів.

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

Sum () - функція визначення суми нескінченної низки.

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

Малюнок 4. Схема процедури обробки кнопки «Обчислити суму».

Малюнок 5. Схема функції обчислення суми нескінченної низки.

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

При запуску програми з'являється наступне вікно (Рис.6). Текстова інформація розміщена на елементах управління Label.

Малюнок 6. Вікно програми.

У вікні програми розташовуються комірки вводу (елементи управління TextBox), таблиця результатів (елемент управління ListBox) і графік функції, який розташовується на елементі управління Image.

Після натискання на кнопку (CommandButton) «Обчислити суму» зчитуються дані, проводиться розрахунок, виводиться результат.

Після натискання на кнопку «Видалити дані» дані і результат стираються.

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

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

Dim h As Double 'крок

Dim a As Double 'початок відрізка

Dim b As Double 'кінець відрізка

Dim i As Integer 'лічильник ітерацій

Dim n As Integer 'лічильник ітерацій

Dim x As Double 'аргумент

Dim eps As Double 'точність

Dim Cn As Double '1-ий член ряду

Dim y As Double 'значення суми ряду

Dim summa As Double 'значення суми ряду

Dim MaxIter As Integer 'допустіпое число ітерацій

Dim flag As Boolean 'логічна змінна

Dim usl As Boolean 'логічна змінна

Dim number As String 'рядок для перевірки вводиться числа

Dim sign As String 'рядок для перевірки знака вводиться числа

Dim ry As Range 'область даних по y для побудови графіка

Dim rx As Range 'область даних по x для побудови графіка

Private Sub UserForm_Initialize ()

Application.Visible = False 'робимо Excel невидимим

number = "0123456789, -" 'рядок для перевірки вводиться числа

sign = "-" 'рядок для перевірки знака вводиться числа

eps = 0.05 'точність

End Sub

Private Sub CommandButton1_Click () 'Кнопка "Обчислити суму"

'Перевіряємо чи введені всі дані

If (TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "") Then

MsgBox ("Введені не всі параметри")

Exit Sub

End If

'Перевіряємо чи правильно введені дані (a <b)

If (CDbl (TextBox1.Value)> = CDbl (TextBox2.Value)) Then

MsgBox ("Введені неправильно початок і кінець відрізка")

Exit Sub

End If

'Зчитуємо дані

a = CDbl (TextBox1.Value)

b = CDbl (TextBox2.Value)

h = CDbl (TextBox3.Value)

'Обчислення суми і запис результатів

i = 1

x = a

ListBox1.AddItem "x"

ListBox1.List (0, 1) = "Sum (x)"

For x = a To b Step h

ListBox1.AddItem x

summa = Sum (x)

If (flag) Then

ListBox1.List (i, 1) = summa

Cells (i, 1) = x

Cells (i, 2) = summa

Else

ListBox1.List (i, 1) = "Ряд розходиться"

End If

i = i + 1

Next x

CommandButton1.Enabled = False 'робимо кнопку "Обчислити суму" недоступною

'Побудова діаграми

Set ry = Sheets (ActiveSheet.Name). Range (Cells (1, 2), Cells (i, 2))

Set rx = Sheets (ActiveSheet.Name). Range (Cells (1, 1), Cells (i, 1))

Charts.Add

ActiveChart.ChartType = xlLine

ActiveChart.SetSourceData Source: = ry, PlotBy: = xlColumns

ActiveChart.SeriesCollection (1). XValues ​​= "=" & rx.Address (ReferenceStyle: = xlR1C1, external: = True)

ActiveChart.Location Where: = xlLocationAsObject, Name: = "Лист1"

With ActiveChart

. HasTitle = False

. Axes (xlCategory, xlPrimary). HasTitle = False

. Axes (xlValue, xlPrimary). HasTitle = False

End With

With ActiveChart.Axes (xlCategory)

. HasMajorGridlines = False

. HasMinorGridlines = False

End With

With ActiveChart.Axes (xlValue)

. HasMajorGridlines = False

. HasMinorGridlines = False

End With

ActiveChart.HasLegend = False

ActiveChart.HasDataTable = False

ActiveChart.Export filename: = CurDir + "\ Graf.gif", FilterName: = "GIF"

ActiveSheet.ChartObjects.Delete

Worksheets (1). UsedRange.Clear

Image1.Picture = LoadPicture (CurDir + "\ Graf.gif") 'завантажуємо в Image1 файл з графіком

Image1.Visible = True

End Sub

Private Sub CommandButton2_Click () 'Кнопка "Видалити дані"

ListBox1.Clear 'очищаємо ListBox1

TextBox1.Value = "" 'очищаємо TextBox1

TextBox2.Value = "" 'очищаємо TextBox2

TextBox3.Value = "" 'очищаємо TextBox3

TextBox1.SetFocus

CommandButton1.Enabled = True 'робимо кнопку "Обчислити суму" доступною

Image1.Visible = False

End Sub

Private Sub CommandButton3_Click ()

If MsgBox ("Закрити вікно?", VbYesNo + vbQuestion, "Завершення роботи") = vbYes Then

UserForm1.Hide

Application.Quit

End If

End Sub

Public Function Sum (x As Double) As Double 'Функція обчислення суми нескінченної низки

MaxIter = 100

Cn = 1

y = x

n = 0

flag = True

usl = True

Do While (Abs (Cn)> eps)

Cn = Cn * (x * x / ((2 * n + 2) * (2 * n + 3)))

y = y + Cn

n = n + 1

If (n> MaxIter) Then

usl = False

Exit Do

End If

Loop

If (usl) Then

Sum = y

Else

flag = False

End If

End Function

Private Sub TextBox1_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger) 'Перевірка символів, що вводять

If KeyAscii> 26 Then

If InStr (number, Chr (KeyAscii)) = 0 Or (InStr (TextBox1.Text, ",")> 0 And Chr (KeyAscii) = ",") Or (TextBox1.SelStart> 0 And InStr (sign, Chr ( KeyAscii))> 0) Then

KeyAscii = 0

End If

End If

End Sub

Private Sub TextBox2_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger) 'Перевірка символів, що вводять

If KeyAscii> 26 Then

If InStr (number, Chr (KeyAscii)) = 0 Or (InStr (TextBox2.Text, ",")> 0 And Chr (KeyAscii) = ",") Or (TextBox2.SelStart> 0 And InStr (sign, Chr ( KeyAscii))> 0) Then

KeyAscii = 0

End If

End If

End Sub

Private Sub TextBox3_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger) 'Перевірка символів, що вводять

If KeyAscii> 26 Then

If InStr (number, Chr (KeyAscii)) = 0 Or (InStr (TextBox3.Text, ",")> 0 And Chr (KeyAscii) = ",") Or (TextBox3.SelStart> 0 And InStr (sign, Chr ( KeyAscii))> 0) Then

KeyAscii = 0

End If

End If

End Sub

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) 'Закриття форми

Select Case MsgBox ("Закрити вікно?", VbYesNo + vbQuestion, "Завершення роботи")

Case vbYes

Cancel = 0

Application.Quit

Case vbNo

Cancel = -1

End Select

End Sub

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

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

a =- 1, b = 1, h = 0,1.

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

Малюнок 7. Приклад введення вхідних даних.

Після натискання кнопки «Обчислити суму» ми отримуємо таблицю результатів, де для кожного значення аргументу розраховано значення суми ряду:

Малюнок 8. Таблиця результатів.

Малюнок 9. Графік функції.

Висновок

Метою даної курсової роботи була розробка програмного модуля для обчислення наближеного значення нескінченної суми з точністю до Е = 0.05, якщо x приймає значення на відрізку [a, b] з кроком h..

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

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

1 Біллінг В.А. VBA і Office 2000. Офісне програмування. - М.: «Російська редакція», 1999.

2 Гарнаєв Ю.А. Використання MS Excel і VBA в економіці та фінансах. - СПб: БХВ - Санкт-Петербург, 2002.

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

4 Васильєв А. VBA в Office 2000: навчальний курс - СПб: Питер, 2002.

5 Кузьменков В.Г. VBA 2002. - М.: Видавництво БІНОМ, 2002.

6 MS Office XP: Розробка додатків / Под ред. Ф. А. Новікова - СПб: БХВ - Санкт-Петербург, 2003.

19

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

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

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


Схожі роботи:
Проект програмного модуля для знаходження кореня рівняння
Розробка програмного модуля для обчислення інтеграла
Розробка універсального програмного модуля УПМ для РЕУ
Обчислення суми нескінченної низки з точністю епсілон
Розробка програмного модуля
Розробка модуля перевірки діапазону вихідних даних і знаходження номера першого символу в рядку
Порядок розробки програмного модуля Атестація програмних засобів
Соціальний проект Сортування сміття в м Суми
Крайові задачі для алгоритмів наближеного побудови заданого режиму термообробки дротів
© Усі права захищені
написати до нас