Функции

Пример

Пример

Пример

Пример

Пример

Пример

Пример

Пример

Пример

Пример

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

Пример

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

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.

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


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