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

Loop

Do Until Condition

  statements

Loop

С постусловием

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

Loop

 

Контрольные вопросы для самопроверки

  1. Что такое «цикл»? Какие циклы вы знаете?
  2. Какова классификация циклов и области использования?
  3. Что такое «тело цикла»?
  4. Какие циклы называются «итерационными»?
  5. Как сформировать цикл «For»? Как он работает?
  6. Как сформировать цикл «Do»? Как он работает?
  7. Чем отличаются циклы с пред- и постусловиями?
  8. Чем отличаются циклы «While» и «Until»? Являются ли они взаимозаменяемыми?
  9. Как предотвратить бесконечный цикл?
  10. Что такое «вложенный цикл»? Приведите примеры.