![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
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; Прочитано: 311 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
