- •6.3. Переключатель
- •6.3.1. Формат записи в Паскале:
- •7. Структуры циклов
- •7.1. Цикл с параметром (счетчиком, с управляющей переменной)
- •7.1.1. На Паскале
- •7.2. Итерационные циклы
- •7.2.1. Циклы с предусловием
- •7.2.2. Циклы с постусловием
- •7.2.3. Вложенные циклы
- •7.2.4. Операторы break и continue
- •7.3. Краткие итоговые сведения
7.2.3. Вложенные циклы
Оператор, который выполняется в цикле, сам может быть циклом. Это относится ко всем видам циклов. В результате получаются вложенные циклы.
Механизм работы вложенных циклов удобнее всего рассмотреть на примере вложенных циклов с параметром. Пусть нам нужно описать работу электронных часов, начиная с момента времени 0 часов, 0 минут, 0 секунд. Значение минут станет равным 1 только после того, как секунды «пробегут» все последовательные значения от 0 до 59. Часы изменят свое значение на 1 только после того, как минуты «пробегут» все последовательные значения от 0 до 59. Таким образом, вывод всех значений времени от начала суток до конца суток может быть представлен следующим фрагментом программы (на Паскале):
For h:=0 to 23 do
For m:=0 to 59 do
For s:=0 to 59 do
Writeln(h,’:’,m,’:’,s);
7.2.4. Операторы break и continue
Для удобства реализации циклических структур в обоих языках введены операторы break и continue, применяемые внутри циклов. Они расширяют возможности использования циклов и улучшают структуру программы.
В процессе выполнения тела цикла до полного завершения цикла могут возникнуть дополнительные условия, требующие завершения цикла. В этом случае цикл может быть прекращен оператором break.
В ходе выполнения цикла может возникнуть условие, при котором необходимо пропустить все или некоторые действия, предусмотренные в цикле, не прекращая работу цикла совсем. Для этого используется оператор continue, который передает управление в ту точку программы, где проверяется условие продолжения или прекращения цикла.
Пример (на С++):
for (float x = -9; x < 14; x++)
{ cout << x << " "; if( x == 0 ) continue; cout << 1/x << "\n";
}
В данном примере производится расчет и вывод на экран обратных величин для чисел х от -9 до 13. Если х=0, то при вычислении 1/х возникнет ошибка деления на ноль. Во избежание этого мы проверяем в теле цикла х на равенство нулю, и когда х=0, мы пропускаем с помощью continue остаток тела цикла, где вычисляется 1/х .
7.3. Краткие итоговые сведения
Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами.
Цикл с предусловием (пока условие истинно) |
Цикл с постусловием (до истинности условия) |
|
|
|
|
|
|
|
|
|
|
|
|
Цикл со счетчиком (с параметром) For |
|
|
|
|
|
|
|
|
|
|