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

Операторы цикла

В языке Си реализованы три вида операторов цикла:

1) while — цикл с предусловием;

2) do...while — цикл с постусловием;

3) for — цикл с заданным числом повторений (цикл с предусловием).

Цикл while

Общая форма записи

while(условие)

<оператор>;

или while(условие)

{ <оператор 1>;

<оператор 2>;

...

}

Если условие истинно (т. е. не равно нулю), то выполняется оператор или группа операторов, входящих в цикл while, затем выражение проверяется снова. Последовательность действий, состоящая из проверки и выполнения оператора, повторяется до тех пор, пока выражение не станет ложным. После этого происходит выход из цикла, и далее выполняется оператор, стоящий после оператора цикла.

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

Цикл while – цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу.

Пример

int к=5, n=10; while(к<n) { printf("k=%d n=%d\n",k, n); к+=2; n++; }

Если после оператора while стоит несколько строк кода, принимающих участие в цикле, то ставятся фигурные скобки {}.

Цикл do...while

Общая форма записи

do <оператор>;

while (условие);

Цикл do...while – это цикл с постусловием, в котором истинность выражения проверяется после выполнения всех операторов, включенных в цикл. Тело цикла выполняется до тех пор, пока условие не станет ложным, т. е. тело цикла выполнится хотя бы один раз. Использовать цикл лучше всего в тех случаях, когда должна быть выполнена хотя бы одна итерация.

do printf("\n Введите число 10"); scanf("%d",&number); while(number!=10);

Важно!!! В цикле do...while после условия ставится точка с запятой!

Цикл for

Общая форма записи

for(<инициализация>; <проверка условия>; <коррекция>)

{<оператор>;

...

}

Цикл for – цикл с фиксированным числом повторений. Для организации такого цикла должны рассматриваться три операции:

– инициализация счетчика;

– сравнение его величины с некоторым граничным значением;

– изменение значения счетчика при каждом прохождении тела цикла.

Все три компонента цикла for являются выражениями. Они записываются в скобках и разделяются точкой с запятой. Первое выражение служит для инициализации счетчика. Инициализация осуществляется только один раз — когда цикл for начинает выполняться. Второе выражение — для проверки условия перед каждым возможным выполнением тела цикла. Когда выражение становится ложным, цикл завершится. Третье выражение вычисляется в конце каждого выполнения тела цикла. Счетчик может, как увеличиваться, так и уменьшаться. Например,

main () { int num; for(num=l; num<=5; num++) printf(" % 5d % 5d \n",num, num*num); }

В качестве третьего выражения может использоваться любое правильно составленное выражение, изменяющее значение проверяемого условия. Например:

for (х=1; у<=35; у=5*х++ +10)

printf ("%10d %10d\n",х,у);

Важно!!! Можно опустить одно или несколько выражений, но нельзя опускать точку с запятой.

Параметры, находящиеся в заголовке цикла, можно изменить при выполнении операций в теле цикла. При этом на месте опущенного выражения должен стоять пустой оператор «;».

к=2; for(n=3; k<=25;) { k*=n; }

Если отсутствует <проверка условия>, то считается, что оно всегда истинно. Поэтому цикл for(;;) является бесконечным и предполагается, что он будет прерван другими средствами, такими как break или return.

В цикле for часто используется операция «запятая» для разделения нескольких выражений. Это позволяет включить в спецификацию цикла несколько инициализирующих или корректирующих выражений. Выражения, к которым применяется операция «запятая», вычисляются слева направо.

for(i=0,j=l; i<n; i++, j=i);

Запятые, которые разделяют аргументы функций, переменные в описаниях не относятся к операции «запятая».

В Си допускаются вложенные циклы, т. е. когда один цикл находится внутри другого.

for (i= 0;i<n;i++) { for(j =0; j<n; j++) {... } }

Рекомендации по выбору цикла. При выборе цикла необходимо оценить следующие факторы:

– Нужен ли цикл с предусловием или цикл с постусловием (чаще используется цикл с предусловием).

– Если в цикле необходима инициализация и коррекция, то цикл for более предпочтителен. Этот цикл чаще всего используется при подсчете числа прохождений тела цикла с обновлением индекса.

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

В теле любого цикла можно использовать оператор break, который позволяет выйти из цикла, не завершая его.

while(<условие>)

break;

или

switch(<целое выражение>)

{ case <константное выражение1>: <оператор1>; break;

...

}

Оператор continue позволяет пропустить часть операторов тела цикла и начать новую итерацию.

while(<условие>)

continue;

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

main () {

int i,j;

float k;

printf(" Введите j");

scant("%d", &j);

for (i = -5; i <= 5; i++)

{ if(i==0)

continue;

}

printf("\n %d/%d =%f ",j, i,k=j/i);

Оператор безусловного перехода (goto)

Общая форма записи

goto метка;

метка: <оператор>;

Выполнение оператора goto вызывает передачу управления в программе оператору, помеченному меткой. Переход может осуществляться в пределах одной функции.

Для отделения метки от оператора используется двоеточие. Помеченный оператор может появиться в программе как до оператора goto, так и после. Имена меток образуются по тем же правилам, что и имена переменных.

b: s=const*flag;

if (size>12)

gоtо a;

else

gоtо b;

а: cost=cost*3;

flag= 1;

Использование goto в программе крайне нежелательно, так как он усложняет логику программы. Язык Си реализован таким образом, что можно программировать без оператора goto.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: