Выбрать главу

          system( "PAUSE" ) ; return 0 ;

      }

_________________

72 стр. Часть 1. Первое знакомство с С++

Программа ForDemo2 выполняет те же действия, что и ранее рассмотренная WhileDemo. Однако вместо изменения переменной loopCount в этом варианте программы введена специальная переменная цикла.

Выполнение цикла начинается с объявления переменной i и инициализации её значением переменной loopCount. Затем проверяется, является ли переменная i положительной. Если переменная положительна, то программа выводит уменьшенное на 3 значение i и возвращается к началу цикла.

«Согласно последнему стандарту языка индексная переменная, объявленная в части инициализации цикла for, известна только в пределах этого цикла. Программисты на С++ в этом случае говорят, что область видимости переменной ограничена циклом for. Например, в инструкции return рассмотренного выше примера, т.е. за пределами цикла, переменная i недоступна и не может использоваться. Однако этого новейшего правила придерживаются далеко не все компиляторы, и вам нужно протестировать свой компилятор, чтобы узнать, как он действует в этом случае. Dev-C++ при использовании i вне цикла выводит предупреждение, но позволяет программисту поступить по своему усмотрению.»

[Атас!]

Избегайте бесконечных циклов...73

Бесконечным называют такой цикл, который выполняется вечно. Бесконечный цикл создаётся каждый раз, когда условие выполнения цикла выполняется всегда, обычно вследствие какой-то ошибки в коде.

В следующей разновидности рассмотренного ранее цикла

      while ( loopCount > 0 )

      {

           cout << "Осталось выполнить" << loopCount << " циклов\n"

      }

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

«Но... ничто не вечно под Луной! В конечном счёте электричество отключится, компьютер поломается, Microsoft обанкротится... Или цикл прервётся, и вам не о чём будет тревожиться. Существует гораздо больше способов создания бесконечных циклов, чем показано здесь; но обычно они слишком сложны для того, чтобы приводить их в такой простой книжке.»

[Технические подробности]

Специальные операторы управления циклом...73

В С++ определены две специальные управляющие программой команды — break и continue. Может случиться, что условие работы цикла нарушится не в начале или в конце, а где-то посередине цикла. Рассмотрим программу, которая суммирует введённые пользователем значения. Цикл прерывается, когда пользователь вводит отрицательное число.

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

_________________

73 стр. Глава 5. Операторы управления программой

В таких случаях используют определёную в С++ команду break. Она немедленно передаёт управление в конец текущего цикла. После инструкции break программа будет выполнять инструкцию, следующую сразу же после закрывающей скобки цикла. Схематически работу команды break можно проиллюстрировать так:

        while ( условие )

       {

            if ( какое-то другое условие )

            {

                 break ; /* выход из цикла */

            }

       }          /* когда программа встретит break, управление будет передано этой строке */

Вооружась новой командой break, я решил в программе BreakDemo проблему последовательного накопления суммы чисел.