Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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




return 0;

}

Программа                        получает от пользователя значение счетчика цикла, ко-

торое сохраняется в переменной loopCount. Затем программа выполняет цикл while . Сначала проверяется значение переменной loopCount. Если оно больше нуля, программа входит в тело цикла (телом цикла называется код между скобка- ми),  где                                       уменьшается на 1, и результат выводится на экран. Затем программа возвращается к началу цикла и проверяет, осталась ли переменная loopCount положительной.

Ниже представлены результаты выполнения программы, выведенные на экран. Нетрудно догадаться, что введенный мною  счетчик цикла равен 5. Программа пять раз выполнила цикл, каждый раз выводя результат на экран:

Осталось выполнить 4 циклов Осталось выполнить 3 циклов Осталось выполнить 2 циклов Осталось выполнить 1 циклов Осталось выполнить 0 циклов

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

Реже используется другая  версия  цикла                      известная как do . .                  Она работает аналогично, но условие завершения проверяется в конце, после выпол- нения тела цикла.

do

{

//Тело цикла

} while (условие);

Поскольку условие проверяется только в конце, тело оператора  do. .                          вы- полняется всегда хотя бы один раз.

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

 

Использование операторов инкремента и декремента

Очень часто для какого-либо подсчета в циклах программисты используют операторы инкремента или декремента. Заметим, что в следующем фрагменте программы WhileDemo для уменьшения значения счетчика используются опера- торы присвоения и вычитания:

// в цикле вызолим значения

>

{

loopCount = loopCount —

cout « "Осталось выполнить "

<< loopCount << "

}

Используя оператор декремента, этот цикл можно записать более компактно:

 

56                                                    Часть I. Первое знакомство с C++


// в цикле выводим значения while (loopCount > 0)

{

loopCount--;

cout << "Осталось выполнить "

« loopCount << " циклов\п";

}

Смысл этого варианта цикла полностью совпадает со смыслом оригинала. Единст- венная разница — в способе записи.

Поскольку оператор декремента одновременно уменьшает аргумент и возвращает его значение, он может включаться в условие цикла while. В частности, допустима следующая версия цикла:

// в цикле выводим значения while (loopCount-- > 0) (

cout << "Осталось выполнить "

<< loopCount << " циклов\п";

}

Хотите — верьте, хотите — нет, но большинство программистов на C++ ис- пользуют именно этот вариант записи. И не потому, что им нравится быть остро- умными; хотя почему бы и нет? Использование в логических сравнениях

ров инкремента и декремента делает программный код легко читаемым и более компактным. И вряд ли вы, исходя из своего опыта, сможете предложить достой- ную альтернативу.

в выражении loopCount--, и в --loopCount значение loopCount уменьшается; однако первое возвращает значение переменной loopCount перед его уменьшением на а второе — после.

 

Сколько раз будет выполняться декрементированный  вариант                                       если пользователь введет число 1? Если использовать префиксный вариант, то

ние --loopCount равно 0 и тело цикла никогда не выполнится. В постфиксном варианте loopCount-- возвратит 1 и программа передаст управление в начало цикла.

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

 



Использованиециклаfor

Другой разновидностью циклов является цикл for. Его часто предпочитают более простому циклу while. Цикл for имеет следующий вид:

 

i

цикла

}

Выполнение цикла for начинается с инициализации. В ней обычно находится

оператор присвоения, используемый для установки начального значения перемен-

 

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 200; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.011 с.)
Главная | Случайная страница | Обратная связь