Cassic

Parâmetro

Autor: Tadeu Pereira


  A passagem de valores entre um código e uma sub-rotina é feita através de parâmetros, dessa maneira os parâmetros têm como finalidade ser uma ponte de comunicação bidirecional entre um código e uma sub-rotina.

  Sintaxe:

  procedure Nome_Sub_Rotina(Parâmetro_1, Parâmetor_2: Tipo_1
   [; Parâmetor_3: Tipo_2;
  ...;
  Parâmetor_n: Tipo_m ] );

  Parâmetro Formal e Real

  Os parâmetros formais são os declarados junto com a identificação da sub-rotina e serão tratados pela mesma como variáveis, enquanto os parâmetros reais são os valores passados pelo código no momento da chamada da sub-rotina.

  Passagem de Parâmetro por Valor

  Os Parâmetro passados por valor a uma sub-rotina não alteram o valor real do mesmo, mas o seu valor formal pode ser manipulado pela sub-rotina.

  Crie um novo projeto e configure igual ao anterior, depois vá até a seção private e declare a identificação do procedimento:

  procedure Potencia(Base, Expoente: Integer);

  Em seguida tecle <Ctrl+Shift+C> sobre a identificação e entre com o código em negrito:

01
procedure TForm1.Potencia(Base, Expoente: Integer);
02
var
03
 Contador, Resultado: Integer;
04
begin
05
 Resultado := 1;
06
 for Contador := 1 to Expoente do Resultado := Resultado * Base;
07
 LblResultado.Caption := 'Resultado : ' + IntToStr( Resultado );
08
end;

  Esse procedimento é semelhante ao anterior, mudando apenas a utilização dos parâmetros no lugar dos componentes SpinEdit para obter o resultado desejado. A chamada do procedimento muda um pouco como mostrado a seguir:

01
procedure TForm1.BtnPortencClick(Sender: TObject);
02
begin
03
  Potencia( SEdBase.Value, SEdExpo.Value );
04
end;

  Passagem de Parâmetro por Referência

  A passagem de parâmetro por referência difere da passagem por valor pela alteração do valor real sempre que o valor formal for manipulado.

  A sintaxe é semelhante a anterior, mas para transformar um parâmetro passado por valor em um passado por referência basta colocar a palavra reservada var antes do parâmetro que deseja.

  Para o nosso exemplo configure um novo projeto igual ao anterior e entre com a identificação do procedimento na seção private:

  procedure Potencia(Base, Expoente: Integer;

  var Retorno: string);

  Tecle <Ctrl+Shift+C> sobre essa declaração e entre com o código:

01
procedure TForm1.Potencia(Base, Expoente: Integer;
02
  var Retorno: string);
03
var
04
  Contador, Resultado: Integer;
05
begin
06
  Resultado := 1;
07
  for Contador := 1 to Expoente do Resultado := Resultado * Base;
08
  Base := Resultado;
09
  Retorno := 'Resultado : ' + IntToStr( Base );
10
end;

  Esse procedimento recebeu um terceiro parâmetro, mas esse parâmetro foi passado por referência, ou seja, sempre que mudarmos o valor do parâmetro, o seu valor real será mudado. Entre com a chamada do procedimento OnClick do BtnPortenc:

01
procedure TForm1.BtnPortencClick(Sender: TObject);
02
var
03
  Resposta: string;
04
begin
05
  Potencia( SEdBase.Value, SEdExpo.Value, Resposta );
06
  LblResultado.Caption := Resposta;
07
end;

  Os dois procedimentos anteriores colocavam o resultado direto na propriedade Caption do componente LblResultado, nesse exemplo a propriedade é mudada depois da chamada do procedimento Potencia(linha 05), uma vez que a variável Resposta é passada por referência à mesma.