Hola.
Es que esa no es la forma correcta de declarar el inicio y finalizacíon de una función o procedimiento, el formato general sería:
Código:
function Nombre (<parámetros>): tipo retorno;
<const (declaración de constantes locales)>
<type (definición local de tipos)>
<var (declaración de variables locales)>
<function(<parámetros>): tipo retorno; (declaración de funciones locales)
begin
...
end>
<procedure(<parámetros>); (declaración de procedimientos locales)
begin
...
end>
begin
(cuerpo de la función)
end;
Podes usar las funciones o procedimientos de dos modos, habiéndo sido declaradas externas a la función:
Código Delphi
[-]
function potencia(...): Integer;
begin
...
end;
function factorial(...): Integer;
begin
...
end;
function Suma(...): Integer;
begin
potencia(...);
factorial(...)
...
end;
o como locales a ella:
Código Delphi
[-]
function Suma(...): Integer;
...
function potencia(...): Integer;
begin
...
end;
function factorial(...): Integer;
begin
...
end;
begin
potencia(...);
factorial(...);
end;
Las funciones potencia y factorial (locales o externas) podrían escribirse de modo iterativo,
Código Delphi
[-]
function potencia( base, expo: Integer ): Integer;
var
i: Integer;
begin
Result := 1;
for i := 1 to expo do
Result := Result * base;
end;
function factorial( numero: Integer ): Integer;
var
i: Integer;
begin
Result := 1;
for i := 1 to numero do
Result := Result * i;
end;
o de modo recursivo:
Código Delphi
[-]
function potencia(base, expo: Integer): Integer;
begin
if expo = 0 then
potencia := 1
else
potencia := base * potencia(base, expo - 1);
end;
function factorial(n: Integer): Integer;
begin
if n = 0 then
factorial := 1
else
factorial := n * factorial( n - 1);
end;
Pero en cualquiera de los casos, contando con las funciones potencia/factorial, la función Suma podría ser:
Código Delphi
[-]
function Suma(const x, y: Integer): Double;
var
i: Integer;
begin
Result := 0;
for i := 0 to y do
Result := Result + potencia(x, i) / factorial(i);
end;
Saludos