Рекуррентными называются такие зависимости, в которых последующие значения могут быть вычислены на основании предыдущих значений.
Например, числа Фибоначчи задаются никак иначе чем через рекуррентную формулу .
Реализация этой рекуррентной зависимости может быть осуществлена с помощью циклического оператора, как показано ниже.
Dim i, n, f1, f2, fn As Integer
f1 = 1
f2 = 1
Input n
fn = 1
If n > 2 Then
Else
For i = 3 To n
fn = f1 + f2
f1 = f2
f2 = fn
Next i
End If
Print “число Фибоначчи равно”,fn
В первых двух операторах присваиваются начальные значения для первых двух чисел Фибоначчи. Затем вводится номер числа Фибоначчи, которое надо вычислить. Поскольку первые два числа Фибоначчи известны и равны 1, то за оператором ввода стоит оператор присваивания числу Фибоначчи единицы. Затем проверяется введённое значение и если оно больше 2, то в цикле по рекуррентному выражению вычисляется новое значение числа Фибоначчи. Начальное значение счётчика в операторе цикла равно 3, так как третье число Фибоначчи равно сумме первого и второго, и следовательно при n=3 цикл должен выполниться только один раз.
Функции пользователя
Часть программы можно оформить в виде функции. Описание функции выглядит так:
Function ИмяФункции (СписокПараметров) As ТипДанныхФункции
Описание переменных
Блок операторов
End Function
Блок операторов должен обязательно содержать хотя бы один оператор присваивания ИмяФункции=
Вычисление функции заканчивается последним оператором, но если надо закончить вычисление раньше, то надо воспользоваться оператором Exit Function.
Например, вычисление дискриминанта квадратного уравнения мы можем оформить в виде функции.
Function Дискриминант(a, b, c As Single) As Single
Dim x As Single
X=4*a*c
Дискриминант=b^2-x
End Function
Тогда в программе вычисления корней квадратного уравнения можно было бы использовать следующий оператор: D=Дискриминант(a, b, c)
Если с помощью VBA описать таким образом какую-либо функцию в Excel, то ей можно будет пользоваться так же, как и любыми встроенными функциями. Эта функция будет находится в категории «Определенные пользователем».
Встроенные в Excel функции можно использовать при программировании если учесть, что все они являются методами объекта Application. Поэтому, чтобы в программе использовать, например, встроенную функцию Ln(), надо вызвать её так: Application.Ln().
Чтобы в Excel запрограммировать функцию пользователя надо вызвать редактор VBA.
Это делается через меню Сервис\Макрос\Редактор VisualBasic.
Сначала меню Вид\Окно проекта.
В левой части появившегося окна надо выделить строчку VBAProject(Книга1), а затем меню Вставка\Модуль.
В правой части появится окно Книга1-Модуль1(Программа), в котором и надо написать определение функции.
Не закрывая окна надо щелкнуть в панели инструментов по кнопке «Object Browser»(Просмотр объектов), найти в нём имя функции, щелкнуть по нему правой кнопкой и выбрать пункт Properties(Свойства). В появившемся окне надо коротко написать, что делает эта функция. Это описание будет появляться, когда пользователь выберет эту функцию в Excel.
Рассмотрим создание функции пользователя для вычисления суммы .
Function SpecialSum(m As Integer) As Single
Dim S As Single
Dim n As Integer
S=0
For n=1 To m
S=S+n/(n^2+1)
Next n
SpesialSum=S
End Function
Контрольные вопросы
1. Что такое рекуррентная формула?
2. Как записать в виде рекуррентной формулы алгоритм вычисления чисел Фибоначчи?
3. Какие операторы VBA позволяют реализовать вычисления по рекуррентным формулам?
4. Как задаётся описание функции при программировании на VBA?
5. Как с помощью VBA создать в Excel функцию пользователя?