Оператор goto

Оператор continue

Оператор break

Лекция №6. Дополнительние операторы управления циклом

Оператор цикла с параметром

Оператор цикла с параметром for - третий тип операторов цикла, используемый в языке С:

for (выражение1; выражение2; выражение3;)

{операторl; ………; операторN;}

Цикл for позволяет включить в оператор инициализирующее выражение (выражение1), выполняемое один раз перед тем, как будет произведена оценка условия.

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

Все три выражения в описании оператора for не являются обязательными. Инициализирующее выражение, если оно есть, будет выполняться всегда; вычисление конечного выражения (выражение2) может не производиться, если условие ложно с самого начала.

Выражение3, как правило, определяет закон изменения параметра цикла, но это не обязательно. Следует обратить внимание на то, что цикл for в С++ не является классическим циклом с параметром: здесь параметр цикла может быть неперечислимым (т. e. в данном случае нецелым) значением.

Есть несколько способов прервать выполнение цикла или изменить порядок следования операторов тела цикла.

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

Например: for(;;){ ..........if(выражение)break;}

Не имея управляющих выражений, оператор for выполняется "вечно", но став истинным, выражение в операторе if заставит выполниться оператор break, который обрывает "бесконечное" выполнение цикла и переводит счетчик команд на оператор, следующий за последним из операторов, принадлежащих телу цикла.

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

Пример. Найти сумму положительных элементов из десяти чисел.

int s=0,i,a;

for(i=0; i<10; i++)

{ scanf("%d", &a);

if(a<=0) continue;

/*Переход к следующему числу последовательности */

s+=a;}

prinf("\nСумма положит. элементов массива a: s=%6d",s);

Это не единственный способ написания программы, но он удачно демонстрирует использование оператора continue.

Оператор goto не относится ни к условным операторам, ни к операторам цикла, однако и он позволяет изменить порядок следования операторов в программе и передать управление оператору, помеченному меткой. Кажущиеся преимущества, которые дает оператор goto, на самом деле весьма сомнительны, так как очень быстро приводят к созданию программ "спагетти", очень трудно поддающихся отладке и корректировке. Среди программистов достаточно высокого профессионального уровня многократное использование оператора goto считается признаком не слишком хорошего стиля программирования.

На практике также целесообразно избегать частого использования операторов break и continue.