Операторы цикла
Мощным механизмом управления ходом последовательности выполнения программы является использование циклов. Цикл является конструкцией языка, которая улучшает обработку повторяющихся действий.
Разновидности циклов: 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 являются необязательными, т.е. могут отсутствовать:
- int i=0;
for (; I < n; i ++)
{тело цикла}
- int i = 0;
for (; i < n; )
{ …; i ++; }
- 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, цикл do…while cначала выполняет тело цикла, а затем уже осуществляет проверку условия на истинность. Такая конструкция гарантирует, что тело цикла будет обязательно выполнено хотя бы один раз.
Синтаксис: do { тело цикла }
while (условие);
Особенности циклов while, do…while:
- Тело циклов выполняется тогда, когда условие принимает истинное значение.
- Чтобы не было зацикливания в теле цикла должен быть оператор, воздействующий на условие.
Пример на оператор 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;
}
|