Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Лафоре Р. -> "Объектно-ориентированное программирование в С++" -> 39

Объектно-ориентированное программирование в С++ - Лафоре Р.

Лафоре Р. Объектно-ориентированное программирование в С++ — М.: Питер, 2004. — 992 c.
Скачать (прямая ссылка): obektnoorentprogramm2004.djvu
Предыдущая << 1 .. 33 34 35 36 37 38 < 39 > 40 41 42 43 44 45 .. 341 >> Следующая


Несколько инициализирующих выражений и условий цикла

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

for (j = 0. alpha = 100: j <50: j++, beta--) {

// тело цикла } 102

Глава 3. Циклы и ветвления

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

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

for ( : : )

эквивалентна циклу while с условием продолжения, равным true. Мы рассмотрим циклы while чуть позже.

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

Цикл while

Цикл for выполняет последовательность действий определенное количество раз. А как поступить в том случае, если заранее не известно, сколько раз понадобится выполнить цикл? Для этого разработан другой вид цикла — while.

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

// endonO.cpp Il применение цикла WHILE !include <iostream> using namespace std;

int mainO {

int n - 99: //

wh1le(n !- 0 ) //

ein » n; //

cout « endl; return 0;

}

Далее мы приведем возможный пример работы программы. Пользователь вводит значения, а программа отображает эти значения до тех пор, пока пользователь не введет ноль, после чего программа завершается.

1

27

33

144

9

О

п не должна быть равна 0 перед началом цикла цикл, пока значение п не равно О считывание п с клавиатуры Обнаружение ошибок 103

Внешне цикл while напоминает упрощенный вариант цикла for. Он содержит условие для продолжения цикла, но не содержит ни инициализирующих, ни ин-крементирующих выражений. Синтаксис цикла while показан на рис. 3.3.

Г

Условие выполнения

while (п! =0) О—Прим.: точка с запятой не нужна statement;

I-Тело цикла из одного оператора

Г

Условие выполнения

while (v2 < 45)0-Прим.: точка с запятой не нужна

{

statement; | Тело цикла из нескольких

statement; операторов - блок statement; )

> о

L

Прим.: точка с запятой не нужна Рис. 3.3. Синтаксис цикла while

До тех пор пока условие продолжения цикла выполняется, исполнение тела цикла продолжается. В примере ENDONO значение выражения

п !" О

истинно до тех пор, пока пользователь не введет ноль.

На рис. 3.4 показан механизм работы цикла while. На самом деле он не так прост, как кажется вначале. Несмотря на отсутствие инициализирующего оператора, нужно инициализировать переменную цикла до начала исполнения тела цикла. Тело цикла должно содержать оператор, изменяющий значение переменной цикла, иначе цикл будет бесконечным. Таким оператором в цикле из примера END0N0 является сіп » п;

Рис. 3.4. Исполнение цикла while 104

Глава 3. Циклы и ветвления

Несколько операторов в цикле while

Следующий пример, WHILE4, демонстрирует применение нескольких операторов в теле цикла while. Это немного модифицированная версия программы CUBELIST, которая вычисляет не третьи, а четвертые степени последовательности целых чисел. Поставим дополнительное условие к задаче: все выводимые значения должны иметь размер не более 4 символов, то есть необходимо завершить выполнение цикла, когда результат превысит 9999. Без предварительного расчета мы не знаем, какое число будет источником такого результата, поэтому возложим определение этого числа на нашу программу. Условие продолжения цикла будет сформировано так, что программа завершится до того, как результаты превысят установленный барьер. // whi1е4.срр

// возведение в четвертую степень целых чисел !include <iostream>

!include <iomanip> //для setw

using namespace std: int mainO

Для того чтобы найти значение четвертой степени числа, мы просто умножаем это число само на себя четырежды. После каждой итерации мы увеличиваем значение переменной numb на единицу, но нам не нужно использовать значение numb в операторе цикла while, поскольку выполнение цикла зависит только от значения результирующей переменной pow. Результат работы программы выглядит так:

1 1 2 16

3 81

4 256
Предыдущая << 1 .. 33 34 35 36 37 38 < 39 > 40 41 42 43 44 45 .. 341 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100