3.2 Правила вызова функций. Программы
Для исполнения ранее определенной функции необходимо поместить в текст программы соответствующее указание, которое называется вызовом функции. Эта операция имеет второй приоритет, а ее результатом является возвращаемое значение функции. С точки зрения синтаксиса, вызов функции должен содержать ее имя и круглые скобки с объектами, для которых нужно вычислить значение функции. Эти объекты называются фактическими параметрами функции. При вызове функции их можно задать непосредственно, используя правила представления объектов соответствующих типов, или с помощью имен, или выражений. В приводимом ниже операторе-выражении используются все три перечисленных формы задания фактических параметров. Для этого применяются функция Max(), определенная в примере 3.1, и стандартная функция sqrt() вычисления квадратного корня.
double x=333.0, y, z;
…
z=sqrt(2.0)+Max(x, sqrt(Max(0.0, y)+33.0);
Правила языка требуют, чтобы программист заранее (до первого вызова) сообщал компилятору о каждой используемой в программе функции. Такое предупреждение называется прототипом или объявлением функции. Оно состоит из типа возвращаемого значения, имени функции, круглых скобок с типами формальных параметров и точки с запятой. Кроме идентификаторов типов в круглых скобках разрешается указывать имена формальных параметров. Обычным местом размещения прототипов является начало программы. Для определенной выше функции Max() ее прототип имеет следующий вид:
double Max(double, double);
// Или по-другому
double Max(double x1, double x2);
При каждом вызове функции компилятор осуществляет сравнение типов фактических параметров с типами, указанными в прототипе функции. При их несовпадении он самостоятельно пытается выполнить нужное преобразование типов. Если это сделать не удается, то компиляция прекращается и на экран выводится соответствующее сообщение.
Прототипы стандартных функций хранятся в нескольких файлах с расширением .h (от слова head). Например, в файл с именем math.h сгруппированы прототипы функций для вычисления значений элементарных математических функций, а в файл с именем stdio.h – прототипы функций ввода-вывода. При использовании стандартной функции программист должен добавить файл с ее прототипом к тексту своего приложения. Для этого служит команда компилятору следующего вида
#include <Имя_файла>
Она должна находится в тексте до первого вызова стандартной функции. Обычно, таких команд бывает несколько и они все размещаются в начале программы. Например, чтобы воспользоваться стандартной функцией sqrt() для вычисления квадратного корня необходимо включить в текст приложения команду
#include <math.h>
Отметим, что командой include можно добавить к тексту приложения содержимое любого файла. В этом случае после идентификатора include в кавычках указывается путь к файлу и его имя.
Программой или приложением на языке Си, по определению, называется совокупность функций, содержащая функцию с именем main, которая называется главной. Именно с вызова (исполнения) этой функции операционная система начинает выполнение любой программы. Остальные функции вызываются из главной функции и друг из друга в порядке, который определяется программой. Завершение правильно написанной программы происходит так же в главной функции. Таким образом, самой короткой программой является функция вида