Лекция: Оператор do … while
Ту же программу (см. пример 1) для сравнения напишем с помощью другого оператора цикла:
int mult, to, RES=1;
cout<<«Mult=»; cin>>mult;
cout<<«To=»; cin>>to;
do RES*=mult; // или RES=RES*mult;
while (RES< to);
cout<<"\nResult= "<<RES;
Общий вид оператора цикла с постусловием такой:
do { оператор1;
оператор2; …
операторN;
} while (выражение);
Сначала выполняется тело цикла, а затем вычисляется и проверяется значение выражения. Если оно, как и в первом операторе, истинно (не равно нулю), то операторы, записанные между ключевыми словами do и while, повторяются. В противном случае цикл прекращается. Заметим, что аналогичный оператор языка Pascal repeat … until работает по-другому; если выражение после until истинно, цикл прекращается.
Как в С++, так и в Pascal, в отличие от while повторяющаяся часть обязательно выполнится хотя бы один раз. В нашем примере, даже если введём, например, отрицательное значение to и mult=2, цикл do … while выполнится один раз, то есть RES станет равным 2, и выйдем из цикла. Этим и отличаются два казалось бы похожие операторы цикла.
Вторая особенность оператора do … while в том, что значения переменных выражения не обязательно надо определять до цикла, это можно сделать и внутри его.