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

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

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

UserForm1 – пользовательская форма.

UserForm_Initialize() – процедура начальной инициализации пользовательской формы.

CommandButton1_Click() – процедура, срабатывающая при нажатии кнопки «Найти корни», которая производит вычисления и записывает результат.

CommandButton3_Click() – процедура, срабатывающая при нажатии кнопки «О программе», которая выводит информацию о задаче и о разработчике.

CommandButton4_Click() – процедура, срабатывающая при нажатии кнопки «Очистить», которая удаляет построенный график.

CommandButton5_Click() – процедура, срабатывающая при нажатии кнопки «Построить», которая считывает данные и строит график.

f() – функция, которая вычисляет значение функции в зависимости от аргумента.


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

Рисунок 5. Схема процедуры обработки кнопки «Найти корни».

Обозначения переменных:

x1 – число из [a,b], для которого вычисляется значение функции;

a, b – начало и конец отрезка;

i – счетчик итераций.

 

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

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

Рисунок 6. Окно программы.

В окне программы расположены 2 закладки Page1 - «Вычисления» и Page2 - «Построение графика».

На закладке «Вычисления» расположены исходные данные в элементе управления Label, результат (элемент управления Label) и сами вычисления на элементе управления ListBox.

После нажатия на кнопку «Найти корни» производится расчет и выводится результат.

После нажатия на кнопку «О программе» появляется сообщение с данными о задаче, которую решает данная программа, и о разработчике.

Рисунок 7. Сообщение «О программе».

На закладке «Построение графика» ячейки для ввода отрезка (элемент управления TextBox), на котором будет построен график (для уточнения корня уравнения), и сам график. График выводится на элемент управления Image.


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

 

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

Dim a As Double 'начало отрезка

Dim b As Double 'конец отрезка

Dim x1 As Double 'значение аргумента

Dim x2 As Double 'значение аргумента

Dim i As Integer 'счетчик

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

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

Dim k As Integer

Dim j As Double

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

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

Private Sub UserForm_Initialize()

Application.Visible = False 'делаем Excel невидимым

number = "0123456789,-"

sign = "-"

Image1.Visible = False

CommandButton4.Enabled = False

End Sub

Private Sub CommandButton1_Click()

ListBox1.Clear

a = -5 'присвоение значения

b = 5 'присвоение значения

i = 1 'присвоение значения

ListBox1.AddItem "x" 'заполнение ListBox1

ListBox1.List(0, 1) = "y(x)" 'заполнение ListBox1

Do While (True)

x2 = x1

x1 = a - ((b - a) / (f(b) - f(a))) * f(a)

ListBox1.AddItem x1 'заполнение ListBox1

ListBox1.List(i, 1) = f(x1) 'заполнение ListBox1

i = i + 1

If (f(x1) = 0) Then 'проверка условия

Exit Do 'выход из цикла

End If

If ((f(x1) * f(a)) > 0) Then 'проверка условия

a = x1 'изменение начала отрезка

End If

If ((f(x1) * f(b)) > 0) Then 'проверка условия

b = x1 'изменение конца отрезка

End If

If (Abs(x2 - x1) <= 0.001) Then 'проверка условия

Exit Do 'выход из цикла

End If

Loop

Label4.Caption = x1

End Sub

Private Sub CommandButton3_Click()

MsgBox "Программа уточнения корня уравнения x^3-x-0,3=0 методом хорд." & vbCr & "Разработчик программы: Шараваров Д.", vbInformation, "О программе"

End Sub

Private Sub CommandButton4_Click()

TextBox1.Value = ""

TextBox2.Value = ""

Image1.Visible = False

CommandButton5.Enabled = True

CommandButton4.Enabled = False

End Sub

Private Sub CommandButton5_Click()

'проверяем введены ли все данные

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

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

Exit Sub

End If

'проверяем правильно ли введены данные(a<b)

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

MsgBox ("Проверьте введенные данные!")

Exit Sub

End If

k = 1

For j = CDbl(TextBox1.Value) To CDbl(TextBox2.Value) Step 0.01

Cells(k, 1) = j

Cells(k, 2) = f(j)

k = k + 1

Next j

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

Set rx = Sheets(ActiveSheet.Name).Range(Cells(1, 1), Cells(k, 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 + "\Grafic_func.gif", FilterName:="GIF"

ActiveSheet.ChartObjects.Delete

Worksheets(1).UsedRange.Clear

Image1.Picture = LoadPicture(CurDir + "\Grafic_func.gif") 'загружаем в Image1 файл с графиком

Image1.Visible = True

CommandButton5.Enabled = False

CommandButton4.Enabled = True

End Sub

Public Function f(x As Double) As Double 'нахождение значения функции

f = x ^ 3 - x - 0.3

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 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 Тестирование программного модуля

Найдем корень уравнения. Нажмем на кнопку «Найти корни». После этого появится результат и промежуточные вычисления.

Рисунок 8. Закладка «Вычисления».

Рисунок 9. График функции.


Для проверки корня, построим график функции на отрезке [1,1.3] (рис. 9)


Заключение

Целью данной курсовой работы является разработка программного модуля для нахождения методом хорд корня уравнения x3 - x - 0.3 = 0 с точностью до 0,001.

Тестирование показало, что результаты, полученные разработанным программным модулем, соответствуют теоретическим расчётам (это подтверждает и график). В программе присутствует обработка ошибок. При вводе ошибочные данные игнорируются, а при отсутствии введенных данных выдаётся сообщение об ошибке. Курсовая выполнена в полном объеме и в соответствии с заданием.


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

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.


Информация о работе «Проект программного модуля для нахождения корня уравнения»
Раздел: Информатика, программирование
Количество знаков с пробелами: 12019
Количество таблиц: 0
Количество изображений: 7

Похожие работы

Скачать
55378
4
0

... 3. Для функционирования программы необходима операционная система MS DOS 3.30 и выше или полностью совместимой с ней. Исходный текст программы написан на языке программирования высокого уровня Турбо Паскаль версии 7.0 фирмы Borland для DOS и WINDOWS с применением библиотеки Turbo Vision и содержится в файле notebook.pas в форме пригодной к использованию его как текстового документа в среде ДОС, и ...

Скачать
38687
3
48

... 35437 x4=0.58554 5 x1=1.3179137 x2=-1.59467 x3=0.35371 x4=0.58462 6 x1=1.3181515 x2=-1.59506 x3=0.35455 x4=0.58557 5. Сравнительный анализ различных методов численного дифференцирования и интегрирования 5.1 Методы численного дифференцирования 5.1.1 Описание метода Предположим, что в окрестности точки xiфункция F (x) дифференцируема достаточное число раз. ...

Скачать
54917
4
0

... файл kursach.ехе. Для функционирования программы необходим персональный компьютер с установленной операционной системой MS-DOS 3.30 и выше или полностью совместимой с ней. Исходный текст программы написан на языке программирования высокого уровня С++ фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле kursach.срр в форме пригодной к использованию его как текстового документа в ...

Скачать
58010
1
511

... данных по сети. ЗАКЛЮЧЕНИЕ В рамках данного дипломного проектирования перед студентом Малышевым А.А. была поставлена задача: на основе алгоритма RSA для шифрования блоков данных, построить алгоритм и реализовать программный продукт для шифрования потоков данных. В результате выполнения дипломного проектирования был составлен принципиальный алгоритм для решения поставленной задачи. Далее он был ...

0 комментариев


Наверх