Построение графиков функций в Excel
Построить графики функций с применением имён диапазонов и создав в VBA функцию пользователя:
I. Построить в одной системе координат
1. Y =aCos(x); Z= b Cos 2 (2x) ,при xÎ [-2;2], Dx=0,2
2. Y =aSin(px) – a Cos(px); Z= Cos2(2px) – qSin(px), при xÎ [-1,8;2], Dx=0,25
3. Y =aSin(px)- Cos(3px); Z= Cos(2px) – bSin3(px),при xÎ [-3;3,4], Dx=0,8
4. Y =qSin(2px)Cos(px)–Cos2(3px); Z= qCos2(2px)–Sin (3px),при xÎ[-1,1], Dx=0,05
5. Y =aSin(px)Cos(px); Z= Cos2(px)Sin(spx),при xÎ [0;4], Dx=0,4
6. Y =sSin(3px)Cos(2px); Z= Cos3(qpx)Sin(px) ,при xÎ [-3;0], Dx=0,3
7. Y =aSin(2px)Cos(4px); Z= Cos 2(bpx)-Cos(px)Sin(px) ,при xÎ [-3,3;0,9], Dx=0,3
8. Y =Sin(jpx)+bSin(2px)Cos(3px); Z= Cos(px)-Cos(dpx)Sin2(px),при xÎ [0;2], Dx=0,1
9. Y =Cos(apx)Sin(px)+qSin(3px)Cos(2px); Z= Cos 2(px)-Cos(apx),при xÎ [0;3], Dx=0,2
10. Y =fSin(2px)Cos(px)+Sin(px); Z= Cos (apx)Sin2(px)-Cos(4px),при xÎ [0;2], Dx=0,1
II. Построить графики следующих функций:
1. Z = ,при xÎ[-1,4;1,4], Dx=0,1
2. Y = ,при xÎ[-1,5;1,9], Dx=0,3
3. G = ,при xÎ [-1,5;1,5], Dx=0,1
4. Y = ,при xÎ[-1,5;1,9], Dx=0,3
5. Y = , при xÎ [-2;2], Dx=0,2
6. Y = ,при xÎ[-1,7;1,3], Dx=0,3
7. G = ,при xÎ [-1,5;1,5], Dx=0,1
8. G = ,при xÎ [-2;2], Dx=0,2
9. G = ,при xÎ [-2;2], Dx=0,1
10. Z = ,при xÎ [-2;1,4], Dx=0,2
11. G = ,при xÎ [-1,5;1,5], Dx=0,1
12. Y = ,при xÎ [-1,5;1,5], Dx=0,1
13. Z = ,при xÎ [-1,8;1,8], Dx=0,1
14. = ,при xÎ[-2;1,8], Dx=0,2
15. Z = ,при xÎ [-1,8;1,8], Dx=0,2
16. Z = ,при xÎ[-1,6;2,5], Dx=0,3
17. Z = ,при xÎ [-1,8;1,6], Dx=0,2
18. Z = ,при xÎ[-1,4;1,4], Dx=0,1
19. Y = ,при xÎ[-1,5;1,9], Dx=0,3
20. G = ,при xÎ[-1,4;1,8], Dx=0,2
Лабораторная работа № 7
Основы программирования в VBA.
Visual Basic for Applications
Язык Visual Basic for Applications является одной из версий популярного языка разработки приложений Visual Basic.
Отличия двух языков:
· Язык Visual Basic разрабатывался для создания законченных самостоятельных приложений, VBA используется для автоматизации существующих приложений
· Visual Basic имеет собственную среду программирования, VBA использует среду приложения
· Приложения, созданные в Visual Basic, можно скомпилировать в .EXE файлы. VBA - приложения могут выполняться только в том приложении, в котором они были созданы
Общими для VBA и VB являются:
· Язык программирования (типы данных, правила объявления и использования переменных, процедур и функций)
· Средства разработки и отладки программ
· Аналогичные модели объектно-ориентированного и событийно-управляемого программирования
Процедуры
Процедура— это именованный блок операторов VBA, расположенная в модуле
В VBA можно выполнить только тот программный код, который содержится в какой-либо процедуре. Вне процедуры, в начале модуля, могут располагаться только установка опций(например Option Explicit - требование обязательного объявления переменных) и объявление переменных и констант, общих для модуля или проекта.
· Набор команд, который предполагается использовать многократно, записывается в виде процедуры пользователя.
· Повторное использование отлаженного кода при применении процедуры пользователя позволяет сократить время разработки программы, а также ее размер.
· Детали вычислений заменяются в основной программе оператором вызова соответствующей процедуры пользователя
· Такой подход улучшает читабельность программы и позволяет абстрагироваться от деталей вычислений.
Свойства процедуры
· Каждая процедура имеет один вход. При вызове процедуры управление передается ее первой инструкции.
· На время выполнения вызываемой процедуры выполнение вызывающего ее процедуры откладывается. В любой момент времени выполняется только одна процедура.
· После завершения процедуры управление всегда возвращается в вызывающую процедуру на инструкцию, следующую непосредственно за вызовом процедуры.
В VBA предусмотрены следующие типы процедур:
• процедура типа Sub(подпрограмма)— универсальная процедура для выполнения каких-либо действий, типа ввода данных(например массива), вывода, изменения элементов массива и т.п..
Синтаксис инструкции Sub
[Private | Public] Sub имяПроцедуры ([списокАргументов])
[инструкции]
[Exit Sub]
[инструкции]
End Sub
процедура типа Function(функция) — набор инструкций для вычисления сложного выражения.
Принципиальное отличие: функция возвращает вызвавшей ее программе (или процедуре) какое-то значение, которое будет там использовано.
Синтаксис инструкции Function
[Private | Public] Function имяФункции ([список_Аргументов]) [As тип]
[инструкции]
[имяФункции =выражение]
[Exit Function]
[инструкции]
[имяФункции = выражение]
End Function
Пример использования процедуры и функции пользователя.
Постановка задачи следующая:
Заполнить вектор (одномерный массив) B кубическими корнями элементов вектора А. размерность векторов, разумеется, одинаковые.
Private Sub main() 'Главная процедура
Dim A() As Double, B() As Double, n As Integer, i As Double
n = InputBox("Введи размер вктора")
ReDim A(1 To n)
ReDim B(1 To n)
ВводВектКлав A, n
ПечатВект A, n
ЗаполнВект B, A, n
ПечатВект B, n
End Sub
Private Sub ЗаполнВект(вект1, вект2, размер)
Dim i As Integer
For i = 1 To размер
вект1(i) = фунКубКорень(вект2(i))
Next
End Sub
Public Sub ВводВектКлав(вектор, размер As Integer)
Dim i As Integer
For i = 1 To размер
вектор(i) = InputBox("Введи элемент №" & i)
Next
End Sub
Public Sub ПечатВект(вектор, размер As Integer)
Dim i As Integer
Debug.Print
For i = 1 To размер
Debug.Print вектор(i),
Next
Debug.Print
End SubPublic Sub ЗаполнВект(вект1, вект2, размер)
Dim i As Integer
For i = 1 To размер
вект1(i) = фунКубКорень(вект2(i))
Next
End Sub
Public Function фунКубКорень(x)
If x >= 0 Then фунКубКорень = x ^ (1 / 3): Exit Function
If x < 0 Then фунКубКорень = -Abs(x) ^ (1 / 3)
End Function
В главной (основной) процедуре main объявляются два вещественных вектора A и B, а так же размерность векторов n.
Размер вектора n вводится с клавиатуры, а затем вызывается процедура пользователя ВводВектКлав с фактическими параметрами: имя вектора А размерностью n. Вызванная процедура заполняет вектор числами, введенными с клавиатуры, и возвращает управление в основную процедуру. Затем вызывается процедура ПечатВект с фактическими параметрами А и n. После печати вектора А вызывается процедура заполнения, куда передаются: вектор В для заполнения, вектор А и их размерность.
Так как в VBA не существует функции кубического корня, то создана функция пользователя с именем фунКубКорень, которая позволяет вычислять кубический корень, в том числе из отрицательного числа. После возврата в основную процедуру из процедуры ЗаполнВект, опять вызывается процедура ПечатВект, но теперь в качестве фактического параметра выдается вектор В и его размер. Имена аргументов процедур пользователей (вектор, размер и т.п.) написаны на кириллице только для того, чтобы подчеркнуть, что это формальные аргументы. Правильнее и проще задать эти имена латиницей, например V1, N, и т.п. Имена процедур и функций пользователя имеет смысл задавать по-русски, когда из названия будет ясно назначение этих процедур.
Проект содержит два модуля. В модуле Module1 находится основная процедуры main и ЗаполнВект, в модуле с именем библиотека находятся общедоступные (Public) процедуры.
Задание: создайте в VBA этот проект и выполните его в пошаговом режиме (запуск клавишей F8), наблюдая вызовы процедур и изменение значений переменных в окне Locals (вызов окна View-> Locals Window).
Рисунок 1