5. ЦИКЛЫ
Одно из преимуществ программирования на компьютере – возможность многократного использования некоторого набора написанных ранее инструкций. Специальные команды, которые располагаются в начале и в конце набора инструкций и обеспечивают их повторное выполнение, называются циклами, а многократно повторяющийся набор инструкции – тело цикла.
В Visual Basic существуют два основных типа циклов – циклы со счетчиком и циклы с условием. Циклы со счетчиком используют, когда необходимо выполнить тело цикла определенное количество раз, а циклы с условием – повторение в зависимости от некоторого постороннего условия.
Циклы со счетчиком еще называют циклами «For», по имени оператора, с помощью которого он формируется:
For CounterVar =
StartNum To EndNum [Step StepNum]
Statements
Next [CounterVar]
· For – ключевое слово Visual Basic, обозначающее начало цикла.
· CounterVar – определенная пользователем переменная счетчика цикла.
· StartNum – начальное значение счетчика.
· To – ключевое слово Visual Basic, разделяющее «StartNum» и «EndNum».
· EndNum – значение счетчика, после которого цикл завершается.
· Step – ключевое слово, используемое при указании шага цикла. Необязательный аргумент.
· StepNum – значение шага цикла, т.е. значение, на которое увеличивается значение счетчика на каждом шаге. Это число может быть отрицательным.
· Statements – любая группа операторов, выполняемая на каждом шаге цикла.
· Next [CounterVar] – оператор, обозначающий конец цикла «For». Указывать в нем переменную счетчика не обязательно, хотя рекомендуется.
Значения «StartNum», «EndNum», «StepNum» могут быть переменными или константами любого числового типа. Переменная «CounterVar» также может быть любого числового типа. Ее можно использовать для расчетов внутри тела цикла в качестве полноценной переменной. Это особенно полезно для работы с массивами, но в этом случае счетчик должен быть любого целого типа.
Примечания: |
1. Если начальное значение счетчика будет меньше конечного при положительном шаге и, наоборот, будет меньше при отрицательном шаге, то тело цикла ни разу не выполнится. 2. При отсутствии параметра «StepNum» шаг всегда принимается равным 1. |
Циклы «For» очень удобно использовать при работе с массивами. Например, для заполнения массива случайными числами от 0 до 100, можно воспользоваться следующим синтаксисом:
Dim Mas(1 To 1000) As
Integer
…
For i = 1 To 1000
Mas(i) = Int(Rnd(1) * 101)
Next i
Примечание |
Описание работы применяемых функций приведено в «Приложении». |
Циклом с условием является цикл «Do…Loop». Такие циклы также называют циклами с неизвестным числом повторений или итерационными. Он продолжает свою работу в зависимости от состояния условия. Главной особенностью таких циклов является наличие условия, т.е. любого логического выражения, функции или переменной, принимающих значения True или False. Двумя основными циклами с условиями являются: цикл «Do…While», который выполняется до тех пор, пока условие сохраняет значение True, и цикл «Do…Until», работающий, пока условие не станет равным True.
Для вышеописанных циклов различают циклы с пост- и предусловием. Различаются они тем, где именно в цикле записывается условие, при этом принцип работы циклов не меняется. Синтаксис циклов приведен в табл. 9.
Таблица 9
Синтаксис итерационных циклов
|
Do…While |
Do…Until |
С предусловием |
Do While Condition statements |
Do Until Condition statements |
С постусловием |
Do statements Loop While Condition |
Do statements Loop Until Condition |
Примечание |
Единственным отличием циклов с пред- и постусловием является то, что в первом случае тело цикла может не выполнить ни одного раза, а во втором случае тело цикла всегда выполнится хотя бы один раз. |
Циклы с условием можно применять при работе с текстовыми файлами. В этом случае информация будет считываться до тех пор, пока не будет достигнут конец файла (синтаксис см. раздел «Сохранение и считывание информации»).
Иногда возникает необходимость досрочного прерывания цикла. Для этого в необходимом месте тела цикла записывают оператор «Exit For» или «Exit Do» в зависимости от вида прерываемого цикла. Как только компьютер встречает этот оператор, то цикл прерывается и управление передается оператору следующим за оператором «Next» или «Loop».
В некоторых случаях важно повторить подзадачу несколько раз внутри более общей задачи. Один из способов написания такой программы – включить в цикл набор инструкций (внутренний цикл), которые повторяются внутри другого цикла (внешний цикл). Такая структура, состоящая из цикла в цикле, называется вложенными циклами. Любой цикл может быть вложен в любой другой независимо от их видов. Например, можно вложить цикл «For» в любой цикл «Do…Loop» и наоборот:
Do While condition
For CounterVar = StartNum To EndNum
…
Next CounterVar
Контрольные
вопросы для
самопроверки