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

 

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


 

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

 

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




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

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

 

Dim n As Integer 'количество делений отрезка

Dim i As Integer 'счетчик итераций

Dim i1 As Double 'переменная для нахождения интеграла

Dim i2 As Double 'переменная для нахождения интеграла

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

Dim h As Double 'шаг

Private Sub UserForm_Initialize()

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

End Sub

Private Sub CommandButton1_Click()

Label3.Caption = Trap(0, 1) 'вычисление интеграла методом трапеции

Label5.Caption = Simp(0, 1) 'вычисление интеграла методом Симпсона

End Sub

Public Function Trap(a As Double, b As Double) As Double ' нахождение интеграла методом трапеции

n = 2

i2 = 0

h = 0.1

With ListBox1

.ColumnCount = 2

ListBox1.AddItem "x"

ListBox1.ColumnWidths = "30;30"

ListBox1.List(0, 1) = "Результат"

Do

 n = n * 2

 h = (b - a) / n

 i1 = i2

 i2 = 0

 For i = 1 To n

 x = a + h * i

 ListBox1.AddItem x

 i2 = i2 + h * (f(x) + f(a + h * (i - 1))) / 2

 ListBox1.List(i, 1) = i2

 Next i

Loop While (Abs(i1 - i2) < 0.005)

End With

Trap = i2

End Function

Public Function Simp(a As Double, b As Double) As Double ' нахождение интеграла методом Симпсона

n = 2

i2 = 0

h = 0.1

With ListBox2

.ColumnCount = 2

.ColumnWidths = "30;30"

.AddItem "x"

.List(0, 1) = "Результат"

Do

 n = n * 2

 h = (b - a) / n

 i1 = i2

 i2 = 0

 For i = 0 To n

 x = a + h * i

 .AddItem x

 If (i = 0 Or i = n) Then

 i2 = i2 + f(x) * (b - a) / (3 * n)

 .List(i + 1, 1) = i2

 Else

 If (i Mod 2 = 0) Then

 i2 = i2 + f(x) * 2 * (b - a) / (3 * n)

 .List(i + 1, 1) = i2

 Else

 If (i Mod 2 <> 0) Then

 i2 = i2 + f(x) * 4 * (b - a) / (3 * n)

 .List(i + 1, 1) = i2

 End If

 End If

 End If

 Next i

Loop While (Abs(i1 - i2) < 0.005)

End With

Simp = i2

End Function

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

f = 1 / Sqr(1 + x ^ 2)

End Function

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

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

 

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

Оператор присваивания – задает переменной значение другой переменной, выражения или объекта.

Условный оператор (If…Then…Else…End If) – позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия.

Оператор цикла For – позволяет повторять группу операторов заданное число раз.

Цикл с постусловием (Do…Loop While) – используются, когда заранее неизвестно, сколько раз будет выполняться тело цикла, но хотя бы раз тело цикла выполнится.

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

Функция Abs(x) – функция, которая возвращает значение аргумента по модулю.

 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: