Программирование >>  Структурное программирование 

1 ... 40 41 42 [ 43 ] 44 45 46 ... 342


Повторение, управляемое счетчиком, со структурой 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. В каждом случае мы напишем соответствующий



1 ... 40 41 42 [ 43 ] 44 45 46 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика