Dúvida quanto a Procedimentos em Funções no Delphi
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:
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.
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
Curtidas 0
Respostas
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!
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
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!
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:
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.
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
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... )
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
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... )
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