Pascal - Funções

Subprogramas

Um subprograma é uma unidade / módulo de programa que executa uma tarefa específica. Esses subprogramas são combinados para formar programas maiores. Isso é basicamente chamado de 'design modular'. Um subprograma pode ser invocado por um subprograma / programa, que é chamado de programa de chamada.

Pascal fornece dois tipos de subprogramas -

  • Functions - esses subprogramas retornam um único valor.

  • Procedures - esses subprogramas não retornam um valor diretamente.

Funções

UMA functioné um grupo de declarações que juntas executam uma tarefa. Cada programa Pascal tem pelo menos uma função, que é o próprio programa, e todos os programas mais triviais podem definir funções adicionais.

Uma função declarationinforma ao compilador sobre o nome, o tipo de retorno e os parâmetros de uma função. Uma funçãodefinition fornece o corpo real da função.

A biblioteca padrão Pascal fornece várias funções integradas que seu programa pode chamar. Por exemplo, funçãoAppendStr() acrescenta duas strings, função New() aloca dinamicamente memória para variáveis ​​e muitas outras funções.

Definindo uma função

Em Pascal, um functioné definido usando a palavra-chave de função. A forma geral de definição de uma função é a seguinte -

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

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

Uma definição de função em Pascal consiste em uma função header, local declarations e uma função body. O cabeçalho da função consiste na função de palavra-chave e umnamedado à função. Aqui estão todas as partes de uma função -

  • Arguments- O (s) argumento (s) estabelecem a ligação entre o programa de chamada e os identificadores de função e também chamados de parâmetros formais. Um parâmetro é como um espaço reservado. Quando uma função é chamada, você passa um valor para o parâmetro. Esse valor é conhecido como parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número de parâmetros de uma função. O uso de tais parâmetros formais é opcional. Esses parâmetros podem ter tipo de dados padrão, tipo de dados definido pelo usuário ou tipo de dados de subfaixa.

    A lista de parâmetros formais que aparece na instrução da função pode ser variáveis ​​simples ou subscritas, arrays ou variáveis ​​estruturadas ou subprogramas.

  • Return Type- Todas as funções devem retornar um valor, portanto, todas as funções devem receber um tipo. ofunction-typeé o tipo de dados do valor que a função retorna. Pode ser padrão, escalar definido pelo usuário ou tipo de subfaixa, mas não pode ser do tipo estruturado.

  • Local declarations - As declarações locais referem-se às declarações para rótulos, constantes, variáveis, funções e procedimentos, que são aplicados apenas ao corpo da função.

  • Function Body- O corpo da função contém uma coleção de instruções que definem o que a função faz. Deve sempre ser colocado entre as palavras reservadas início e fim. É a parte de uma função onde todos os cálculos são feitos. Deve haver uma declaração de atribuição do tipo -name := expression;no corpo da função que atribui um valor ao nome da função. Este valor é retornado como e quando a função é executada. A última declaração no corpo deve ser uma declaração final.

A seguir está um exemplo que mostra como definir uma função em 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;

Declarações de função

Uma função declarationinforma ao compilador sobre o nome de uma função e como chamá-la. O corpo real da função pode ser definido separadamente.

Uma declaração de função tem as seguintes partes -

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

Para a função max () definida acima, a seguir está a declaração da função -

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

A declaração da função é necessária quando você define uma função em um arquivo de origem e chama essa função em outro arquivo. Nesse caso, você deve declarar a função na parte superior do arquivo que está chamando a função.

Chamando uma função

Ao criar uma função, você dá uma definição do que a função deve fazer. Para usar uma função, você terá que chamar essa função para executar a tarefa definida. Quando um programa chama uma função, o controle do programa é transferido para a função chamada. Uma função chamada executa uma tarefa definida e, quando sua instrução de retorno é executada ou quando a última instrução de fim é alcançada, ela retorna o controle do programa para o programa principal.

Para chamar uma função, você simplesmente precisa passar os parâmetros necessários junto com o nome da função e, se a função retornar um valor, você pode armazenar o valor retornado. A seguir está um exemplo simples para mostrar o 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.

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Max value is : 200