Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie.docx
Скачиваний:
58
Добавлен:
31.03.2015
Размер:
500.74 Кб
Скачать

29. Операторы break и continue

Бывает, что цель выполнения цикла достигается раньше, чем он будет прекращен по условию выхода. Так, например, в программе для определения простоты числа цикл будет выполняться n div 2-1 раз, хотя то, что число не является простым, может быть обнаружено на первых шагах цикла. Чтобы уменьшить количество шагов цикла, можно воспользоваться оператором goto, либо сформировать сложное условие выполнения (прекращения) цикла.

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

Операторы break и continue выполняются в любом из видов циклов (repeat, while, for) и действительны только для внутреннего цикла. Например, если нужно обеспечить принудительный выход из двойного цикла, оператор break должен быть расположен как во внутреннем, так и во внешнем цикле. Операторы break и continueпо сути являются видоизмененными операторами goto с известной точкой, в которую осуществляется переход.

В примере у пользователя пять раз запрашивается число только в том случае, если он не вводит ноль.

var

num: real;

i: integer;

 

begin

for i := 1 to 5 do begin

write ('Введите число: ');

readln (num);

if num = 0 then

break;

writeln (num)

end;

 

readln

end.

В примере запрашиваются пять чисел и суммируются только положительные из них.

var

num, sum: real;

i: integer;

 

begin

sum := 0;

 

for i := 1 to 5 do begin

write ('Введите число: ');

readln (num);

if num < 0 then

continue;

sum := sum + num

end;

 

write (sum:10:2);

 

readln

end.

30. Команда break используется для выхода из текущего цикла.

Команда break может находиться в любом месте программы, однако обычно break ставиться в теле операторов while или do... while.

Пример 1.

#include < iostream.h >

#include < stdlib.h >

main()

{exit(0); //заставляет программу завершиться в этом месте

cout <<" С помощью C++ можно составлять высоко эффективные программы. \n";

cout <<" Удачи Вам. \n";

return 0;

}

На первый взгляд кажется, что эта программа выдаст на экран несколько сообщений.

Но это заблуждение, т.к. функция exit в начале программы приведет к ее прерыванию.

Пример 2.

#include <iostream.h>

#include <stdlib.h>

// Проверка пароля, пользователю предоставляется 3 попытки.

main()

{

int nash_p=4321; // пароль int k=0; // количество попыток

int ego_p; // пароль введенный пользователем

do

{

cout <<"Введите пароль \n";

cin>> ego_p;

k++;

if (ego_p=nash_p)

{

cout <<"\n\nДобро пожаловать в программу !! ";

exit(0);

}

else

{

(k<3) ? (cout <<"\n Пароль не верен !!\n Попробуйте еще раз !! ");

(cout <<"\n Пароль не верен !!");

}

}

while (k<3);

return 0;

}

Если пользователь ввел верный пароль, программа заканчивает свою работу с кодом завершения 0. В противном случае выдается сообщение о неверном пароле.

31. Оператор CONTINUE родственен оператору BREAK, но используется реже; он приводит к началу следующей итерации охватывающего цикла (FORWHILEDO). В циклах WHILE и DO это означает непосредственный переход к выполнению проверочной части; в цикле FOR управление передается на шаг реинициализации. (Оператор CONTINUE применяется только в циклах, но не в переключателях. Оператор CONTINUE внутри переключателя внутри цикла вызывает выполнение следующей итерации цикла).        В качестве примера приведем фрагмент, который обрабатывает только положительные элементы массива а; отрицательные значения пропускаются. 

FOR (I = 0; I < N; I++) {

IF (A[I] < 0) /* SKIP NEGATIVE ELEMENTS */

CONTINUE;

... /* DO POSITIVE ELEMENTS */

}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]