Функция
Функция – это подпрограмма, определяющая единственное значение. Отличия подпрограммы – функции от процедуры:
- Заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции:
1Function имя(описание формальных параметров): тип; - Раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;
- Обращение к функции – не оператор, а выражение вида:
1 |
имя функции (список фактических параметров); |
Список фактических параметров— это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того, имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
Вызов функции
При вызове процедур и функций необходимо соблюдать следующие правила:
- количество фактических параметров должно совпадать с количеством формальных;
- соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти.
Кроме того, все формальные параметры являются временными переменными — они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
Фактические параметры должны соответствовать по типу и совпадать по количеству формальным параметрам. Таким образом, выражение вызова функции MinMultMax из примера выше может быть представлено следующим фрагментом программы:
1 2 3 4 5 |
var n1, n2, n3: integer; begin readln(n1, n2, n3); writeln(MinMultMax(n1, n2, n3)); end. |