|
Программирование >> Структурное программирование
Рис. 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;
Рис. 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 любое ненулевое значение.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |