
- •1. Решение задач на линейный процесс
- •3. Решение задач на циклический процесс
- •4. Работа с данными рабочего листа excel
- •5. Решение задач с подпрограммами
- •Задание
- •2. Разветвляющийся процесс
- •3. Циклический процесс
- •4. Решение задач на подпрограммы
- •Б) Вычислить f, задав значения переменным:
- •Разветвляющийся процесс
- •Решение задач на ряды
- •Решение задач на одномерный массив
- •Решение задач на двумерный массив
Лабораторная работа
ЯЗЫК ПРОГРАММИРОВАНИЯ
VISUAL BASIC FOR APPLICATIONS (VBA)
Время выполнения 12 часов.
Цель работы
Научиться использовать этот язык для написания модулей в приложении VISUAL BASIC FOR APPLICATIONS (VBA) для EXCEL.
Задачи лабораторной работы
После выполнения данной работы студент должен:
1. Знать все операторы, используемые в программах.
2. Уметь применять любые из изученных операторов для написания своих модулей.
3. Уметь объяснить написанную программу.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система WINDOWS XP, электронные таблицы EXCEL с приложением в виде языка VISUAL BASIC FOR APPLICATIONS.
Общие теоретические сведения
1. Решение задач на линейный процесс
Для решения задач необходимо уметь переводить функции arcsin x,
arccos x, arcctg x через arctg х, т.к. данных функций нет в VBA.
Формулы для перехода к arctg(x) приведены ниже:
Arcsin
x = arctg
;
Arccos x =
/2
- arctg
;
Arcctg x =
/2
– arctg x
Решим задачу на линейный процесс с использованием операторов присваивания для задания значений переменным.
Пример 1. Вычислить значение с, если значения переменных a и b заданы.
Sub Main()
Dim a, b, c As Single
a=2: b:=3:c=a^2+sqr(b)
MsgBox “c=”&CStr(c)
End Sub
Вычислить z в следующих уравнениях самостоятельно:
2. РЕШЕНИЕ ЗАДАЧ НА РАЗВЕТВЛЯЮЩИЙСЯ ПРОЦЕСС
Sub Main()
Dim х, а, у Аs single
х = InputBox("введите значения для х с клавиатуры")
а = InputBox ("введите значения для а с клавиатуры")
If х < -а Тhen у = -х - а _
Еlse If x > а Тhen у = х - а_
Еlse у = Sqr(а ^2 - х ^ 2)
МsgВох "у=" + CStr(у)
End Sub
Вычислить у по заданным а и х:
Sub Main()
Соnst рi Аs Doublе = 3.1418
Dim х, а, у Аs Single
х = InputBox("введите значения для х с клавиатуры")
а = InputBox ("введите значения для а с клавиатуры")
If x >= рi / 2 Тhen у = Ехр(х) + 0.43429 * Log(Аbs(а * х + 3 * х)) _
Еlsе If х <= -рi / 2 Тhen у = Аtn(х) + 7 * х * а _
Е1sе у = Sqr(Аbs(х ^ 3 + 3 * х)) + Sin(х) + 3 * а
МsgВох "у=" + СStr(у)
Еnd Sub
3. Решение задач на циклический процесс
Очень часто под одним именем хранится большой массив данных, а потому приходится использовать у имени массива индекс, который показывает номер элемента последовательности, с которым работаем.
Рассмотрим работу операторов циклического процесса на примерах.
Задача 1
Вычислить произведение элементов, стоящих на нечётных местах в последовательности с(20), используя оператор Dо While_1оор.
Sub Main()
Dim I As Integer
Dim р, с(20) Аs Single
р = 1
i=1
Do While i<20
с( i) = InputВох("введиге значение для с( i) с клавиатуры")
р = р*с(i)
i=i + 2
Lоор
МsgВох "произведение элементов на нечетных местах=" + СStr(р)
End Sub
4. Работа с данными рабочего листа excel
Пример 1. Вычислить у по заданным на рабочем поле Excel а и х.
Private Sub CommandButtonl_Click()
Dim x As Integer, у As Integer, a As Integer
x = Лист1.Range("A2").Value
a = Лист1.Range("B2").Value
If x >= 2 Then
у = а*х^2 + Log(x)
Else
If (x > -2) And (x < 2) Then
у = Sin(x) - a * x ^ 3
Else
у = Log(Abs(x ^ 3-3*х^2-7*а))
End If
End If
Лист1.Range("C2").Value = у
End Sub
Пример 2. Вычислить у по заданным на рабочем листе а и х.
Private Sub CommandButton1_Click()
Dim x, y As Integer
X= Лист1.Range (“B2”). Value
A=Лист1.Range (“A2”).Value
Select Case A
Case Is >=x
Y = 0
Case Is <= -x
Y=X-A
Case Else
Y=SQR(A^2-X^2)
End Select
Лист1.Range (“C2”).Value=Y
End Sub
Пример 3. Вычислить сумму элементов массива а(30), значения которых лежат в диапазоне [2,5].
Private Sub CommandButton1_Click()
Dim а (30) Аs 1ntegег, i, k, sum Аs Integег
'внесение в массив значений элементов массива с рабочего листа
i = 1
Dо Whi1е i <= 30
а(i) = Се11s( (i + 1) , 1)
i = i + 1: Lоор
i =1
k = 1
sum = 0
Dо Whi1е i <= 30
If а(i) >= 2 And а(i) <= 5 Then
Лист1.Rаngе("В" & k + 1).vа1ue = i
k = k + 1
sum= sum + а (i)
End If
i=i + 1
Lоор
Лист1.Rаngе("С2").vа1uе = sum
End Sub
Privatе Sub СоmmandВutton2_С1iсk ()
Dim i Аs Integег
i = 1
Dо Whi1е i <= 30
Се11s ( (i + 1) , 2) = " "
i = i + 1
Lоор
Се11s (2, 3) = " "
End Sub
Можно использовать оператор цикла For _ Next. Тогда программа примет вид, приведенный ниже:
Private Sub CommandButton1_Click()
Dim a(10) As Integer, i, k, sum As Integer
For i=0 to 9
a(i) = Cells((i + 1), 1)
Next i
k = 1
sum = 0
For i=0 to 9
If a(i) >= 2 And a(i) <= 5 Then
Лист1.Range("b" & k + 1).Value = i
k = k + 1
sum = sum + a(i)
End If
Next i
Лист1.Range("c2").Value = sum
End Sub