Segundo tipo procedural

program Meu_Segundo_Tipo_Procedural;

 type TCalc = function(X,Y:extended):extended;

 { Uma variável do tipo TCalc armazenara pontos de entrada (entry points) de funções do tipo: function(X,Y:extended):extended; }

function Soma(X,Y:extended):extended;

    begin Soma:=X+Y; end;

function Multiplica(X,Y:extended):extended;

   begin Multiplica:=X*Y; end;

 function Opera(Operacao:TCalc;X,Y:extended):extended;

{ devolve o resultado da Operação sobre X,Y }

    begin Opera:=Operacao(X,Y); end.