Pascal - Funciones

Subprogramas

Un subprograma es una unidad / módulo de programa que realiza una tarea en particular. Estos subprogramas se combinan para formar programas más grandes. Esto se denomina básicamente "diseño modular". Un subprograma puede ser invocado por un subprograma / programa, que se denomina programa de llamada.

Pascal proporciona dos tipos de subprogramas:

  • Functions - estos subprogramas devuelven un solo valor.

  • Procedures - estos subprogramas no devuelven un valor directamente.

Funciones

UN functiones un grupo de declaraciones que juntas realizan una tarea. Cada programa Pascal tiene al menos una función, que es el programa mismo, y todos los programas más triviales pueden definir funciones adicionales.

Una función declarationle dice al compilador sobre el nombre de una función, el tipo de retorno y los parámetros. Una funcióndefinition proporciona el cuerpo real de la función.

La biblioteca estándar de Pascal proporciona numerosas funciones integradas que su programa puede llamar. Por ejemplo, funciónAppendStr() agrega dos cadenas, función New() asigna memoria dinámicamente a variables y muchas más funciones.

Definición de una función

En Pascal, un functionse define mediante la palabra clave de función. La forma general de una definición de función es la siguiente:

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

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

Una definición de función en Pascal consta de una función header, local declarations y una función body. El encabezado de la función consta de la función de palabra clave y unanamedado a la función. Aquí están todas las partes de una función:

  • Arguments- Los argumentos establecen el vínculo entre el programa que llama y los identificadores de función y también se denominan parámetros formales. Un parámetro es como un marcador de posición. Cuando se invoca una función, se pasa un valor al parámetro. Este valor se conoce como parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de parámetros de una función. El uso de tales parámetros formales es opcional. Estos parámetros pueden tener un tipo de datos estándar, un tipo de datos definido por el usuario o un tipo de datos de subrango.

    La lista de parámetros formales que aparecen en la declaración de la función pueden ser variables simples o subindicadas, matrices o variables estructuradas o subprogramas.

  • Return Type- Todas las funciones deben devolver un valor, por lo que a todas las funciones se les debe asignar un tipo. losfunction-typees el tipo de datos del valor que devuelve la función. Puede ser de tipo escalar o de subrango estándar, definido por el usuario, pero no puede ser de tipo estructurado.

  • Local declarations - Las declaraciones locales se refieren a las declaraciones de etiquetas, constantes, variables, funciones y procedimientos, que se aplican únicamente al cuerpo de la función.

  • Function Body- El cuerpo de la función contiene una colección de declaraciones que definen lo que hace la función. Siempre debe estar entre las palabras reservadas begin y end. Es la parte de una función donde se realizan todos los cálculos. Debe haber una declaración de asignación del tipo:name := expression;en el cuerpo de la función que asigna un valor al nombre de la función. Este valor se devuelve a medida que se ejecuta la función. La última declaración del cuerpo debe ser una declaración final.

A continuación se muestra un ejemplo que muestra cómo definir una función en pascal:

(* 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;

Declaraciones de funciones

Una función declarationle dice al compilador sobre el nombre de una función y cómo llamar a la función. El cuerpo real de la función se puede definir por separado.

Una declaración de función tiene las siguientes partes:

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

Para la función max () definida anteriormente, la siguiente es la declaración de función:

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

La declaración de función es necesaria cuando define una función en un archivo fuente y llama a esa función en otro archivo. En tal caso, debe declarar la función en la parte superior del archivo que llama a la función.

Llamar a una función

Al crear una función, das una definición de lo que tiene que hacer la función. Para usar una función, tendrá que llamar a esa función para realizar la tarea definida. Cuando un programa llama a una función, el control del programa se transfiere a la función llamada. Una función llamada realiza una tarea definida, y cuando se ejecuta su declaración de retorno o cuando se alcanza la última declaración de fin, devuelve el control del programa al programa principal.

Para llamar a una función, simplemente necesita pasar los parámetros requeridos junto con el nombre de la función, y si la función devuelve un valor, entonces puede almacenar el valor devuelto. A continuación se muestra un ejemplo simple para mostrar el uso:

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.

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Max value is : 200