Функция это независимый набор объявлений и операторов, который обычно разрабатывается для выполнения конкретной задачи. В определении функции задается ее имя и число ее формальных параметров и приводятся объявления и операторы, которые задают ее действие. Эти объявления и операторы называются "телом функции". Определение функции может не содержать ее тела, а указывать на то, что функция находится в DLL и должна быть загружена из указанного файла в момент обращения к ней. Объявления формальных параметров задают имена для формальных параметров. Сфера действия этих имен заканчивается в конце функции. При вызове функции управление выполнением программы передается на вызванную функцию. Действительные аргументы, если они есть, передают свои значения вызванной функции. Выполнение оператора return в вызванной функции возвращает управление и возможное возвращаемое значение на вызов функции.
/* Объявление и определение функции */
ФУНКЦИЯ СложениеСтрок ( a, b )
{
IF ( ТИП( "a" ) != "C" OR ТИП( "a" ) != "C" ) RETURN "";
RETURN a + b;
}
Синтаксис:
FUNCTION [LOCAL | ЛОКАЛЬНАЯ] ИмяФункции([ИмяПараметра1[, ИмяПараметра2[,...]]])`
{
блок команд;
}
В "определении функции" задается ее имя, формальные параметры и тело функции. "Список-формальных-параметров" это последовательность имен формальных параметров, разделенных запятыми. Объявление формального параметра не содержит типа принимаемого значения. Поэтому, функция может быть вызвана с параметрами любого типа. Количество фактически переданных параметров может быть меньше количества формальных параметров. В этом случае недостающие параметры получат пустое значение при вызове функции. Если число фактических параметров больше чем формальных, то вызов функции не будет осуществлен и интерпретатор выдаст сообщение об ошибке.
Синтаксис: выражение([список-выражений])
"Вызов функции" это выражение, которое передает управление и действительные аргументы, если они есть, функции. В вызове функции "выражение" вычисляется для получения адреса функции, а "список-выражений" это список разделенных запятыми выражений. Значения этих выражений являются действительными аргументами, передаваемыми в функцию. Если у функции нет аргументов, то список выражений может быть пустым. При выполнении вызова функции:
Примечание. Выражения в списке аргументов функции могут быть вычислены в любом порядке, поэтому аргументы, значения которых могут быть изменены побочными эффектами из других аргументов, имеют неопределенные значения. Точка упорядочивания, задаваемая оператором вызова функции, гарантирует только то, что все побочные эффекты в списке аргументов вычисляются до передачи управления на вызванную функцию. Единственное требование к вызову функции состоит в том, что выражение до скобок должно вычисляться в адрес функции. Функция вызывается практически аналогично своему объявлению. Например, при объявлении функции задается имя функции, за которым в скобках следует список формальных параметров. Аналогично, при вызове функции нужно задать ее имя, за которым следует список аргументов в скобках.
Действительными аргументами могут быть любые значения. Все действительные аргументы передаются их значениями. Копия действительного аргумента передается соответствующему формальному параметру. Функция использует эту копию без какого-либо воздействия на переменную, из которой она была получена.