Паскаль - Функции

Подпрограммы

Подпрограмма - это программный блок / модуль, который выполняет определенную задачу. Эти подпрограммы объединяются в более крупные программы. Это в основном называется «Модульный дизайн». Подпрограмма может быть вызвана подпрограммой / программой, которая называется вызывающей программой.

Паскаль предоставляет два типа подпрограмм:

  • Functions - эти подпрограммы возвращают одно значение.

  • Procedures - эти подпрограммы не возвращают значение напрямую.

Функции

А functionпредставляет собой группу утверждений, которые вместе выполняют задачу. Каждая программа на языке Pascal имеет по крайней мере одну функцию, которой является сама программа, и все самые тривиальные программы могут определять дополнительные функции.

Функция declarationсообщает компилятору имя функции, тип возвращаемого значения и параметры. Функцияdefinition предоставляет фактическое тело функции.

Стандартная библиотека Pascal предоставляет множество встроенных функций, которые может вызывать ваша программа. Например, функцияAppendStr() добавляет две строки, функция New() динамически выделяет память для переменных и многих других функций.

Определение функции

В Паскале functionопределяется с помощью ключевого слова function. Общая форма определения функции следующая:

function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;

begin
   ...
   < statements >
   ...
   name:= expression;
end;

Определение функции в Паскале состоит из функции header, местный declarations и функция body. Заголовок функции состоит из ключевого слова function иnameдано функции. Вот все части функции -

  • Arguments- Аргумент (ы) устанавливает связь между вызывающей программой и идентификаторами функции, а также называется формальными параметрами. Параметр похож на заполнитель. Когда функция вызывается, вы передаете значение параметру. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Использование таких формальных параметров необязательно. Эти параметры могут иметь стандартный тип данных, определяемый пользователем тип данных или тип данных поддиапазона.

    Список формальных параметров, появляющийся в операторе функции, может быть простыми переменными или переменными с индексами, массивами или структурированными переменными или подпрограммами.

  • Return Type- Все функции должны возвращать значение, поэтому всем функциям должен быть назначен тип. Вfunction-type- тип данных значения, возвращаемого функцией. Это может быть стандартный, определяемый пользователем скалярный тип или тип поддиапазона, но он не может быть структурированным типом.

  • Local declarations - Локальные объявления относятся к объявлениям для меток, констант, переменных, функций и процедур, которые применяются только к телу функции.

  • Function Body- Тело функции содержит набор операторов, которые определяют, что функция делает. Его всегда следует заключать между зарезервированными словами begin и end. Это часть функции, в которой выполняются все вычисления. Должен быть оператор присваивания типа -name := expression;в теле функции, которая присваивает значение имени функции. Это значение возвращается при выполнении функции. Последний оператор в теле должен быть завершающим оператором.

Ниже приведен пример, показывающий, как определить функцию на паскале.

(* function returning the max between two numbers *)
function max(num1, num2: integer): integer;

var
   (* local variable declaration *)
   result: integer;

begin
   if (num1 > num2) then
      result := num1
   
   else
      result := num2;
   max := result;
end;

Объявления функций

Функция declarationсообщает компилятору об имени функции и о том, как ее вызвать. Фактическое тело функции можно определить отдельно.

Объявление функции состоит из следующих частей -

function name(argument(s): type1; argument(s): type2; ...): function_type;

Для описанной выше функции max () следующее объявление функции:

function max(num1, num2: integer): integer;

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

Вызов функции

При создании функции вы даете определение того, что функция должна делать. Чтобы использовать функцию, вам нужно будет вызвать эту функцию для выполнения определенной задачи. Когда программа вызывает функцию, управление программой передается вызываемой функции. Вызываемая функция выполняет определенную задачу, и когда выполняется ее оператор return или когда достигается последний оператор end, она возвращает управление программой обратно в основную программу.

Чтобы вызвать функцию, вам просто нужно передать необходимые параметры вместе с именем функции, и если функция возвращает значение, вы можете сохранить возвращаемое значение. Ниже приведен простой пример, показывающий использование -

program exFunction;
var
   a, b, ret : integer;

(*function definition *)
function max(num1, num2: integer): integer;
var
   (* local variable declaration *)
   result: integer;

begin
   if (num1 > num2) then
      result := num1
   
   else
      result := num2;
   max := result;
end;

begin
   a := 100;
   b := 200;
   (* calling a function to get max value *)
   ret := max(a, b);
   
   writeln( 'Max value is : ', ret );
end.

Когда приведенный выше код компилируется и выполняется, он дает следующий результат:

Max value is : 200