Скачиваний:
60
Добавлен:
15.09.2014
Размер:
1.25 Mб
Скачать

2.18. Операторы break и continue

Операторы break и continue изменяют поток управления. Когда оператор break выполняется в структурах wbile, for, do/while или switch, происходит немедленный выход из структуры. Программа продолжает выполнение с пер­вого оператора после структуры. Обычное назначение оператора break — досрочно прерывать цикл или пропустить оставшуюся часть структуры switch (как на рис. 2.22). Рис. 2.26 демонстрирует прерывание в структуре повто­рения for. Когда структура if определяет, что x стал равен 5, выполняется оператор break. Это вызывает окончание работы оператора for и программа продолжает выполнение с cout после for. Цикл выполняется полностью толь­ко четыре раза.

Оператор continue в структурах while, for или do/while вызывает про­пуск оставшейся части тела структуры и начинается выполнение следующей итерации цикла. В структурах while и do/while немедленно после выпол­нения оператора continue производится проверка условия продолжения цикла. В структуре for выполняется выражение приращения, а затем осу­ществляется проверка условия продолжения. Ранее мы установили, что в большинстве случаев структура while может использоваться вместо for. Единственным исключением является случай, когда выражение приращения в структуре while следует за оператором continue. В этом случае приращение не выполняется до проверки условия продолжения цикла и структура while работает не так, как for. В программе на рис. 2.27 оператор continue ис­пользуется в структуре for, чтобы пропустить оператор вывода и начать следующую итерацию цикла.

Хороший стиль программирования 2.28

Некоторые программисты чувствуют, что break и continue нарушают структурное программирование. А поскольку результат работы этих операторов, как мы скоро увидим, может быть достигнут технологией структурного программирования, то эти программисты не применяют break и continue.

136

Глава 2

// Применение оператора break в структуре for #include <iostream.h>

main () {

for (int x = 1; x <= 10; x++) { if (x == 5)

break; // прерывание цикла только при x == 5 cout « x « " ";

cout « endl « "Цикл прерван при x == " « x « endl; return 0;

1 2 3 4

Цикл прервам при x == 5

Рис. 2.26. Применение оператора break в структуре for

// Применение оператора continue в структуре for #include <iostream.h>

for (int x = 1; x <= 10; x++) { if (x == 5)

continue; // пропуск оставшейся части цикла

// только при x == 5 cout « x « " ";

cout « endl « "Использован continue для пропуска печати при x

« endl; return 0;

5"

1 2 3 4 6 7 8 9 10

Использован continue для пропуска печати при x == 5

Рис. 2.27. Применение оператора continue в структуре for

Совет по повышению эффективности 2.5

При надлежащем использовании операторы break и continue выполняются быстрее, чем соответствующие приемы структурного программирования, которые мы скоро изучим.

Замечание по технике программирования 2.8

Имеется некоторое противоречие между стремлением к технике высококачественного программирования и стремлением к наилучшей эффективности программного обес­печения. Часто достижение одной из этих целей достигается за счет другой.

Управляющие структуры 137