Рассмотрим пример создания функции пользователя, вычисляющей следующую функцию с двумя условиями:
Программа функции пользователя вводится на лист модуля редактора Visual Basic и имеет вид:
Function G(y)
If y <= 0 Then G = (1 + y ^ 2)/(1 + y ^ 4)^(1/2) _
Else G = 2*y + Sin(y)^2/(2 + y)
End function
Заметим, что знак подчеркивания «_» в конце обозначает, что следующая строка является продолжением предыдущей. Перед знаком подчеркивания необходимо нажать клавишу пробел.
Пусть требуется найти значения данной функции в интервале [-2; 2] с шагом 0,1, используя функцию пользователя и формулу Excel а также построить графики функции, используя ее значения, полученные с помощью функции пользователя и формул Excel. Для этого необходимо:
· ввести в ячейки A1, B1, C1 имена аргумента y и функций g 1(y), g 2(y) соответственно;
· ввести значения ряда независимой переменой y в диапазон ячеек А2:А42;
· в ячейку В2 вставить формулу =G(A2), используя функцию пользователя G, с помощью мастера функций (рис. 10.4);
· скопировать формулу =G(A2), из ячейки В2 в диапазон В3:В42.
Рис. 10.4. Вставка функции пользователя G с помощью мастера функций
Тот же результат можно получить, если ввести в ячейку С2 формулу
=ЕСЛИ (А2<=0; (1+А2 ^ 2) / (1+A2 ^ 4) ^ (1/2); 2*A2+SIN(A2) ^ 2/ (2+A2))
и скопировать ее в диапазон ячеек C3:C42.
Чтобы построить графики функций g 1(y), g 2(y) необходимо воспользоваться мастером диаграмм, выполнив команду Вставка~Диаграмма…~ или нажав кнопку Мастер диаграмм на панели инструментов Стандартная. На первом шаге мастера диаграмм задается тип диаграммы Точечная, вид Сглаженная. На втором шаге мастера диаграмм вводится адрес исходного диапазона. Для функции g 1(y) исходным диапазоном будет диапазон А1:В42. Для функции g 2(y) в качестве исходного диапазона задается диапазон А1:А42; С1:С42 (для выделения несмежных диапазонов необходимо удерживать клавишу Ctrl). Значения и графики функций g 1(y) и g 2(y) приведены на рис. 10.5.
Рис. 10.5. Значения и графики функций g 1(y) и g 2(y).
Если формулы в рабочий лист введены верно, то значения и графики функций g 1(y) и g 2(y) должны совпадать.
В функции G использовался условный оператор If-Then-Else, обеспечивающий передачу управления в программе в зависимости от выполнения условия.
Синтаксис:
If УСЛОВИЕ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2
В операторе условия ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполнятся ОПЕРАТОР_2. УСЛОВИЕ – это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 10. 1.
Таблица 6. 1. Логические отношения
Операция | Название | Выражение | Результат |
= | Равно | A = B | True, если A равно B |
<> | Не равно | A <> B | True, если A не равно B |
> | Больше | A > B | True, если A больше B |
< | Меньше | A < B | True, если A меньше B |
>= | Больше или равно | A >= B | True, если A больше или равно B |
<= | Меньше или равно | A <= B | True, если A менше или равно B |
Сложные условия образуются из простых путем применения логических операций и круглых скобок. Список логических операций приведен в табл. 10.2.
Таблица 6.2. Логические операции
Операция | Название | Выражение | A | B | Результат |
Not | Логическое отрицание | Not A | False | True | |
True | False | ||||
And | Логическое И | A And B | True | True | True |
True | False | False | |||
False | True | False | |||
False | False | False | |||
Or | Логическое ИЛИ | A Or B | True | True | True |
True | False | True | |||
False | True | True | |||
False | False | False |
В условном операторе допустимо использование блока операторов вместо любого из операторов. В этом случае условный оператор имеет вид:
If УСЛОВИЕ Then
БЛОК_ОПЕРАТОРОВ_1
Else
БЛОК_ОПЕРАТОРОВ_2
End If
Ветвь Else в условном операторе является необязательной. Таким образом, возможен следующий синтаксис оператора условия:
If УСЛОВИЕ Then ОПЕРАТОР
If УСЛОВИЕ Then
БЛОК _ ОПЕРАТОРОВ
End If
Заметим, что в операторе УСЛОВИЕ после Then можно разместить несколько операторов, для того чтобы все они выполнялись, если условие истинно. В этом случае они должны располагаться в одну строчку и быть разделены двоеточием, например
If A > 10 Then A = A+1: B = B + A: C = C + B
В условном операторе может проверяться несколько условий. В этом случае условный оператор имеет вид:
If УСЛОВИЕ_1 Then
БЛОК_ОПЕРАТОРОВ_1
ElseIf УСЛОВИЕ_2 Then
БЛОК_ОПЕРАТОРОВ_2
ElseIf УСЛОВИЕ_3 Then
...
Else
БЛОК _ ОПЕРАТОРОВ
End If
В данном условном операторе выполняется БЛОК_ОПЕРАТОРОВ i,если истинно УСЛОВИЕ_i, в противном случае выполняется БЛОК_ОПЕРАТОРОВ.
Рассмотрим использование условного оператора и оператора Exit Function на примере функции пользователя, вычисляющей квадратный корень числа.
Function Sq(x)
If x < 0 Then Exit Function Else Sq = x^(1/2)
End Function