Программирование >>  Структурное программирование 

1 ... 45 46 47 [ 48 ] 49 50 51 ... 342



Рис. 2.25. Структура повторенияйо/ Ь11е

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

Операторы break и continue изменяют поток управления. Когда оператор break выполняется в структурах while, for, do/while или switch, происходит немедленный выход из структуры. Программа продолжает выполнение с первого оператора после структуры. Обычное назначение оператора break - досрочно прерывать цикл или пропустить оставшуюся часть структуры switch (как на рис. 2.22). Рис. 2.26 демонстрирует прерывание в структуре повторения for. Когда структура if определяет, что х стал равен 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 нарушают аруктурное программирование. А поскольку результат работы этих операторов, как мы скоро увидим, может быть достигнут технологией структурного программирования, то эти программисты не применяют brealc и continue.



12 3 4 г ш1шт Цикл прерван при х == 5

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

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

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

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

только при X == 5

cout X ;

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

endl; return 0;

12346789 10

Использован continue для пропуска печати при х == 5 Рис. 2.27. Применение оператора continue в структуре for

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

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

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

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

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

main () {

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

break; прерывание цикла только при х == 5

cout X << ;

cout << endl << Цикл прерван при х == << х << endl; return 0;



выражение 1

выражение 2

выражение 1 && выражение 2

ненулевое

ненулевое

ненулевое

ненулевое

Рис. 2.28. Таблица истинности операции 8i8i (логическое И)

Теперь давайте рассмотрим операцию (логическое ИЛИ). Предположим, мы хотим обеспечить в некоторой точке программы, чтобы определенный путь расчета выбирался только в случае, когда хотя бы одно из двух условий истинно. В этом случае мы можем применить логическую операцию , например:

2.19. Логические операции

Пока мы изучили только простые условия, такие, как counter <= 10, total > 1000 и number 1= sentineYalue. Мы выражали эти условия в терминах операций отношения >, <, >=, <= и операций проверки на равенство == и 1=. Каждое решение принималось на основе одного условия. Если мы хотели в процессе принятия решения проверять несколько условий, мы должны были реализовывать эти проверки отдельными операторами или вложенными структурами if или if/else.

С++ предоставляет нам логические операции, которые могут использоваться для формирования сложных условий путем комбинирования простых условий. Логическими операциями являются && (логическое И), \\ (логическое ИЛИ) и ! (логическое НЕ, называемое также логическое отрицание). Рассмотрим примеры каждой из них.

Предположим, мы хотим обеспечить в некоторой точке программы, чтобы определенный путь расчета выбирался только в случае, когда два условия одновременно истинны. Тогда мы можем применить логическую операцию &&, например:

if (gender == 1 && age >= 65) ++seniorFemales;

Этот оператор if содержит два простых условия. Условие gender == 1 может проверяться, например, чтобы определить, является ли данное лицо женщиной. Условие age >= 65 проверяется, чтобы определить, является ли человек пожилым гражданином. Проверка этих двух простых условий выполняется первой, поскольку приоритет обеих операций == и >= выше, чем приоритет операции &&. Затем оператор if рассматривает комбинацию этих условий

(gender == 1) && (age >= 65)

Таблица на рис. 2.28 поясняет действие операции &&. Эта таблица показывает все четыре возможных сочетания комбинаций нулевого (false - ложь) и ненулевого (true - истина) значений первого и второго выражений. Подобные таблицы часто называются таблицами истинности. С++ воспринимает как О или как 1 все выражения, содержащие операции отношения, проверки на равенство или логические операции. Хотя С++ возвращает 1, если результат равен true, он воспринимает как true любое ненулевое значение.



1 ... 45 46 47 [ 48 ] 49 50 51 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика