Цикл представляет собой неоднократное выполнение одного и того же оператора или группы операторов. Различают циклы с заранее известным количеством повторений и циклы с неизвестным количеством повторений. Для их реализации используются различные циклические операторы.
Если количество повторений в цикле известно, то его проще реализовать с помощью оператора For…Next. Его синтаксис следующий:
For счётчик=нач_знач To конечн_знач Step шаг
операторы
Next счётчик
В этом операторе «счётчик» является, как правило, целочисленной переменной, которой в начале цикла присваивается значение нач_знач. После того как операторы цикла, расположенные до строки Next, выполнятся один раз, значение счётчика увеличится либо на величину шага, либо на единицу, если шаг не задан. После этого, если величина счётчика меньше или равна значению конечн_знач, операторы цикла снова выполняются.
Например, следующий фрагмент кода вычисляет факториал числа.
Dim i,n,m As Integer
Input n
m = 1
For i = 1 To n
m = m*i
Next i
Следующий фрагмент кода выводит на печать всё содержимое массива и демонстрирует использование встроенных функций Lbound(), Ubound() для получения значений индексов массива.
Dim aArray(11 To 23)
For i = Lbound(aArray) To Ubound(aArray)
Print aArray(i)
Next i
Если количество циклов заранее неизвестно, то оно должно зависеть от какого-то условия, чтобы не получился бесконечный цикл. Для таких циклов используется оператор цикла Do…Loop.
Ниже представлен синтаксис оператора с проверкой условия в начале цикла.
Do While условие
операторы
Loop
Сначала проверяется выполнение условия, если условие сразу оказывается ложным, то операторы внутри цикла не выполняются ни разу. Если условие истинно, то выполняются операторы внутри цикла, после чего условие проверяется вновь. Очевидно, операторы внутри цикла должны как-то влиять на истинность условия, иначе получится либо бесконечный цикл, либо он не выполниться ни разу. Ниже представлен фрагмент кода для подсчёта количества введённых чисел, сумма которых превышает 100.
Dim n,m,sum As Integer
sum = 0
n = 0
Do While sum< = 100
Input m
sum = sum + m
n = n + 1
Loop
Print “количество введённых числе =”,n
Имеется ещё один оператор с проверкой условия в начале цикла.
Do Until условие
операторы
Loop
Здесь операторы внутри цикла выполняются до тех пор, пока условие не станет истинным. Предыдущий вариант кода можно переписать так:
Dim n,m,sum As Integer
sum = 0
n = 0
Do Until sum> 100
Input m
sum = sum + m
n = n + 1
Loop
Print “количество введённых числе =”,n
Иногда необходимо выполнить операторы внутри цикла не менее одного раза, например, при реализации проверки правильности введённого пароля. В этом случае необходимо использовать операторы цикла с проверкой условия в конце цикла. Синтаксис таких операторов представлен ниже.
Do
операторы
Loop While условие
Do
операторы
Loop Until условие
Следующий фрагмент иллюстрирует принцип работы указанных операторов.
Dim password As String
Do
Input password
Loop Until password=”abrakadabra”
В ряде случаев, при возникновении определённой ситуации, приходится принудительно прекращать выполнение цикла. Для этого предусмотрен оператор выхода из цикла Exit. Он прекращает выполнение цикла и передаёт управление следующему за циклом оператору.
Контрольные вопросы
1. Какие виды циклов встречаются при алгоритмизации вычислений?
2. Каков синтаксис оператора For…Next?
3. Каков синтаксис оператора Do…Loop с предусловием?
4. Каков синтаксис оператора Do…Loop с постусловием?
5. В чём разница между операторами Do…Until и Do…While?
6. Какой оператор позволяет прервать выполнение цикла и передать управление следующему оператору?