Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [ 23 ] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

10.4. Операторы цикла Do-Loop

В VBA для организации циклов с неизвестным заранее числом шагов используются и другие операторы цикла: Do While-Loop, Do Until-Loop, Do-Loop While и Do-Loop Until.

Оператор имеет следующий синтаксис:

While УСЛОВИЕ

БЛОК ОПЕРАТОРОВ Wend

Цикл While-Wend обеспечивает многократное выполнение блока операторов, пока УСЛОВИЕ принимает значение True.

Приведенная ниже функция Доход 2 вычисляет то же значение, что и функция Доход, но с использованием цикла While-Wend.

Option Base I

Function Доход 2 (процент As Double, платеж As Variant,

год As Variant) As Double Dim i, j, n As integer, s As Double n = платеж .Rows .Count s = 0 i - I

While i <= n

s = s + платеж(1)/(1 + процент)

((год(i) - год (1))/365)

i = i + 1 Wend

Доход 2 = s End Function

Рассмотрим еще один пример выравнивания по центру содержимого всех ячеек, начиная с активной, сверху вниз, до тех пор, пока не встретится пустая ячейка ([1]).

1 = 0

While ActiveCell .Change (i, 0) oEmpty

ActiveCell.Cell(i , 0) .HorizontalAlignment=xlCenter

1=1 + 1

Wend



Перечисленные операторы имеют следующий синтаксис:

Do While УСЛОВИЕ

БЛОК ОПЕРАТОРОВ

[Exit Do]

БЛОК ОПЕРАТОРОВ Loop

Do Until УСЛОВИЕ

БЛОК ОПЕРАТОРОВ

[Exit Do]

БЛОК ОПЕРАТОРОВ Loop

БЛОК ОПЕРАТОРОВ [Exit Do] БЛОК ОПЕРАТОРОВ Loop While УСЛОВИЕ

БЛОК ОПЕРАТОРОВ [Exit Do] БЛОК ОПЕРАТОРОВ Loop Until УСЛОВИЕ

Оператор Do While-Loop обеспечивает многократное выполнение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор Do Until-Loop - пока УСЛОВИЕ не соблюдается. Операторы Do-Loop While и Do-Loop until отличаются от перечисленных выше двух операторов тем, что сначала блок операторов выполняется по крайней мере один раз, а потом проверяется УСЛОВИЕ. Оператор Exit Do обеспечивает досрочный выход из оператора цикла.

Приведем пример использования цикла Do-Loop While при нахождении корня уравнения /(х) = О методом Ньютона ([2]). Для нахождения приближенного значения корня уравнения методом Ньютона необходимо задать начальное приближение хо, а затем определить последующие приближения к корню методом итераций по формуле



" "- /<-.-,)•

гдеп =1, 2, ...

Процесс останавливается при выполнении неравенства I Хп - 1 < £, где £ - точность определения корня.

В следующей программе методом Ньютона решается уравнение jc = 2 ([2]). За начальное приближение к корню взято число 3, а корень вычисляется с точностью до 0,00001. Найденное значение корня с помощью метода ActiveCell выводится в активную ячейку.

Option Explicit

Function F(x As Double) As Double

F = X 2 - 2 Уравнение f (x) = x2-2 = 0

End Function

Function DF(x As Double) As Double

DF = 2 * X Производная функции f(x)

End Function

Sub MN ( )

Const Eps = 0.00001 Точность определения корня Dim xO, X As Double

X = 3

xO = X

X = X - F(x)/DF(x)

Loop While Abs(x - xO) > Eps ActiveCeLl.Value = x End Sub

Примером использования цикла Do-Loop Until может служить следующая программа нахождения корня уравнения Дх) = О методом деления отрезка пополам ([2]). В этой программе находится корень уравнения = 2 с точностью до £ = 0,00001. За отрезок начальной локализации корня берется отрезок (О, 2).

Function F (х)

F = X 2 - 2 уравнение f(x)= х2-2=0 End Function

Sub ВМ ( )

Dim с, FC As Double

Dim a, b, Eps, BM As Double



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [ 23 ] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57