Занятие 5
1. Операторы цикла
Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из тела цикла, т.е. тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла (рис. 1).
Рис. 1 Структурные схемы операторов цикла: a – цикл с предусловием,
б – цикл с постусловием
Один поход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.
Переменные, изменяющиеся в теле цикла и используемые при проверке условия продолжения, называются параметры цикла. Целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации, называются счетчиками цикла.
Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются.
Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла не рекомендуется.
Для удобства, а не по необходимости, в С++ есть три разных оператора цикла – while, do while, for.
Цикл с предусловием (while)
Цикл с предусловием реализует структурную схему, приведенную на рис. 1 а. Такой цикл используется в том случае, когда не известно точное число повторов (итераций). Оператор цикла имеет вид:
while (выражение) тело цикла
В качестве выражения допускается использовать любое выражение языка С, а в качестве тела – любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая:
1) вычисляется выражение
2) если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело цикла.
3) процесс повторяется с пункта 1
Важно отметить, что выражение вычисляется до начала и после каждого прохода цикла. Цикл не выполняется ни разу, если выражение ложно (равно 0).
Поскольку в операторе while вначале происходит проверка условия, его удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.
Пример 1. Вычисление суммы чисел от 0 до 9
# include <stdio.h>
void main()
{
int i=0, sum=0;
while (i++ < 10) //условие выполнения тела цикла
{ //начало тела цикла
sum+=i; //тело цикла
}// конец тела цикла
printf(“значение суммы = %d \n”,sum);
}
В выражении (i++ < 10) сначала выполняется операция инкремента i++, а затем – проверка условия i<10.
С помощью оператора while легко организовать бесконечный цикл.
Пример 2. Бесконечный цикл
while (1)
{ операторы цикла
…
break;
…}
Выражение в скобках (1) подразумевает проверку условия (1==1), которое всегда истинно, поэтом естественного выхода из цикла нет. Такие циклы следует использовать в тех случаях, когда заранее неизвестно условие выхода из цикла, и оно формируется в теле цикла в процессе работы программы.