For (выражение 1; выражение 2; выражение 3)
Оператор;
переводится в
Выражение 1;
While (выражение 2)
{
Оператор;
Выражение 3;
}
Пример
#include <stdio.h>
Void main(void)
{ long i;
for (i=1000000;i>=0;i-=2)
printf(“\n%ld”,i);
printf(“\n”); }
Оператор continue.
Если оператор continue встречается в операторе цикла, то он передает управление на начало следующей итерации цикла. В циклах while и do while – на проверку условия, в цикле for – на приращение. Этот оператор необходим, если нужно закончить текущую итерацию цикла и не выполнять оставшиеся операторы, а сразу перейти к следующей итерации цикла.
#include <stdio.h>
void main(void) // Пример программы, выводящей натуральные числа кратные 7.
{ int i;
for (i=1;i<1000;i++)
{
if(i%7) continue;
printf(“%8d”,i);
}
}
Функции в языке С
Функция – это самостоятельная программная единица, спроектированная для решения конкретной задачи, обычно повторяющаяся несколько раз.
Объявление функции
Основная форма описания (definition) имеет вид:
тип <имя функции>(список параметров)
{
Тело функции
}
Тип определяет тип значения, которое возвращает функция с помощью оператора return. Если тип не указан, то по умолчанию предполагается, что функция возвращает целое значение (типа int). Список параметров состоит из перечня типов и имен параметров, разделенных запятыми. Функция может не иметь параметров, но круглые скобки необходимы в любом случае. В списке параметров для каждого параметра должен быть указан тип. Пример:
F(int x,float z)
Оператор return
Оператор имеет два варианта использования. Во-первых, это оператор вызывает немедленный выход из функции и возврат в вызывающую программу. Во-вторых, этот оператор может использоваться для возврата значения функции. Отметим, что в теле функции может быть несколько операторов return, но может и не быть ни одного. В этом случае возврат в вызывающую программу происходит после выполнения последнего оператора тела цикла. Примеры функций.
Float step(float a, int b)
{
Float i;
if (a<0) return -1; /* основание отрицательное */
for(i=1;i<=b;i++) a*=a;
Return a;
}
Max(int a, int b)
{
Int m;
if (a>b) m=a;
else m=b;
Return m;
}
Max(int a, int b)
{
if (a>b) return a;
Return b;
}
Max(int a, int b)
{ return (a>b)&a:b; }
В случае, когда оператора return нет или за ним нет значения, то возвращаемое значение неизвестно. Если функция должна возвращать значение, но не делает этого, компилятор выдает предупреждение. Все функции, возвращающие значения, могут использоваться в выражениях языка С, но они не могут использоваться в левой части оператора присваивания, за исключением тех случаев, когда возвращаемым значением является указатель. Когда функция не возвращает никакого значения, она должна быть описана как функция типа void(пустая). Пример вывода горизонтальной строки, состоящей из одного символа.
Void gorizontal_line(char ch)
{
Int i;
for(i=0; i<80; i++) printf(“%c”,ch);
}
Можно не объявлять функцию типа void, тогда она по умолчанию будет иметь тип intи не возвращать никакого значения. Это вызовет предупреждающее сообщение компилятора, но не будет препятствием для компиляции. Однако объявление типа возвращаемого значения является хорошим правилом.
Прототипы функций
Особенность языка С является то, что для создания правильного машинного кода функции ему необходимо сообщить до первого вызова функции тип возвращаемого результата, а также количество и тип аргументов. Для этих целей в С используется понятие прототип функции. Прототип функции задается следующим образом:
тип <имя функции>(список параметров);
Использование прототипа функции является объявлением функции (declaration). Чаще всего прототип функции совпадает с заголовком в описании функции, хотя это не всегда так. При объявлении функции компилятору важно знать имя функции, количество и тип параметров, и тип возвращаемого значения. При этом имена формальных параметров не играют никакой роли и игнорируются компилятором. Поэтому прототип функции может выглядеть так:
int func(int a, float b, char *c); или int func(int, float, char *);Эти объявления равносильны.
Пример:
#include <stdio.h>
float sqr(float a); /* это прототип функции */
Void main(void)
{
Float b;
b=5.2;
printf(“Квадрат числа %f равен %f”, b, sqr(b));
}
float sqr(float a) /* это описание функции */
{ return a*a; }
Если функция не имеет аргументов, то при объявлении прототипа такой функции следует вместо аргументов писать ключевое слово void. Это касается и функции main(). Ее объявление должно иметь вид void main(void)или main(void).
#include <stdio.h>
void line(void); /* прототип функции */
Void main(void)
{ line(); }
Void line(void)
{
Int i;
for(i=0;i<80;i++) printf(“-“);
}
Ранее говорили о стандартных заголовочных файла (header files). Заголовочные файлы содержат два типа информации: первый – это отдельные определения, которые используются функциями. Второй – это прототипы функций, относящиеся к этому заголовочному файлу. Примеры таких заголовочных файлов: stdio.h, string.h, conio.h, iostream.h, stdlib.h, math.h и т.д.