Цикл с постусловием (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 и пользователь по-
лучит сообщение «Вы допущены к работе с программой.»