Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР7-С++-05 апреля-2012.doc
Скачиваний:
19
Добавлен:
15.09.2019
Размер:
2.45 Mб
Скачать

Оператор продолжения continue для циклов do, while, for

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

Синтаксис.

continue;

Выполнение. В любой точке цикла continue прервет текущую итерацию и перейдет к проверке условия завершения цикла.

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

Формат оператора:

continue;

Пример.

Найти сумму дробей вида , если x ∈ [–1;+1]. При вычислении этой

суммы

при х = 0 есть особая точка, в которой знаменатель дроби равен 0 и, следовательно, значение слагаемого не определено.

Можно организовать два цикла сложения с управлением по x ∈ [ –1;–0.9] и x ∈ [0.1;+1], а можно в одном цикле предусмотреть особую точку, и не вычислять очередное слагаемое.

void main (void)

{

float Sum = 0, x;

for (x = –1; x < =1.05; x += 0.1)

{

if (fabs (x) < 0.0001)

continue; // если в знаменателе 0

Sum += 1 / x;

}

printf ("Сумма = %8.2f\n", Sum);

}

Особенности. Особенностей нет.

1.12.3. Оператор перехода goto

3. goto <метка> – передает управление оператору, который содержит метку.

В теле той же функции должна присутствовать конструкция: <метка>:оператор;

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

Применение goto нарушает принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и только один выход.

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

Использование оператора безусловного перехода goto в практике программирования на языке С/C++ настоятельно не рекомендуется, так как он затрудняет понимание программ и возможность их модификаций.

Формат оператора:

goto имя-метки;

Оператор goto передает управление на оператор, помеченный меткой имя-метки (имя-метки – это идентификатор).

1.12.4. Оператор возврата из функции return

4. return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [выражение];

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом.

Формат оператора:

return [(выражение)];

Замечание:

Замечание: Для любого из циклов тело цикла может, в свою очередь, пред­ставлять собой оператор цикла (того или иного вида) либо содер­жать такой оператор. Подобные структуры называются вложенны­ми циклами. !!!!!

В рассмотренных примерах циклические алгоритмы являются простыми.

Сложным (вложенным) циклом называется такой, у которого содержанием циклически выполняемого фрагмента является также циклический алгоритм. Типы циклических алгоритмов внешнего и внутреннего циклов при этом могут быть любыми. Внутренний цикл, от подготовки до завершения, должен находиться внутри внешнего, точнее, быть его телом.