End Sub. Результат выполнения программного кода цикла с предусловием с использованием универсального оператора цикла DO LOOP представлен на рисунке 11.5

 

Результат выполнения программного кода цикла с предусловием с использованием универсального оператора цикла DO … LOOP представлен на рисунке 11.5. Фрагмент программного кода данного примера отображается на форме внутри элемента управления типа Label (метка).

 

 

Рис. 11.5. Форма для примера 3 (Цикл-Пока)

 

Для реализации так называемого цикла со счётчиком (с параметром) используется оператор FOR … NEXT (см. ). Блок-схема соответствующей алгоритмической структуры показана на рисунке 11.6. По сути, это частный случай цикла с предусловием. При этом действие, изменяющее значение счётчика с заданным шагом, вынесено из тела цикла непосредственно в заголовок (символ подготовки).

 

Рис. 11.6. Цикл с параметром

Фрагмент программного кода для примера 4 на языке VBA

Dim strY As String * 15

Dim strX As String * 7

Dim I As Integer

Rad = Atn(1) * 4/180 'коэффициент для перевода градусной меры угла в радианы

I = 0

For x = -180 To 180 Step 10

I = I + 1

strI = I

strX = x

ModX = Abs(x)

If ModX>89 And ModX<91 Or ModX>269 _

And ModX<271 Then

strY = "-Нет решения"

Else

Y = b ^ sin(a ^ 2) / cos(x * Rad) - d

strY = Y

End If

lbxТабуляция.AddItem strI + "| " + _

strX + "| " + strY

Next x

 

Результаты выполнения программного кода цикла с параметром с использованием оператора цикла FOR … NEXT представлены на рисунке 11.7.

 

Рис. 11.7. Форма (Пример 4) с результатом работы цикла с параметром

 

Кроме того *, в VBA имеется очень похожий на цикл со счётчиком оператор For Each … Next, который повторяет тело цикла для каждого элемента массива или коллекции объектов. При работе с коллекциями (наборами однотипных объектов) количество элементов может быть неизвестно, а концепция начального и конечного значений – не иметь смысла. В таких случаях использование цикла For Each … Next является наиболее предпочтительным.

 

11.5 Оператор цикла FOR … NEXT

 

Оператор цикла FOR … NEXT используется, когда число повторений заранее известно, и определяется оно значениями счётчика (параметра) цикла: начальным, конечным и шагом (приращением). Оператор имеет следующий синтаксис:

 

FOR переменная_цикла = начало TO конец [STEP приращение]

[блок_операторов]

[EXIT FOR]

NEXT [переменная_цикла [,переменная_цикла]...]

 

Здесь переменная_цикла – числовая переменная, используемая как счетчик или параметр цикла; начало и конец – выражения, задающие начальное и границу конечного значения переменной цикла; приращение – значение, прибавляемое к переменной цикла при каждом следующем шаге цикла. Если необязательная часть оператора (STEP приращение) не указывается, то приращение принимается равным единице. Количество повторений тела цикла FOR … NEXT определяется целым (без округления!) числом, определяемым формулой (конец – начало) / приращение + 1.

Тело цикла может содержать любую последовательность вложенных алгоритмических структур, имеющих один вход и один выход, в том числе и вложенные циклы. Синтаксис оператора предусматривает также досрочный выход из цикла (EXIT FOR) *.

Несколько вложенных циклов могут закрываться одним ключевым словом NEXT и указанием имён счётчиков всех требующих закрытия циклов в порядке, обратном их открытию.

Рассмотрим работу оператора FOR … NEXT на примере следующего фрагмента программы:

 

ForI= Старт To Стоп

lsbРезультат.AddItem I

NextI

Щелчок по кнопке позволяет вызвать форму (рис. 5), на которой можно указать начальное (Старт) и конечное (Стоп) значения счётчика и увидеть соответствующий результат выполнения программы.

 

Программный код примера 5 на алгоритмическом языке VBA

 

Private Sub cmbStart_Click()

Dim I As Integer

Dim Старт As Integer

Dim Стоп As Integer

Старт = txtIstart.Value

Стоп = txtIstop.Value

For I = Старт To Стоп

lsbРезультат.AddItem I

Next I

lblВывод.Caption = "* Значение счётчика по завершении цикла ="& I