Процедуры и функции

Процедуры служат для задания последовательности действий, направленных на изменение внешней по отношению к ним программной обстановки. Примерами такого изменения являются синтаксис значений новых переменных, запись информации во внешний файл и т.п. Вызов процедуры осуществляется указанием её имени в том месте программы, где предполагается выполнение кода, указанного в процедуре. Синтаксис объявления процедуры:

Sub <Наименование>[(<формальные параметры>)];
Begin
    
End Sub <Наименование>;

Функции служат, прежде всего, для определения алгоритма вычисления некоторого значения. В этом отношении функции подобны выражениям, которые также вычисляют значение. Функция обязательно должна возвращать какое-либо значение. Для этого необходимо использовать оператор Return с параметром-результатом данной функции. В теле процедуры оператор Return может быть использован без параметров для выхода из неё. Синтаксис объявления функции:

Function <Наименование>[(<формальные параметры>)]: <тип значения>
Begin
    
Return <значение>
End Function <Наименование>;

Все константы, переменные, процедуры/функции, описанные в теле процедуры или функции, являются локальными для неё.

В добавление к локально определенным объектам и формальным параметрам, объекты, определенные во внешнем для процедурыфункции блоке, также видны внутри тела, за исключением тех объектов, которые имеют те же идентификаторы, что и локальные объекты и параметры процедуры/функции.

Использование идентификатора процедуры/функции внутри её тела приведет к её рекурсивному вызову.

Предварительное описание процедур/функций отсутствует. Любая процедура/функция может быть вызвана, если её описание находится в текущей блоке кода, или в одном из объемлющих блоков кода.

Sub Main;
    
Sub SimpleSub(a, b: Integer; var c: Integer);
    
Begin // Начало текста процедуры
        c := a + b;
    
End Sub SimpleSub; // Конец текста процедуры
Var
    a: Integer; 
// Объявление переменных для процедуры Main
Begin
    SimpleSub(
13, a); // Вызов процедуры
    Debug.WriteLine(a); // Вывод результата, полученного в переменной a
End Sub Main;

Sub Main;
    
Function SimpleFunc(a, b: Integer): Double;
    
Var // Объявление переменных для функции
        c: Double;
    
Begin // Начало текста функции
        c := (a + b) / 2;
        
Return c; // Результат, возвращаемый функцией
    End Function SimpleFunc; // Конец текста функции
Var // Объявление переменных для процедуры Main
    c: Double;
Begin
    c := SimpleFunc(45); // Использование функции
End Sub Main;

См. также:

Руководство по языку Fore | Формальные параметры | Классы и объекты | Интерфейсы