Оператор цикла For позволяет повторять группу операторов заданное число раз.
Синтаксис: For <счётчик_цикла> =<начало> To <конец> [Step <шаг>]
<тело цикла>
[Exit For]
. . .
Next [<счётчик_цикла>]
где <счётчик_цикла>— числовая переменная;
<начало> - начальное значение (выражение) переменной <счётчик_цикла>;
<конец>- заключительное значение (выражение) переменной <счётчик_цикла>;
<тело цикла>- это последовательность операторов, которая будет выполнена заданное число раз.
Порядок выполнения: переменной <счётчик_цикла>присваивается значение<начало>и проверяется условие: <начало>£<конец>;если условие неверно, то <тело цикла>не выполняется и управление передается на оператор, следующий за Next. Если же условие выполняется, то выполняется <тело цикла>, затем значение <счётчик_цикла>изменяется на значение <шаг> (увеличится в случае положительного значения <шаг>, и уменьшается при отрицательном значении <шаг>). Данный процесс будет выполняться пока значение <счётчик_цикла>не достигнет значения <конец> (если шаг положителен, цикл завершится, когда впервые выполнится условие:<счетчик_цикла>><конец>.Если шаг цикла отрицателен, условие его завершения: <счетчик_цикла>< <конец>). Досрочно завершить цикл For…Next можно и с помощью оператора Exit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.
Изображение в блок-схемах:
а
Пример: вычислить n-ый член последовательности, заданной формулой , если .
Public Sub prog3()
Dim n As Byte
Dim an As Integer,a1 As _ Integer, a2 As Integer
n=CByte(InputBox("n ="))
a1 = 1: a2 = 1
For i = 3 To n
an = a1 + a2
a1 = a2: a2 = an
Next i
MsgBox an
End Sub
Описание переменной типа Byte
Ввод значения переменной n (номера элемента последовательности) через окно ввода и преобразование введенного значения к типу Byte
Присваивание начальных значений переменным а1 и а2 (двоеточием разделяются операторы, записанные на одной строке)
Организация цикла For…Next, в котором счетчик i изменяется от 3 до n с шагом 1
Вычисление следующего члена последовательности как сумму двух предыдущих
Изменение последнего и предпоследнего значений последовательности на данный момент
Увеличение счетчика на 1 (конец тела цикла)
Блок-схема программы:
Рисунок 8 - Блок-схема программы prog3
Циклы с предусловием и постусловием
Циклы данного вида используются, когда заранее не известно сколько раз будет выполняться тело цикла.
Циклы с предусловием (Do While…Loop, While…Wend, Do Until…Loop) представлены в таблице 13, а операторы циклов с постусловием (Do…Loop While, Do…Loop Until) - в таблице 14.
Отличие циклов с предусловием от циклов с постусловием заключается в том, что тело цикла первых может не выполниться ни разу, в то время как тело цикла с постусловием всегда выполнится хотя бы один раз.
Таблица 13 – Циклы с предусловием
Синтаксис
Do While <условие>
<тело цикла>
[Exit Do]
…
Loop
While <условие>
<тело цикла>
Wend
Do Unlil <условие><тело цикла>
[Exit Do]
…
Loop
Порядок выполнения
<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (TRUE) (цикл продолжается при истинном значении <условия>). Если <условие> ложно (FALSE), то выполняются операторы, стоящие за циклом. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
Изображение в блок-схемах
Таблица 14 - Циклы с постусловием
Синтаксис
Do
<тело цикла>
[Exit Do]
…
Loop While <условие>
Do
<тело цикла>
[Exit Do]
…
Loop Until <условие>
Порядок выполнения
<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (цикл продолжается при истинном значении <условия>). Если <условие> ложно, то выполняются операторы, стоящие за циклом. Предоставлена возможность досрочного выхода из цикла (это реализовано через Exit Do).
<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
Изображение в блок-схемах
Пример: организовать ввод последовательности целых чисел, пока их сумма не превысит целого числа m. Вывести количество введенных чисел.
Public Sub prog4()
Dim x As Integer, m As Integer
Dim s As Integer
Dim i As Integer
m=InputBox("Введите число m")
i = 1
s =InputBox("Введите 1 число")
Do While s <= m
i = i + 1
x=InputBox("Введите " & i & "число")
s = s + x
Loop
MsgBox ("Количество чисел " & i)
End Sub
Ввод предельного числа
Номер вводимого числа последовательности
Ввод первого числа последовательности
Цикл с предусловием: тело цикла выполняется пока условие s<=m имеет значение Истина (TRUE)
Тело цикла:
увеличение номера на 1
ввод очередного (i-го) значения
добавление введенного значения к предыдущему значению суммы
Конец тела цикла
Вывод значения переменной i