- •Лабораторная работа № 1_2_семестр
- •Разработка приложения для табулирования функции и построения её графика в пользовательской форме
- •Задание на выполнение работы(1)
- •Приложение 1.
- •Варианты заданий, предлагаемые для исследования функций и нелинейных уравнений(2)
- •Приложение 2.
- •Тексты процедур, приложения построения таблицы и графика произвольной функции
- •Приложение 3.
Приложение 2.
Тексты процедур, приложения построения таблицы и графика произвольной функции
Option Explicit
Dim D0 As Double, Dk As Double, dD As Double Dim УрГрафика As String
Dim nd As Integer ' nd - число строк со значениями аргумента d
'n, i - вспомогательные целые переменные
Dim n As Integer, i As Integer
Dim Res() As Double, F() As Double
'Процедуратабулированияфункциисформированиемтаблицыиграфика
Private Sub Cmd_Tab_Definition_Click() Dim D As Double
'считывание строки из TextBoxFunction с удалением
'пробелов в начале и конце строки
УрГрафика = Trim(TextBoxFunction.Text)
' Вывод текста введённой формулы (для отладки) 'MsgBox ("формула : " & УрГрафика)
i = 1
Do ' цикл просмотра текста
' ЗаменавовведеннойвTextBoxFunction формулеаргументаD нассылку$B1
If Mid(УрГрафика, i, 1)="d" Or Mid(УрГрафика, i, 1)="D" Then |
' if 0 |
|||
n = Len(УрГрафика) |
' определение длины |
|
||
If (1<i) And (i < n) Then |
' ================ if (i > 1) And (i < n) |
|||
УрГрафика=Left(УрГрафика,i-1)&"$B1"& Right(УрГрафика, n- i) |
||||
End If ' =========================== End if (i>1) And (i<n) |
||||
If i = 1 Then |
' =============================== if i = 1 |
|||
УрГрафика = "$B1" & Right(УрГрафика, n - 1) |
|
|||
End If |
' =============================== End if |
i = 1 |
||
If i = n Then |
' =============================== if i = n |
|||
УрГрафика = Left(УрГрафика, n - 1) & "$B1" |
|
|||
End If |
|
' ========================== End if i = n |
||
End If |
|
|
' End if 0 |
|
i = i + 1 |
|
' |
переход к следующему символу в строке |
Loop While i<=Len(УрГрафика) ' Конецциклапереборасимволовстроки ' Выводдляотладки
MsgBox("формуласвнесённымиссылками: "&УрГрафика)
3 |
Любимов Е.Б. |
'второй этап отладки
'объявление параметров, определяющих таблицу функции
Dim D0, dD, Dk As Double
If IsNumeric(TextBox1.Text) Then D0 = CDbl(TextBox1.Text) _ Else MsgBox ("Введённое значение D0 не число"): Exit Sub
If IsNumeric(TextBox2.Text) Then dD = CDbl(TextBox2.Text) _ Else MsgBox ("Введённое значение dD не число "): Exit Sub If IsNumeric(TextBox3.Text) Then Dk = CDbl(TextBox3.Text) _ Else MsgBox ("Введённое значение Dk не число "): Exit Sub
n = (Dk - D0) / dD + 1 ' число строк в таблице
TextBox4.Text = n
ReDim Res(n, 2) As Double ' переобъявление массива Res ' MsgBox ("n=" & n)
ActiveSheet.Cells.Select ' выделение ячеек на листе книги
Selection.Clear ' очистка ячеек ActiveSheet.Range("A1").Select 'выбор ячейки a1 ActiveSheet.Range("b1").Value = D0 'запись в b1 значения D0
'создание в столбце В последовательности значений аргумента With ActiveSheet ' запись значений аргумента в столбец В
Range("b1").DataSeries rowcol:=xlColumns, Type:=xlLinear, _ step:=dD, stop:=Dk, Trend:=False
End With
'заполнение диапазона значениями функции
With ActiveSheet
Range("A1").Value = 0 ' запись 0 в ячейку а1
' определение числа строк в диапазоне заполнения nd = Range("c1").CurrentRegion.Rows.Count
'ввод функции в ячейку С1 Range("c1").FormulaLocal = УрГрафика
'заполнение диапазонов Range(Cells(1,3),Cells(nd,3)) и
'Range(Cells(1,1),Cells(nd,1)) - эквивалент протаскивания Range("c1").AutoFill Destination:=Range(Cells(1, 3), Cells(nd, 3)), _
Type:=xlFillDefault
Range("A1").AutoFill Destination:=Range(Cells(1, 1), Cells(nd, 1)), _
Type:=xlLinearTrend
End With
End Sub
4 |
Любимов Е.Б. |
'Процедура формирования списка LstBoxXF
'при нажатии кнопки "Формирование таблицы F(D)" Private Sub Cmd_Funct_Tab_Click()
'формирование и вывод информации в список ListBox For i = 0 To n - 1
Res(i, 0) = Cells(i + 1, 1).Value Res(i, 1) = Cells(i + 1, 2).Value Res(i, 2) = Cells(i + 1, 3).Value
Res(i, 0) = Format(Res(i, 0), "###00.000")
Res(i, 1) = Format(Res(i, 1), "###00.000")
Res(i, 2) = Format(Res(i, 2), "###00.00000")
Next i
LstBoxXF.ColumnCount = 3
LstBoxXF.List() = Res
End Sub
Private Sub Cmd_Exit_Click()
FrmFuncTab.Hide
End Sub
' Процедура построения графика принажатии кнопки "Вывести график" Private Sub CmdGrafic_Click()
Dim HorizontalAlignment As Integer, VerticalAlignment As Integer, Orientation As Integer
'Выбор диапазона, по которому строится график
ActiveSheet.Range(Cells(1, 3), Cells(n, 3)).Select
'Задание и выбор области на рабочем листе, где будет построен график, 'размер графика должен соответствовать размеру объекта Image 1 ActiveSheet.ChartObjects.Add(10, 10, 520, 480).Select Application.CutCopyMode = False
'Построение графика
ActiveChart.ChartWizard Source:=Range(Cells(1, 2), Cells(nd, 3)), _ Gallery:=xlLine, Format:=2, PlotBy:=xlColumns, CategoryLabels:=1, _ SeriesLabels:=0, HasLegend:=False, Title:="График", _ CategoryTitle:="Аргумент", ValueTitle:="Y=" & TextBoxFunction.Text ActiveSheet.ChartObjects(1).Activate ActiveChart.Axes(xlValue).AxisTitle.Select
With Selection
HorizontalAlignment = xlCenter VerticalAlignment = xlCenter
5 |
Любимов Е.Б. |
Orientation = xlUpward End With
'Запись диаграммы в файл и загрузка картинки в Image1 ActiveChart.Export Filename:="Graph.jpg", FilterName:="JPEG" FrmFuncTab.ImageGr.Picture = LoadPicture("graph.jpg") ActiveSheet.ChartObjects.Delete
ActiveSheet.Cells.Select
Selection.Clear 'Очистка выделенных ячеек активного листа
ActiveSheet.Range("A1").Select End Sub
Приложение 3.
Определения изменяемых свойств объектов формы "Табулирование функции с выводом графика"
Объект |
Свойство |
|
Значение |
|
|
UserForm |
Name |
FrmFuncTab |
|
|
|
|
Caption |
Табулирование функции с выводом |
|||
|
|
графика |
|
|
|
TextBox |
Name |
TextBoxFunction |
|
|
|
|
Text |
= |
|
|
|
|
Value |
= |
|
|
|
CommandButton |
Name |
Cmd_Tab_Definition |
|
|
|
|
Caption |
Ввод |
параметров |
функции |
и |
|
|
определение числа строк в таблице |
|
||
Frame |
Name |
Frame1 |
|
|
|
|
Caption |
Значения параметров табулирования |
|
||
TextBox1 |
Text |
-3 |
|
|
|
|
Value |
-3 |
|
|
|
TextBox2 |
Text |
0,5 |
|
|
|
|
Value |
0,5 |
|
|
|
TextBox3 |
Text |
3 |
|
|
|
|
Value |
3 |
|
|
|
ListBox |
Name |
LstBoxXF |
|
|
|
CommandButton |
Name |
Cmd_Funct_Tab |
|
|
|
|
Caption |
Формирование таблицы F(D) |
|
||
CommandButton |
Name |
CmdGrafic |
|
|
|
|
Caption |
Вывести график |
|
|
6 |
Любимов Е.Б. |
CommandButton |
Name |
Cmd_Exit |
|
Caption |
Выход |
Image |
Name |
ImageGr |
Кроме перечисленных в таблице объектов в форме приложения имеются метки (Label), заголовки которых (Caption) должны быть переопределены в соответствии с текстами, приведёнными на рисунке формы.
Рис. 2. Вид окна пользовательской формы, с результатами выполнения для функции 1,8*X2-sin(1,5*x)
Рис. 3. Вид окна пользовательской формы, с результатами выполнения для функции 1,8*x2-2*sin(15,5*x+3,4)
7 |
Любимов Е.Б. |