program Meu_Segundo_Tipo_Procedural;
{ Turbo Pascal 7 source }
{ Delphi Source }
{ Joao Paulo Schwarz Schuler }
{ http://www.schulers.com/jpss }
type TCalc = function(X,Y:extended):extended;
{ Uma variavel do tipo TCalc armazenara pontos
de entrada (entry points) de funcoes 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 Operacao sobre X,Y }
begin
Opera:=Operacao(X,Y);
end;
begin { of program }
WriteLn(Opera(Soma,10,20)); { imprime 30 em potencia de 10 }
WriteLn(Opera(Multiplica,10,20)); { imprime 200 em potencia de 10 }
end. { of program }
{ Vale observar que os Eventos do Delphi sao implementados
por meio de tipos procedurais.
Ex.:
type TNotifyEvent = procedure (Sender:TObject) of object; }