Цикл с постусловием (dowhile)

 

Структура оператора цикла dowhile описывается синтаксической диаграммой

do Oп while ( W ) ;

 

«Практикум по программированию на языке C в среде VS C++»

 


 

Внутри такого цикла может находиться либо один оператор, либо блок, который будет выполняться один или более раз до получения выражением W значения ноль («ложь»).. Например, такую же таблицу, что и в первом примере с применением опера-тора for, будет выводить следующий фрагмент программы:

 

i=0; do

{

 

printf("%10d%8.2f\n",i,sin(3.14/180*i)); i=i+10;

 

}

 

while(i<=60);

 

Существует возможность и досрочного выхода из любого цикла, организованного рассмотренными операторами, либо с помощью оператора безусловного перехода goto (их мы не будем использовать), либо с помощью оператора break.

 

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

 

Следующий пример - на использование операторов break и continue

 

. . .

 

#include "conio.h"

 

. . .

 

int d,i;

 

. . .

 

d=0;

 

for (i=1; i<=3; ++i)

 

{

 

printf(Ruc("\nВведите перввый символ пароля: "));

 

if (getch() != 'a') //getchтребует#include "conio.h"continue;

printf(Ruc("\nВведите второй символ пароля: ")); if (getch() == 'b')

 

{

 

 

«Практикум по программированию на языке C в среде VS C++»

 


 

d=1; break;

 

}

 

}

 

 

if (!d)

 

{

 

printf(Ruc("\nОшибка!Работа программы будет завершена.\n")); return0;

 

}

 

printf(Ruc("\nВы допущены к работе с программой.\n"));

 

. . . //продолжение программы

 

 

В этом примере программа предоставляет три попытки ввода пароля из двух сим-волов при запуске в режиме без отладки (Debug\StartWithoutDebugging). Ввод символа выполняется функцией getch(), требующей испоьзования директивы #include"conio.h".Функция возвращает символ нажатой клавиши без его отображения в окнепрограммы. При ошибке ввода первого символа оператором continue происходит пе-реход к очередному выполнению тела цикла – повторному вводу первого символа паро-ля. Если первый символ введён правильно, а второй – нет, то очередная попытка ввода пароля также начинается с ввода первого символа.

 

Если за три попытки не удалось правильно ввести пароль (переменная d после выхода из цикла сохранила значение 0), то программа выводит сообщение «Ошибка! Работа программы будет завершена.» и завершает работу.

При успешном вводе пароля на любом шаге выполнения тела цикла переменная d получит значение 1, произойдёт выход из цикла по оператору break и пользователь по-

лучит сообщение «Вы допущены к работе с программой.»