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

2.14. Структура повторения for (цикл)

Структура повторения for содержит все элементы, необходимые для по­вторения, управляемого счетчиком. Чтобы проиллюстрировать мощь струк­туры for, давайте перепишем программу рис. 2.16. Результат этого пред­ставлен на рис. 2.17. Ниже описана работа этой программы.

Когда структура for начинает выполняться, управляющей переменной counter задается начальное значение 1. Затем проверяется условие продол­жения цикла counter <= 10. Поскольку начальное значение counter равно 1, это условие удовлетворяется, так что оператор тела структуры печатает зна­чение counter, равное 1. Затем управляющая переменная counter увеличи­вается на единицу в выражении counter++ и цикл опять начинается с про­верки условия его продолжения. Поскольку значение counter теперь 2, предельная величина не превышена, так что программа снова выполняет тело цикла. Этот процесс продолжается, пока управляющая переменная counter не увеличится до 11 — это приведет к тому, что условие продолжения цикла нарушится и повторение прекратится. Выполнение программы про­должится с первого оператора, расположенного после структуры for (в данном случае с оператора return в конце программы).

Рис. 2.18 в сжатом виде показывает структуру for из программы рис. 2.17. Заметьте, что структура for «делает все» — она определяет каждый элемент, необходимый для повторения, управляемого счетчиком с управляю­щей переменной. Если в теле for имеется более одного оператора, то для определения тела цикла требуются фигурные скобки.

Отметим, что рис. 2.17 использует условие продолжения цикла counter <= 10. Если программист некорректно напишет counter < 10, то цикл выполнится всего 9 раз. Это типичная логическая ошибка, называемая ошибкой занижения (или завышения) на единицу.

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

Использование неправильной операции отношения или использование неправиль­ного конечного значения счетчика цикла в условиях структур while или for может приводить к ошибке занижения (или завышения) на единицу.