Программа Табулирование функций в объекте ListBox
Private Sub CommandButton1_Click()
Dim i As Integer
Dim x As Double
Dim XN As Double
Dim XK As Double
Dim DX As Double
Dim S() As String
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Or Not IsNumeric(TextBox3) Then
MsgBox " неверные данные "
Exit Sub
End If
XN = CDbl(TextBox1)
XK = CDbl(TextBox2)
DX = CDbl(TextBox3)
If OptionButton1 = True Then
ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String
i = 0
S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "y"
i = i + 1
x = XN
Do While x <= XK
y = (2 + ( Sin ( x )) ^ 2) / (1 + x ^ 2) ' функция 1 семестра
S(i, 1) = i: S(i, 2) = Format(x, "0.0"): S(i, 3) = Format(y, "0.0")
x = x + DX: i = i + 1
Loop
End If
If OptionButton2 = True Then
ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 4) As String
i = 0
S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "g1": S(i, 4) = "g2"
i = i + 1
x = XN
Do While x <= XK
y = g ( x ) ' функция 1 семестра
S(i, 1) = i: S(i, 2) = Format(x, "0.0")
If x <= 0 Then S(i, 3) = Format(y, "0.0000") Else S(i, 4) = Format(y, "0.0000")
x = x + DX: i = i + 1
Loop
End If
If OptionButton3 = True Then
ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 5) As String
i = 0
S(i, 1) = "N": S(i, 2) = "x": S(i, 3) = "z1": S(i, 4) = "z2": S(i, 5) = "z3"
i = i + 1
x = XN
Do While x <= XK
y = z ( x ) ' функция 1 семестра
S(i, 1) = i: S(i, 2) = Format(x, "0.0")
If x < 0 Then S(i, 3) = Format(y, "0.0000")
If (x >= 0) And (x <= 1) Then S(i, 4) = Format(y, "0.0000")
If x > 1 Then S(i, 5) = Format(y, "0.0000")
x = x + DX: i = i + 1
Loop
End If
With ListBox1
.ColumnCount = 5
.List = S
End With
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Function g(x)
If x <= 0 Then g = (3 * x ^ 2) / (1 + x ^ 2) Else g = Sqr(1 + 2 * x / (1 + x ^ 2))
End Function
Function z(x)
If x < 0 Then z = 3 * x + Sqr(1 + x ^ 2)
|
|
If (x >= 0) And (x <= 1) Then z = 2 * Cos(x) * Exp(-2 * x)
If x > 1 Then z = 2 * Sin(3 * x)
End Function
Некоторые комментарии к программе:
– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, используется функция IsNumeric(TextBox1), проверяющая являются ли данные, помещенные в объекте TextBox1 или TextBox2 цифровыми;
– В программе также используется функция CDbl ( TextBox ), обеспечивающая преобразование данных объектов TextBox 1 и TextBox 2 в цифровые;
– В модуле используется динамическое объявление массива
Dim S () As String ,
с последующим уточнением мерности массива;
– Если включен объект OptionButton 1, то табулируется функция y = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.10, предварительно уточняется мерность массива S , оператором
ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String,
который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения
Round ( Abs ( XK - XN ) / DX ) + 1 – (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 3;
– Если включен объект OptionButton 2, то табулируется функция g = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.11, предварительно уточняется мерность массива S , оператором
|
|
ReDim S ( Round ( Abs ( XK - XN ) / DX ) + 1, 1 To 3) As String ,
который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения
Round ( Abs ( XK - XN ) / DX ) + 1 – (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 4;
Рис. 10.11
– Если включен объект OptionButton 3, то табулируется функция z = f ( x ), вычисленные значения которой и отображаются в объекте ListBox 1, рис. 10.12, предварительно уточняется мерность массива S , оператором
ReDim S(Round(Abs(XK - XN) / DX) + 1, 1 To 3) As String,
который можно размещать в любом месте программы. Диапазон изменения индексов по первому измерению от 0 до величины вычисленного результата арифметического выражения
Round ( Abs ( XK - XN ) / DX ) + 1 – (+ 1, для того, чтобы увеличить количество элементов массива с учетом “шапки таблицы”), по второму измерению – от 1 до 5;
Рис. 10.12.
– Формулы функций g = f ( x ) и z = f ( x ) оформлены в виде модулей пользовательских функций Function g ( x ) и Function z ( x );
– Объекту ListBox 1 сообщается свойство . ColumnCount , в соответствии с которым в объекте ListBox 1 устанавливается значение числа колонок = 5, максимальное из возможных вариантов количества столбцов при табулировании функций y = f ( x ), g = f ( x ) и z = f ( x );
|
|
ЛИТЕРАТУРА
1. Гарнаев А. Ю., Использование MS Excel и VBA в экономике и финансах, СПб.: БХВ – Санкт-Петербург, 1999. – 336 с., ил.
2. Гарбер Г.З. Основы программирования на Visual Basic и VBA в Excel 2007, Москва, Солон-Пресс, 2008, 192 с.
Даша
Дата добавления: 2019-03-09; просмотров: 537; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!