Dúvida quanto a Procedimentos em Funções no Delphi

Delphi

26/03/2015

Boa tarde Amigos

Pode parecer meio idiota, mas sempre quebro a cabeça quanto a diferença entre procedimentos e funções no Delphi.

Procurando a definição é sempre a mesma resposta: Função retorna alguma coisa e Procedimento não. Pois bem eu fiz o seguinte:

Procedure somaP(A,B : Integer);
var
resultado : Integer;
begin
  try
    resultado := A + B;
  finally
    ShowMessage(IntToStr(Resultado));
  end;
end;

Function somaF(A,B : Integer): Integer;
begin
  try
    result := A + B;
  finally
    ShowMessage(IntToStr(Result));
  end;
end;


Esse exemplo funciona do mesmo jeito tanto faz se foi uma função ou procedimento, ele vai apresentar o valor da soma entre os dois números, e ao meu modo de entender, ou seja, vai existir o retorno de algo, que no caso é o resultado da soma.

Então procedimento também retorna "alguma coisa" ao meu modo de entender e ver. Agora me expliquem a real diferença entre as duas situações, me de exemplos que convençam, me mostre exemplos que realmente exemplifique/prove a diferença prática entre função e procedimento, e quando usar cada uma se houver.
Pedro

Pedro

Curtidas 0

Respostas

Thiago Santana

Thiago Santana

26/03/2015

Pedro veja!
Existe uma enorme diferença entre função e procedimento, com base nos seus exemplos vou te mostrar a diferença!

Boa tarde Amigos

Pode parecer meio idiota, mas sempre quebro a cabeça quanto a diferença entre procedimentos e funções no Delphi.

Procurando a definição é sempre a mesma resposta: Função retorna alguma coisa e Procedimento não. Pois bem eu fiz o seguinte:

Procedure somaP(A,B : Integer);
var
resultado : Integer;
begin
  try
    resultado := A + B;
  finally
    ShowMessage(IntToStr(Resultado));
  end;
end;

Function somaF(A,B : Integer): Integer;
begin
  try
    result := A + B;
  finally
    ShowMessage(IntToStr(Result));
  end;
end;


Esse exemplo funciona do mesmo jeito tanto faz se foi uma função ou procedimento, ele vai apresentar o valor da soma entre os dois números, e ao meu modo de entender, ou seja, vai existir o retorno de algo, que no caso é o resultado da soma.

Então procedimento também retorna "alguma coisa" ao meu modo de entender e ver. Agora me expliquem a real diferença entre as duas situações, me de exemplos que convençam, me mostre exemplos que realmente exemplifique/prove a diferença prática entre função e procedimento, e quando usar cada uma se houver.


Sua função somaF retorna um valor inteiro!
Então vc pode fazer o seguinte:
Vamos supor que existe a variavel "valorDaSoma" do tipo Inteiro

valorDaSoma := somaF(5,9);



Já com o procedimento você não tem como captar esse valor!
Veja sua função ou procedimento podem estar em Units diferentes, com a função você consegue capturar esse valor já com o procedimento não!
Espero ter ajudado!
GOSTEI 0
Marcos P

Marcos P

26/03/2015

Pedro,

Na verdade a diferença está na referência EXTERNA ao valor somado...

Do ponto de vista de estrutura interna, como seus exemplos demonstram, ambos são muitos similares ( exceto pelo "result" da function que você não declara explicitamente ).

Externamente, contudo, você acessa o resultado da Function sem problema, enquanto o resultado do procedimento é inacessível.

Complementando a resposta do Thiago...

valorDaSoma := somaF(5,9).... ok !

valorDaSoma := somaP(5,9)..... sem chance !

Por isso que na definição mais simples, function retorna valor e procedure não retorna !
( pois na procedure, o que vale, a lógica e os ajustes implementados internamente... )
GOSTEI 0
Thiago Santana

Thiago Santana

26/03/2015

Pedro,

Na verdade a diferença está na referência EXTERNA ao valor somado...

Do ponto de vista de estrutura interna, como seus exemplos demonstram, ambos são muitos similares ( exceto pelo "result" da function que você não declara explicitamente ).

Externamente, contudo, você acessa o resultado da Function sem problema, enquanto o resultado do procedimento é inacessível.

Complementando a resposta do Thiago...

valorDaSoma := somaF(5,9).... ok !

valorDaSoma := somaP(5,9)..... sem chance !

Por isso que na definição mais simples, function retorna valor e procedure não retorna !
( pois na procedure, o que vale, a lógica e os ajustes implementados internamente... )


Exatamente isso Marcos! ;)
Conseguiu decifrar a diferença Pedro?
GOSTEI 0
POSTAR