Функции
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Общая форма записи
Пример
Общая форма записи
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.
Функция — это самостоятельная единица программы, которая спроектирована для реализации конкретной задачи. Функция является подпрограммой, которая может содержаться в основной программе, а может быть
создана отдельно. Каждая функция выполняет в программе определенные действия. Использование функции позволяет, например, удобно организовывать вычисления с минимальными затратами сил и средств. После создания функции можно забыть, как она устроена, нужно лишь помнить, что она умеет делать.