14. Виды циклов и их реализация на VBA

Цикл представляет собой неоднократное выполнение одного и того же оператора или группы операторов. Различают циклы с заранее известным количеством повторений и циклы с неизвестным количеством повторений. Для их реализации используются различные циклические операторы.

Если количество повторений в цикле известно, то его проще реализовать с помощью оператора 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. Какой оператор позволяет прервать выполнение цикла и передать управление следующему оператору?

Информатика


*****
© Банк лекций Siblec.ru
Формальные, технические, естественные, общественные, гуманитарные, и другие науки.