Uma função é uma sub-rotina que retorna um resultado (número, cadeia de caracteres, etc.)
Imagine que você encomendou um produto em uma loja online. Do ponto de vista da programação, você chamou uma determinada sub-rotina e, ao contrário de um procedimento, esta sub-rotina deve retornar um resultado - entregar o produto solicitado. Essas sub-rotinas são chamadas de funções.
Uma função é formatada da mesma forma que um procedimento:
função <nome da função> (lista de parâmetros como <nome da variável>:<seu tipo> separados por ponto e vírgula): <tipo do valor de retorno>;
começar
<corpo funcional>
fim;
A diferença entre uma função e um procedimento é que uma função deve retornar um valor. Para fazer isso, você precisa usar o nome da função como uma variável ou a variável especial Result:
função Soma(a, b:inteiro): inteiro;
começar
Soma := a + b;
fim;
ou
função Soma(a, b:inteiro): inteiro;
começar
Resultado:= a + b;
fim;
Uma função que retorna a média aritmética de dois números inteiros ficaria assim:
função média(a, b: inteiro): real;
começar
média := (a + b) / 2;
fim;
Resta entender como chamar esta função no programa principal:
Você não deve chamar uma função da mesma forma que chama um procedimento:
média(10, 5);
O valor retornado pela função será perdido. É como se a mercadoria da loja online não fosse dada a ninguém, mas jogada fora. É improvável que o cliente goste.
É mais correto salvar o resultado em uma variável (ou imprimi-lo na tela):
a := média(10, 5);
ou
writeln(average(10, 5));