Оператор while c предусловием


Проанализируем следующую программу:

int main()

{ int mult, to, RES; cout<<"Mult="; cin>>mult;

cout<<"To="; cin>>to;

RES=1;

while (RES< to)

RES*=mult; // или RES=RES*mult;

cout<<"\nResult= "<<RES;

getch(); return 0; }

Оператор цикла while называется цикл с предусловием и выполняется, как и в других языках, следующим образом. Вне цикла, то есть один раз вводим два целых значения и RES=1. Пусть в качестве mult ввели 2, а to=100. Проверяется условие RES<to, записанное в скобках оператора while, то есть 1<100. Так как условие истинно, выполняется RES*=mult, то есть RES=1*2=2. Без
каких-либо дополнительных операторов передаётся управление на повторную проверку условия RES<to. Так как 2<100, выполняется RES*=mult, то есть RES=2*2=4. Снова проверяется 4<100, увеличивается RES и т. д., то есть переменная RES будет принимать последовательно значения 16, 32,…. До каких пор? На некотором шаге RES примет значение 64. Так как 64<100, то RES=64*2=128. Проверяется условие 128<100, и так как оно ложно, осуществляется выход из цикла. Это означает, что выполняется оператор, записанный после while, а точнее, после последнего повторяющегося оператора (после тела цикла). У нас повторяется единственный оператор, не считая условия, поэтому выполняется cout<<"\nResult="<<RES и выводится 128.

Оператор while имеет следующий общий вид:

while (выражение)

{ оператор1;

оператор2;

операторN; }

Выражение в отличие от Pascal должно записываться в круглых скобках. В простых случаях, как и в других языках, оно является логическим, то есть наряду с другими операциями содержит логические и (или) операции сравнения. Но, в отличие от других языков, как и в операторе if, это не обязательно. Вместо

while (X !=0 ) операторы;

можно записать короче: while (X) операторы;

Фигурные скобки (Begin … End в Pascal) определяют операторы, которые наряду с вычислением и проверкой выражения будут повторяться (тело цикла). Как и в операторе if, эти скобки обязательны, если повторяется более одного оператора, не считая выражения в скобках. Например, добавление в наш цикл фигурных скобок

while ( RES<to)

{ RES*=mult;

cout<<"\nResult= "<<RES;

}

приведёт к тому, что вывод будет выполняться не один раз, как в начальном варианте, а будет повторяться, то есть в “столбик” (так как cout<<"\nResult=”) будет выводиться 2, 4, 8, …, 128 каждый раз вместе с одним и тем же текстом "Result= ". Если в теле цикла один оператор, {} не обязательны, но не будет ошибки, если их написать. Поэтому если есть сомнения в количестве повторяющихся операторов, лучше скобки записать.

Выполнение оператора начинается с вычисления и проверки выражения. Если оно истинно (не равно нулю), выполняется тело цикла, и управление передаётся на повторную проверку выражения. В случае его истинности снова выполняются повторяющиеся операторы. Если на некотором шаге значение выражения станет ложным (равным нулю), осуществляется выход из цикла. Это означает, что тело цикла не выполняется, и управление передаётся на оператор, записанный после while (после тела цикла), а точнее, после закрывающей фигурной скобки для while, если она есть, или после единственного повторяющегося оператора, если скобок нет.



Дата добавления: 2016-07-18; просмотров: 1553;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.