Вопрос № 18. Циклы со счётчиком FOR…Next и циклы с условием While…Wend и Do…Loop Until. Вложенные циклы (цикл в цикле). Привести примеры.
Цикл – оператор или группа, которую программа выполняет до тех пор, пока не получит команду начать выполнять другого оператора.
Цикл со счётчиком – с известным числом повторений – используется в тех случаях, когда необходимо использовать оператор несколько раз.
1. Цикл со счётчиком For…Next
2. Цикл с предварительным условием While…Wend
3. Цикл с последовательным условием Do…Loop Until
4. Цикл For…Each. Для перебора объектов из группы подобных объектов (например, ячеек из диапазонов ячеек или элементов массива).
For Each элемент In группа (Selection)
Блок операторов
[Exit For]
Блок операторов
Next элемент
Данный оператор относится к категории вычисляемых циклов, когда известно заранее число повторений цикла, заданы начальное, конечное значения и шаг (приращение) изменения начального значения, т.е.:
Для каждого значения переменной этого цикла выполняется блок операторов, расположенных до ключевого слова Next. Затем происходит изменение переменной цикла (увеличение значения на шаг), проверяется полученное значение (не более указанного конечного значения) и повторяется выполнение блока операторов.
Если переменная цикла превысила значение конец, управление передается оператору, следующему за фразой Next.
В теле цикла может присутствовать оператор Exit For. При выполнении этого оператора прекращается цикл и управление также передается оператору, следующему за фразой Next. Цикл For-Next может быть вложенным.
Пример Оператор суммирует целые числа от 1 до N, причем величину N можно задать
Sub Sum ()
N=InputBox(“Введите число”)
S=0
For k=1 To N
S=S+1
Next k
End Sub
Оператор Do…Loop Until. Управляющий оператор Do…Loop Until используется для организации циклов с заранее неизвестным числом повторений. Оператор Do…Loop повторяется до тех пор, пока не выполниться какое-то произвольно заданное условие. Причем в цикле Do…Loop проверка условий для выхода из цикла может выполняться как перед началом чикла, так и после выполнения цикла. В следующем примере проверка выхода из цикла осуществляется перед выполнением самого цикла. Как только значение счетчика C достигнет 10, выполнение цикла прекращается. Таким образом цикл выполняется до тех пор, пока С<10 истинно TRUE, это достигается использованием ключевого слова While :
Sub El()
Dim C As Integer
C=0
Do While C<10
C=C+1
Loop
End Sub
Можно переделать приведенный пример так, чтобы выполнять цикл до тех пор, пока условие ложно. Это достигается использованием ключевого слова Until вместо While, но чтобы сохранить логику программы, следует так же изменить само условие C<10 на С>=10
Sub El()
Dim C As Integer
C=0
Do Until C>=10
C=C+1
Loop
End Sub
Можно выйти из цикла в любом его месте с помощью Exit Do.
Sub Ex2()
Dim B As Boolean, C As Integer, P As Integer
B = True
S = 0: P = 0
Do
C = 0
Do While C < 100
C = C + 1
P = P + S
If P > M Then
B = False
Exit Do
End If
Loop
S = S + 1
If S < 30 Or P > R Then B = True
Loop Until B = False
End Sub
Оператор цикла While – Wend используется для организации цикла с неизвестным заранее числом шагов. Синтаксис:
While Условие
Блок Операторов
Wend.
Цикл While-Wend обеспечивает многократное выполнение блока операторов, пока условие принимает значение True.