Процедуры и функции. Функции
Функции в программировании
Как задается определение функции в языках программирования? В языке C# такое определение называется объявлением функции, и оно может размещаться там же, где объявляются переменные. Синтаксически объявление функции состоит из двух частей:
<заголовок функции> <тело функции>
Заголовок однозначно определяет:
- Множество, которому принадлежат значения функции;
- Имя функции;
- Число аргументов;
- Для каждого аргумента его имя и то множество, которому принадлежит аргумент.
Синтаксически все выглядит достаточно просто и эффективно. Вот как выглядит формальный синтаксис заголовка функции:
<тип значения, возвращаемого функцией> <имя функции> (<список формальных параметров>)
Ранее мы говорили, что тип задает определение множества. Указав тип возвращаемого значения, мы тем самым определяем множество, которому принадлежат значения функции. Число аргументов функции определяется числом элементов в списке формальных параметров. Каждый формальный параметр задает аргумент функции – его имя и множество, которому принадлежит аргумент. Элементы в списке формальных параметров, разделяются запятыми, а каждый параметр задается следующим синтаксисом:
<тип параметра> <имя параметра>
Рассмотрим в качестве примера функцию y = x2. На языке C# заголовок этой функции может выглядеть так:
int Quadrat(int x)
В этом случае аргумент x нашей функции должен быть целым числом, значение функции также принадлежит множеству целых чисел. В большинстве случаев разумнее было бы определить заголовок этой функции следующим образом:
double Quadrat(double x)
В этом случае аргумент и значение функции являются числами с целой и дробной частями, частным случаем которых являются целые числа.
Мы выяснили роль заголовка функции. А какова роль тела функции? Тело функции задает отображение, позволяющее преобразовать аргумент x в результат y. Синтаксически тело функции – это блок – совокупность операторов и объявлений, заключенная в фигурные скобки. На этот блок накладывается дополнительное требование, - последним выполняемым оператором блока должен быть оператор возврата, имеющий следующий синтаксис:
return <выражение>;
Этот оператор завершает выполнение функции, возвращая в качестве результата вычисления функции значение выражения, заданного оператором return.
Функции, изучаемые в школе, достаточно простые и, чаще всего, задаются одной формулой. На языке C# для таких функций блок, задающий тело функции, может состоять из одного оператора return, выражение в котором задает формулу, представляющую нашу функцию.
Представим полное описание объявления функции y = x2, содержащее как заголовок, так и тело функции:
double Quadrat(double x) { return x * x; }
Рассмотрим функцию SumAB, вычисляющую сумму двух аргументов. Ее объявление может быть задано следующим образом:
double SumAB(double a, double b) { return a + b; }
В реальных задачах функции, объявляемые в языке программирования, могут быть весьма сложными. В этом случае блок, реализующий тело функции, может содержать объявления локальных переменных, необходимых для вычисления значения функции, операторы присваивания, выбора, цикла, вызовы функций.