logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

134 Глава 2

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

Некоторые программисты всегда включают фигурные скобки в структуру do/while, даже если в них нет необходимости. Это помогает устранить двусмысленность, про­истекающую из совпадения предложений структуры while и структуры do/while, содержащей один оператор.

Типичная ошибка программирования 2.20

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

Программа на рис. 2.24 использует структуру do/while, чтобы напечатать числа от 1 до 10. Обратите внимание, что к управляющей переменной counter в проверке окончания цикла применяется инкремент в префиксной форме. Отметьте также использование фигурных скобок, заключающих единствен­ный оператор в теле do/while.

Блок-схема структуры do/while приведена на рис. 2.25. Она наглядно показывает, что условие продолжения циклов не проверяется, пока тело цикла не выполнится хотя бы один раз. Снова отметим, что (не считая ма­леньких окружностей и линий связи) блок-схема содержит только символы прямоугольников и ромбов. Снова представьте себе, что программист имеет доступ к глубокому бункеру, содержащему пустые структуры do/while — столько, сколько может потребоваться программисту для складывания их пачками и вложения в другие управляющие структуры, чтобы структури­рованно отобразить управляющую логику алгоритма. И снова эти прямо­угольники и ромбы заполняются необходимыми действиями и условиями выбора в соответствии с алгоритмом.

// Применение структуры повторения do/while #include <iostream.h>

main() {

int counter = 1;

do {

cout « counter « " "; } while (++counter <= 10);

return 0;

1 2 3 4 5 6 7 8 9 10

Рис. 2.24. Применение структуры do/while

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

135

Рис. 2.25. Структура повторения1о/>«Ы1е