Операторы цикла

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

Разновидности циклов: for, while, do…while.

Оператор цикла for

Цикл for используется в тех случаях, когда заранее известно сколько раз должна повторяется циклическая часть программы.

Синтаксис:  for (выражение_1; выражение_2; выражение_3) {тело цикла};

выражение_1-  инициализация переменной цикла; все выражения, входящие в инициализацию цикла, определяются только один раз при входе в цикл;

выражение_2 - проверка условия на продолжение цикла; если условие истинно,  то выполняется тело цикла, в противном случае цикл заканчивается.

выражение_3 - изменение переменной цикла происходит после каждой итерации (повтора) цикла.

Пример:     for ( int i =1; i < 10; i ++)

cout<<” k = ” << i * I <<’\n’;

Трассировкаi = 1   k = 1   i = 3   k = 9    i = 5   k = 25    ………

            i = 2   k = 4   i = 4   k = 16   i = 6   k = 36   i = 9     k = 81

 

Все три компонента цикла for являются необязательными, т.е. могут отсутствовать:

  1. int i=0;

    for (; I < n; i ++)

    {тело цикла}

  2. int i = 0;

    for (; i < n; )

    { …; i ++; } 

  3. for (; ; ) { тело цикла };

выражение_2 отсутствует, значит оно постоянно истинно – бесконечный цикл.

Пример на оператор For (Решение задачи можно посмотреть, скачав файл "Задача-4"):

Дана последовательность натуральных чисел из n элементов. Найти среднее арифметическое четных элементов последовательности.

#include<iostream.h>
#define n 5
main()
{ int a, kol=0, i;
  float sum=0, sr;
  cout<<"Vvedite "<<n<<" chisel\n";
  for (i=0;i<n;i++)
    {cout<<i+1<<" element massiva: ";
     cin>>a;
     if (a%2==0) {sum=sum+a;
              kol=kol+1;
             }
     }
   sr=sum/kol;
   cout<<"sr="<<sr<<"\n";
   return 0;
  }

Оператор цикла while (цикл с предусловием)

Цикл while выполняет тело цикла до тех пор, пока условие остаётся истинным. Если условие сразу ложно, то тело цикла не выполнится ни разу.

Синтаксис: while  (условие)   

{тело цикла};

Оператор цикла do…while (цикл с постусловием)

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

Синтаксис: do { тело цикла }

while (условие);

Особенности циклов while, do…while:

  1. Тело циклов выполняется тогда, когда условие принимает истинное значение.
  2. Чтобы не было зацикливания в теле цикла должен быть оператор, воздействующий на условие.

Пример на оператор While (Решение задачи можно посмотреть, скачав файл "Задача-5"): 

Дано целое неотрицательное число. Определить количество цифр и сумму цифр числа в его десятичной записи. Например, для n = 113562 сумма равна 18, количество цифр 6.

#include<iostream.h>

main()

{ long int n;

  int a, sum = 0, k = 0;

  cout<<”Ввести число”<<’\n’;

  cin>>n;

  while (n != 0)

       { a = n % 10;

         sum = sum + a;

         k = k + 1;

         n = n / 10;

        };

  cout<<”sum =”<< sum<<’\n’;

  cout<<” k = “<< k<< ‘\n’;

  return 0;

}

Пример на оператор Do..while (Решение задачи можно посмотреть, скачав файл "Задача-6"): 

Написать программу, которая  определяет максимальное число из введенной с клавиатуры последовательности положительных чисел (последовательность неограниченна, ноль завершает ввод данных).

 

#include<iostream.h>
#include<conio.h>
main()
{ int a, max=0;
  do
     { cout<<"vvedite chislo (0-konec vvoda)\n";
       cin>>a;
       if (a>max) max=a;
      }
   while (a>0);
   cout<<"max="<<max<<"\n";
 getch();
 return 0;

}

 

Вложенные операторы цикла

Если телом цикла является  циклическая структура, то такие циклы называется вложенными.

Цикл,  содержащий в себе другой цикл называется внешним.

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

Пример на вложенный оператор цикла (Решение задачи можно посмотреть, скачав файл "Задача-7"): 

Задача выводит таблицу умножения

#include<iostream.h>
#include<conio.h>
main()
{clrscr();
 int i,j;
 for (i=1;i<10;i++)
     { for (j=1;j<10;j++)
       cout<<i*j<<'\t';
       cout<<'\n';
      }
 getch();
 return 0;
}

Среда, 08.05.2024, 09:01
Приветствую Вас Гость