122 Глава 2
Типичная ошибка программирования 2.14
Размещение точки с запятой сразу после правой закрывающей скобки заголовка for делает тело структуры пустым оператором. Обычно это логическая ошибка.
Части структуры for — задание начального значения, условие продолжения цикла и изменение переменной могут содержать арифметические выражения. Например, предположим, что x = 2 и у = 10. Если x и у не изменяются в теле цикла, то оператор
for (int j = x; j <= 4 * x * у; j += у / x)
эквивалентен оператору
for (int j = 2; j <= 80; j += 5)
«Приращение» структуры for может быть отрицательным (в этом случае в действительности происходит не приращение, а уменьшение переменной, управляющей циклом).
Если условие продолжения цикла с самого начала не удовлетворяется, то операторы тела структуры for не выполняются и управление передается оператору, следующему за for.
Управляющая переменная иногда печатается или используется в вычислениях в теле структуры for, но обычно это делается без изменений ее величины. Чаще управляющая переменная используется только для контроля числа повторений и никогда не упоминается в теле структуры.
Хороший стиль программирования 2.19
Хотя управляющая переменная может изменяться в теле цикла for, избегайте делать это, так как такая практика приводит к неявным, неочевидным ошибкам.
Структура for изображается на блок-схеме очень похоже на структуру while. Например, блок-схема оператора
for (int counter = 1; counter <= 10; counter++) cout « counter « endl;
приведена на рис. 2.19. Эта блок-схема ясно показывает, что задание начального значения производится только один раз и что изменение переменной происходит каждый раз после выполнения оператора тела цикла. Заметьте, что (не считая маленьких окружностей и стрелок) блок-схема содержит только символы прямоугольников и ромбов. Представим себе снова, что программист имеет доступ к глубокому бункеру, содержащему пустые структуры for — столько, сколько может потребоваться программисту для пакетирования и вложения в другие управляющие структуры, чтобы структурированно отобразить управляющую логику алгоритма. И затем эти прямоугольники и ромбы заполняются необходимыми действиями и условиями выбора в соответствии с алгоритмом.
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции