Оператор 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.