Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
while(<выражение>; <оператор>;
Если выражение истинно (т. е. не равно нулю), то выполняется оператор или группа операторов, входящих в цикл while; затем выражение проверяется снова. Последовательность действий, состоящая из проверки и выполнения оператора, повторяется до тех пор, пока выражение не станет ложным (т. е. равным нулю). После этого происходит выход из цикла, и далее выполняется оператор, стоящий после оператора цикла. При построении цикла while, в него необходимо включить конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным. Иначе выполнение цикла никогда не завершится.
Цикл while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу.
Пример
к=5; | ||
п=10; | ||
while(к<п) | ||
{ | ||
printf("k=%d n=%d\n", | к, | п); |
к+=2; | ||
к=к+2; | ||
п++; | ||
} |
Цикл do...while
Общая форма записи
do <оператор>; while(<выражение>);
Цикл do...while — это цикл с постусловием, в котором истинность выражения проверяется после выполнения всех операторов, включенных в цикл. Тело цикла выполняется до тех пор, пока выражение не станет ложным, т. е. тело цикла выполнится хотя бы один раз. Использовать цикл лучше всего в тех случаях, когда должна быть выполнена хотя бы одна итерация.
Пример
printf("\п | Введите число | 10"); | |
do | scanf( | "%d",&number); | |
whi | le(number!=10); | ||
Пример
do | |||
{ | |||
printf(" | Введите | n>0"); | |
scanf("% | d", &n); | ||
} | |||
while (n<0) | r |
Цикл 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 %10о! \п", х, у);
Можно опустить одно или несколько выражений, но нельзя опускать точку с запятой. Параметры, находящиеся в заголовке цикла, можно изменить при выполнении операций в теле цикла.
Пример
к=2; | |
for(n=3; k<=25; | ) |
{ | |
к = к*п; | |
} |
В цикле for часто используется операция «запятая» для разделения нескольких выражений. Это позволяет включить в спецификацию цикла несколько инициализирующих или корректирующих выражений. Выражения, к которым применяется операция «запятая», будут вычисляться слева направо.
Пример
for(i=0, j=l; i<n; i++, j=i);
В Си допускаются вложенные циклы, т. е. когда один цикл находится нутри другого.
Пример
for ( | i= | = 0; | i<n; | i++) | ||
{ | ||||||
for | (j = | =0; j | <n; j | + +) | ||
{ | ||||||
} | ||||||
} |
Рекомендации по выбору цикла
При выборе цикла необходимо оценить следующие факторы. Нужен ли вам цикл с предусловием или цикл с постусловием (чаще используется цикл с предусловием). Если в цикле необходима инициализация и коррекция, то цикл for более предпочтителен. Этот цикл чаще всего используется при подсчете числа прохождений тела цикла с обновлением индекса, если в этом нет необходимости, то можно использовать while.
Операторы break и continue
В теле любого цикла можно использовать оператор break, который позволяет выйти из цикла, не завершая его. Оператор continue позволяет пропустить часть операторов тела цикла и начать новую итерацию.
Пример
while(<выражение>; {
break;
Пример
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 Д, | k=j/i); |
Оператор безусловного перехода goto Общая форма записи
goto метка;
метка: <оператор>;
Выполнение оператора goto вызывает передачу управления в программе оператору, помеченному меткой. Для отделения метки от оператора используется двоеточие. Помеченный оператор может появиться в программе как до оператора goto, так и после. Имена меток образуются по тем же правилам, что и имена переменных.
Пример
if | ( | size | > | 12) | |
gc | )tO | a; | |||
el | se | ||||
gc | )tO | b; | |||
а: | cost | = | cost*3; | ||
fl | ag= | = 1; | |||
b: | s= | = cons | t* | 'flag; |
Использование goto в программе крайне нежелательно, так как он усложняет логику программы. Язык Си реализован таким образом, что можно программировать без оператора goto.
Дата публикования: 2014-11-04; Прочитано: 297 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!