Принципы объектно-ориентированного программирования

         

Оператор do/while



Оператор do/while

Приглядевшись к синтаксису оператора while, вы можете обнаружить потенциальную проблему. Булевское_выражение вычисляется до исполнения встроенного ^оператора. Поэтому в предыдущем примере приходится инициализировать переменные correctGuess и userQuit значением false,


чтобы гарантировать вход в цикл. Затем эти переменные применяются, чтобы отслеживать, угадал ли пользователь число или решил выйти. А если мы хотим, чтобы встроенный jonepamop всегда выполнялся хоть раз, не устанавливая переменные искусственно? Для этого и служит оператор do/while, форма которого: do

встроенный оператор while (булевское_выражение)

Поскольку булевское_выражение вычисляется после встроенного^оператора, у нас есть гарантия, что встроенный_оператор будет выполнен хотя бы раз. Теперь наша "угадайка" будет выглядеть так: using System;

class DoWhileApp {

const int MIN = 1;

const Int MAX = 10;

const string QUIT_CHAR = "Q";

public static void MainQ {

Random rnd = new RandomQ;

double correctNumber;

string inputStrlng; int userGuess = -1;

bool userHasNotduit = true;

do

{

correctNumber = rnd.NextDoubleO * MAX; correctNumber = Math.Round(correctNumber);

Console.Write

("Угадайте число от {0} до {1}...({2} - выход)",

MIN, MAX, QUIT.CHAR); inputString = Console. ReadLineO;

if (0 == string.Compare(inputString, QUIT_CHAR, true))

userHasNotQuit = false; else {

userGuess = inputString.Tolnt32();

Console.WriteLine

("Правильное число {0}\n", correctNumber); }

} while (userGuess l= correctNumber && userHasNotQuit);

if (userHasNotQuit

&& userGuess == correctNumber) {

Console.WriteLine("Поздравляем!");

}

else // Неверный ответ!

{

Console.WriteLine("Может, в следующий раз повезет!");

} }

}

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

 

Содержание раздела