Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Оператор цикла do — while ( с предусловием | постусловием ) « continue»

   while

Ну а сегодняшний урок мы посветим оставшимся циклам. И так вот конструкция оператора цикла while с предусловием:

while (условие){ //тело цикла }

Цикл while с предусловием, в принципе, действует, так же как и for. Т.е. пока условие истинно (TRUE), то будет выполняться тело цикла.

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

do {
   //тело
}
while (условие);

Тут не важно, будет ли условие истинно (TRUE ) или ложно (FALSE), но тело оператора цикла хоть раз да выполнится. Это иногда очень важно. Вот небольшой примерчик:

Введите с клавиатуры число, если оно меньше 5, то выведите его и с помощью инкрементации все числа, пока значение введенного числа не будет равно 5. Если же число будет сразу больше 5, то просто выведите его.

int chislo;
scanf("%d", &chislo);

do {
    printf ("%d",chislo++);
}
while (chislo < 5);

   continue

Мы уже знаем и циклы и оператор break. А для чего же тогда нужен этот страшный оператор continue? Так вот, оператор continue просто прекращает текущую итерацию. Лучше давайте посмотрим это на примере:

Задание: нам нужно вводить числа с клавиатуры, если число больше нуля, то выводим на экран сообщение: Число положительное, если меньше, то - Число отрицательное. Если, вдруг, оказывается, что мы ввели 0, то продолжаем дальше вводить значения. Условием выхода из цикла будет значение -13. Поехали:

#include <conio.h>
#include <stdio.h>

int main()
{
    int chislo;
    for ( ; ; ){
       scanf ("%d", &chislo);
       if (chislo == -13)
          break;
       if (chislo == 0)
          continue;
       if ( chislo > 0 )
          printf ("Число положительное");
       if (chislo < 0)
          printf ("Число отрицательное");
    }
    getch();
return 0;
}

Пример достаточно сложный, так как тут используется практически все предвидущие темы. Обратите внимание, что у нас оператор цикла for является бесконечным, так как ни содержит условия выхода. Для нашего задания это как раз и необходимо, так как нам надо вводить числа заранее неопределенное количество раз.

Так же обратите внимание, что во всех операторах if я не использовал фигурных скобок, так как в их теле всего-навсего размещен один оператор.

Первым условием в теле оператора цикла for идет именно условие выхода, тело которого содержит оператор continue. Так как оно нужно для выхода из программы. Если мы его будем использовать в конце тела цикла, то сначала нам выведут сообщение, что это число отрицательное (но оно нам не надо, так как это служебное число для выхода).

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

Задания:

  1. вводить различные числа. Когда будет введен 0, то программа выходит из цикла РЕШЕНИЕ
  2. 20 инопланетян поочередно прилетают на землю с целью исследования поведения людей. Каждый инопланетянин находится на земле, пока не пройдет 5 лет. Напишите алгоритм их маневра в виде программы, что бы ученые смогли найти средство борьбы РЕШЕНИЕ

Предвидущие уроки:

  1. Условный оператор if
  2. Оператор цикла for
  3. Цикл while
При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru