Программирование на C и C++

Онлайн справочник программиста на C и C++

DO/WHILE

В противоположность циклам for и while, сначала проверяющим условие, цикл do/while проверяет условие в конце. То есть, цикл do/while всегда выполняется, по крайней мере, один раз. Стандартный вид цикла do/while следующий:

do {
последовательность операторов;
}
while (условие);

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

Данный цикл do/while осуществляет чтение чисел с клавиатуры до тех пор, пока одно из них не станет меньше либо равно 100:

do {
scanf ("%d", &num);
} while (num > 100);

Возможно, наиболее типичным использованием цикла do/while является процедура выбора пунктов меню. Когда набран корректный ответ, она возвращает значение функции. Неправильный ответ приводит к повторному вводу. Следующий пример являет собой улучшенную версию меню программы проверки орфографии:

void menu(void)
{
char ch;
printf("1. Check Spellirig\n");
printf("2. Correct Spelling Errors\n");
printf("3. Display Spelling Errors\n");
printf("    Enter your choice: ");
do {
ch = getche(); /* чтение клавиатуры */
switch(ch)
          {
case '1' :
     check_spelling ();
   break;
case '2' :
     correct_errors ();
   break;
case '3' :
     display_errors();
    break;
          }
      }
      while(ch!='1' && ch!='2' && ch!='3');
}

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