|
Программирование >> Структурное программирование
Повторение, управляемое счетчиком, со структурой for tinclude <iostream.h> main() { задание начального значения, условие повторения и приращение - все это включено в заголовок структуры for for ( int counter = 1; counter <= 10; counter++) cout counter << endl; return 0; успешное окончание Рис. 2.17. Повторение, управляемое счетчиком, со структурой for управляющей переменной Конечное значение управляющей переменной for (Int comster 1; counter < 10; countar++) Ключевое слово for Начальное значение управляющей переменной Приращение управляющей переменной Рис. 2.18. Компоненты типичного заголовка for Хороший стиль программирования 2.17 Использование конечного значения управляющей переменной в условиях структур while и for и использование операции отношения <= поможет избежать ошибок занижения на единицу. Например, для цикла, используемого при печати чисел от 1 до 10 условие продолжения цикла следует записать counter <= 10, а не counter < 10 (что является ошибкой занижения на единицу) или counter < 11 (что тем не менее корректно). Общая форма структуры for: for {выражение!; выражение2; выражениеЗ) оператор где выражение! задает начальное значение переменной, управляющей циклом, выражение2 является условием продолжения цикла, а выражениеЗ изменяет управляющую переменную. В большинстве случаев структуру for можно представить эквивалентной ей структурой while следующим образом: выражение!; while (выражениеЗ) { оператор выражениеЗ; Исключения из этого правила будут рассмотрены в разделе 2.18. Иногда выражение! и выражениеЗ представляются как списки выражений, разделенных запятой. В данном случае запятая используется как операция запятая или операция последования, гарантирующая, что список выражений будет вычисляться слева направо. Операция последования имеет самый низкий приоритет среди всех операций С-Н-. Значение и тип списка выражений, разделенных запятыми, равны значению и типу самого правого выражения в списке. Операция последования наиболее часто используется в структуре for. Ее основное назначение - помочь программисту использовать несколько выражений задания начальных значений и (или) несколько выражений приращения переменных. Например, в одной структуре for может быть несколько управляющих переменных, которым надо задавать начальное значение и которые надо изменять. Хороший стиль программирования 2.18 Помещайте в разделы задания начальных значений и изменения переменных структуры for только выражения, относящиеся к управляющей переменной. Манипуляции с другими переменными должны размещаться или до цикла (если они выполняются только один раз подобно операторам задания начальных значений), или внутри тела цикла (если они должны выполняться в каждом цикле, как, например, операторы инкремента или декремента). Выражения в структуре for являются необязательными. Если выраже-ние2 отсутствует, С-Н- предполагает, что условие продолжения цикла всегда истинно и таким образом создается бесконечно повторяющийся цикл. Иногда может отсутствовать выражение!, если начальное значение управляющей переменной задано где-то в другом месте программы. Может отсутствовать и выражениеЗ, если приращение переменной осуществляется операторами в теле структуры for или если приращение не требуется. Выражение для приращения переменной в структуре for действует так же, как автономный оператор в конце тела for. Следовательно, все выражения counter = counter + 1 counter += 1 ++counter counter++ эквивалентны в той части структуры for, которая определяет приращение. Многие программисты предпочитают форму counter-Ь-Ь, поскольку приращение срабатывает после выполнения тела цикла. Поэтому постфиксная форма представляется более естественной. Поскольку изменяемая переменная здесь не входит в какое-то выражение, обе формы инкремента равноправны. В структуре for должны применяться точки с запятой. Типичная ошибка программирования 2.13 Использование запятых вместо точек с запятой в заголовке структуры for. Типичная ошибка программирования 2.14 Размещение точки с запятой сразу после правой закрывающей скобки заголовка for делает тело структуры пустым оператором. Обычно это логическая ошибка. Части структуры for - задание начального значения, условие продолжения цикла и изменение переменной могут содержать арифметические выражения. Например, предположим, что х = 2иу=10. Если х и у не изменяются в теле цикла, то оператор for (int j =х; j <=4 *х*у; j +=у/х) эквивалентен оператору 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 - столько, сколько может потребоваться программисту для пакетирования и вложения в другие управляющие структуры, чтобы структурированно отобразить управляющзо логику алгоритма. И затем эти прямоугольники и ромбы заполняются необходимыми действиями и условиями выбора в соответствии с алгоритмом. 2.15. Пример использования структуры for Следующие примеры покажут способы изменения управляющей переменной в структуре for. В каждом случае мы напишем соответствующий
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |