Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

131 Глава 3

В этом примере осуществляется накопление суммы целых чисел от 1 до 10. При первом выполнении последовательности операторов i, равное 1, добавляется к пере- менной sum, которая поначалу равна 0. В операторе if переменная i увеличивается до 2 и, до тех пор, пока она меньше или равна max, выполняется безусловный переход к метке loop и значение i — на этот раз 2 — прибавляется к sum. Программа продолжа- ет работать, увеличивая i и прибавляя его к sum до тех пор, пока i не вырастет до 11, и поскольку условие if станет ложным, очередной возврат к loop выполнен не будет, и цикл завершится. Если вы запустите этот пример, то получите следующий вывод:

Последний пример можно переписать, используя то, что называется циклом for.

Этот пример достаточно наглядно демонстрирует работу цикла; однако он исполь- зует goto и вводит метку, чего обычно следует избегать. Вы можете достичь того же результата, и даже более того, если применяете следующий оператор, специально предназначенный для организации циклов.

Решения и циклы 132

Описание полученных результатов

Если вы скомпилируете и запустите это, то получите тот же вывод, что и в пред- ыдущем примере, но как видите, здесь код заметно меньше. Условия, определяющие операцию цикла, появляются в скобках после ключевого слова for. В этих скобках содержится три выражения, разделенные точкой с запятой.

  • Первое выражение выполняется один раз, в начале, и устанавливает начальное условие цикла. В данном случае переменной i присваивается значение 1.

  • Второе выражение — логическое — определяет, до каких пор должен выпол- няться оператор цикла (или блок операторов). Если второе выражение истин- но, цикл продолжает выполняться; когда оно ложно, он завершается и выпол- нение продолжается с оператора, расположенного за телом цикла. В данном случае оператор цикла в строке, следующей за for, выполняется до тех пор, пока значение i меньше или равно max.

  • Третье выражение выполняется после оператора цикла (или блока операто- ров), и в данном случае оно увеличивает i на 1 на каждой итерации. После того, как это выражение оценено, еще раз вычисляется второе выражение, чтобы проверить, должен ли цикл продолжаться.

На самом деле такой цикл — не совсем то же самое, что представлено в версии ЕхЗ_07 . срр. Вы можете убедиться в этом, если установите значение max равным О в обеих программах и запустите их опять. При этом вы увидите, что значение sum будет равно 1 в ЕхЗ_07 . срр и 0 — в ЕхЗ_08 . срр. Конечное значение i также будет различаться. Причина в том, что первая версия программы (с if и goto) всегда вы- полняет тело цикла, как минимум, один раз, потому что условие не проверяется до его конца. Цикл for работает иначе, поскольку его условие на самом деле проверяет- ся в начале.

Обобщенная форма цикла for выглядит следующим образом.

Конечно же, оператор_внутри_цикла может быть отдельным оператором или блоком операторов в фигурных скобках. Последовательность событий при работе цикла for показана на рис. 3.3.

Как уже упоминалось, оператор_внутри_цикла на рис. 3.3 также может быть бло- ком операторов. Выражения, управляющие циклом for, очень гибки. Вы даже мо- жете написать два или более выражений, разделенных запятыми, вместо любого из трех управляющих операторов цикла for. Это дает вам широчайшие возможности в его применении.

Вариации цикла for

В большинстве случаев выражения в цикле for используются довольно стандарт- ным способом: первое из них инициализирует один или более счетчиков цикла, вто- рое проверяет, должен ли цикл продолжаться, а третье увеличивает или уменьшает значение одного или более счетчиков. Однако вы не обязаны использовать выраже- ния именно таким образом — на самом деле, возможны несколько вариаций.