Условные операторы языка программирования C++, страница 5

          В приведенном примере вводится десятичное число dec, и далее в цикле while осуществляется проверка четвертого бита (число от 0 до 15 может быть закодировано четырьмя битами). Если бит установлен (равен единице), на экран выводится единица, а если он на­ходится в сброшенном состоянии - выводится ноль.

          2.3 Циклы do-while

          В отличие от оператора while, цикл do-while сначала вы­полняет тело (оператор или блок), а затем уже осуществляет проверку выражения на истинность. Такая конструкция гарантирует, что тело цикла будет обязательно выполнено хотя бы один раз.

          Синтаксис оператора имеет вид:

do

   оператор_или__блок_операторов;

while(выражение)

Одно из часто используемых применений данного оператора - запрос к пользователю на продолжение выполнения программы:

#include <iostream.h>

void main ()

{

   char answer;

   do

   {

      // Телопрограммы

      ...

cout<< "Продолжать выполнение?";

cin>> answer;

}

   while(answer != ‘N’)

}

          Таким образом, тело программы будет повторяться до тех пор, пока пользователь на вопрос "Продолжать выполнение?" не ответит символом 'N', При этом, в качестве переменной, ис­пользуемой для хранения этого значения, выступает answer.

          2.4 Оператор break

          Вполне вероятно, у вас уже назревает вопрос, что же делать, если нужно предусмотреть выход из оператора цикла в несколь­ких местах, не дожидаясь выполнения оставшейся части кода. Здесь на помощь программисту приходит оператор break. Дан­ный оператор может встречаться в теле цикла сколько угодно раз и, как и в случае switch-case, передает управление вне тела конструкции.

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

#include <iostream.h>

void main()

{

   int answer = 0;

   do

   {

      while(answer)

      {

         if(answer <= 3)

cout<<”Меньше 3-x\n”;

break; // Выход из цикла while

   //В этот фрагмент хода никогда не попадем

         if(answer > '3' && answer < '7')

cout<<”От 3-х до 7-ми \n”;

break;

if(answer >= '7’)

cout<<”Больше 7-ми\n”;

}

//В этот фрагмент кода попадаем по break

   cout <<“Repeat?\n”;

cin>> answer;

   }

while(answer != 0);

}

          На практике оператор break часто используют для выхода из бесконечного цикла.

for(   ;   ;  )

{

// Условие  1:

   if(...)

{

   ...

   break;

}

// Условие 2

   if(...)

{

      break;

}

}

          В данном примере, если выполнится любой из условных опе­раторов if, будет достигнут и соответствующий Оператор break, который выведет управление из тела конструкции беско­нечного циклаfor.

          2.5 Оператор continue

          Так же, как и ключевое слово break, оператор continue пре­рывает выполнение тела цикла, но в отличие от первого, он предпи­сывает программе перейти на следующую итерацию цикла.

          В качестве примера использования оператора continue предлагается программа нахождения простых чисел (делящихся на 1 и на самих себя).

#include <iostream.h>

void main () 

{

   bool dev = false;

   for(int i=2; i<50; i++)

   {

      for(int j>=2; j<i; j++)

      {

         if(i%j)

            continue;

         else

         {

            dev = true; break;

         }

      }

      if(!dev)

          cout « i << " "; dev = false;

   }

}

          Программа организована в виде двух вложенных циклов та­ким образом, что осуществляется перебор и проверка остатка от деления пары чисел, первое из которых изменяется от 2 до 50, а второе - от 2 до значения первого числа Если остаток от деления ненулевой, осуществляется продолжение внутреннего цикла по оператору continue. В случае, если остаток от деления соста­вил 0, выполняется выход из внутреннего цикла с установкой признака деления в логической переменной dev. По окончании внутреннего цикла производится анализ логической переменной dev и вывод простого числа.