Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_1_2сем.pdf
Скачиваний:
8
Добавлен:
29.03.2015
Размер:
561.64 Кб
Скачать

Приложение 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

Любимов Е.Б.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]