Escolar Documentos
Profissional Documentos
Cultura Documentos
Sintaxe:
Uma Function pode receber nenhum, um ou vrios parmetros de entrada e retornar
um determinado valor, vamos a sintaxe bsica:
Listagem 1: Sintaxe de um Function
Function NomeFuno(Parmetro1:Tipo;Parmetro2:Tipo): Tipo de Retorno;
Var
{declarao de variveis se necessrio}
Begin
{Instrues}
//Para retornar o valor desejado podemos usar a palavra reservada Result.
Result := Valor de Retorno;
Exemplos:
Vamos ao exemplo de uma funo muito popular na internet para somar dois valores
inteiros e retornar um valor inteiro. Notem que essa funo vai receber 2 parmetros
do tipo integer e retornar a soma que do tipo integer.
Listagem 3: Funo para somar 2 valores e retornar o valor da soma
function Soma(a, b: integer): integer;
begin
//Retorna o valor da soma a + b.
Result := a + b;
end;
Agora um exemplo de procedure que vai receber um valor inteiro e verificar se esse
valor par ou mpar, ao final emite uma mensagem na tela.
Listagem 4: Procedure para verificar se o valor par ou mpar
procedure VerificaParImpar(a: integer);
begin
if a mod 2 = 0 then
ShowMessage('Nmero par!')
else
ShowMessage('Nmero mpar!');
end;
Notem que a procedure emite uma mensagem avisando se o valor par ou mpar,
essa mensagem no pode ser considerada com um valor de retorno mas sim parte
das instrues de processamento das informaes. J no caso da function ela
processa a soma de a + b e retorna o valor da soma, podemos atribuir esse valor a
um determinado componente ou varivel, na procedure no podemos executar esse
tipo de atribuio, pois ela no possui valor de retorno.
Parmetros:
Como j foi mencionado se necessrio podemos passar parmetros para functions e
procedures, esses parmetros podem ser por valor ou referncia.
Valor: Nos 2 exemplos acima foram passados parmetros por valor, ou seja,
internamente no compilador ser preenchido o parmetro que est entre parnteses
com uma cpia do valor de origem, para que esse valor seja usado dentro da function
ou procedure, mas o valor original no ser alterado, exemplo:
Listagem 5: Exemplo de parmetro por valor
procedure TForm1.btn1Click(Sender: TObject);
var
a, b: Integer;
begin
//Inicia "a" com valor 1
a := 1;
//Varivel "b" recebe o valor de retorno da funo SomaValor passando a vairvel
"a" como parmetro.
b := SomaValor(a);
//Emite mensagem com os valores
ShowMessage('Valor de (a) antes chamada da funo: ' + IntToStr(a) + #13 +
'Valor de (b) aps chamada da funo: ' + IntToStr(b)
'Valor de (a) aps chamada da funo: ' + IntToStr(a));
end;
function TForm1.SomaValor(x: integer): Integer;
begin
//Adiciona 1000 ao valor de a
x := x + 1000;
//Retorna o valor de a
Result := x;
end;
+ #13 +
a := 1;
//Chama a procedure SomaValor2 e passa como parmetro a varivel "a"
//e como parmetro de sada varivel "retorno"
SomaValor2(a,retorno);
//Emiti mensagem com o valor da varivel "retorno"
ShowMessage('Valor da varivel (retorno): ' + IntToStr(retorno));
end;
procedure TForm1.SomaValor2(x: integer; out saida: Integer);
begin
//Adiciona 1000 ao valor de "x"
x := x + 1000;
//Atribui o valor de "x" ao parmetro saida que foi declarado como "out"
saida := x;
end;
Declarao:
Chamadas:
Para chamar uma function ou procedure muito simples, no caso da function basta
digitar o mesmo nome da assinatura da mesma, sendo precedida ou no de
parnteses, depende da necessidade de passar parmetros, atribuir o valor de
retorno para uma varivel do mesmo tipo de retorno da function.
Listagem 10: Chamada de uma function
var
resultado: Integer;
begin
//Chamando function, passa os parmetros e atribui o valor de retorno
resultado := Somar(10, 20);
ShowMessage('Valor da soma: ' + IntToStr(resultado));
end;
http://www.devmedia.com.br/conceitos-basicos-sobre-procedures-e-functions-no-delphi/25303