Ver Mensaje Individual
  #4  
Antiguo 19-04-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita