NAO SEI O CONCEITO DE FUNCOES...
Boa tarde...
Nunca uso funções do tipo: Funcrion Calcular(x as integer, y as Integer) as integer
Quando preciso fazer algo do tipo uso:
Onde A, B e C são variáveis publicas.
Resolvi começar a usar funçoes... AÃ produzi o seguinte:
Mas o valor de Z sempre é zero. O resultado deveria ser 11. Pq dá zero??
Acho que estou me perdendo no conceito de função. Alguém poderia me explicar de acordo com o meu exempo, como uma função retorna o valor do cálculo quando é chamada?
Obrigado!
Nunca uso funções do tipo: Funcrion Calcular(x as integer, y as Integer) as integer
Quando preciso fazer algo do tipo uso:
Private Sub Calcular()
a = 2
b =3
c = a + b
End sub
Onde A, B e C são variáveis publicas.
Resolvi começar a usar funçoes... AÃ produzi o seguinte:
Public Function Calcular(a As Integer, b As Integer) As Integer
a = a + 1
b = b + 1
End Function
Private Sub Command7_Click()
Dim a As Integer
Dim b As Integer
a = 4
b = 5
z = Calcular(a, b)
MsgBox z
End Sub
Mas o valor de Z sempre é zero. O resultado deveria ser 11. Pq dá zero??
Acho que estou me perdendo no conceito de função. Alguém poderia me explicar de acordo com o meu exempo, como uma função retorna o valor do cálculo quando é chamada?
Obrigado!
simples colega, se vc deseja somar a + b, então a sua função deve exibir este resultado, é melhor assim.
ex:
vc fez certo mas usou errado veja
Public Function Calcular(a As Integer, b As Integer) As Integer
a = a + 1[ô]-----> aqui vc soma 1 a a ?????
b = b + 1
End Function
agora da maneira correta
ou seja a Função Calcular irá exibir o resultado da soma de a + b
exemplo de uso
repare que mudei o tipo de Integer para Double, pois assim vc poderá exibir valores fracionados, ex:
integer = {1,2,3,4,5...50,60}
Double = {(1,75),(2,83),(7,933)}
entendeu mais ou menos
ex:
vc fez certo mas usou errado veja
Public Function Calcular(a As Integer, b As Integer) As Integer
a = a + 1[ô]-----> aqui vc soma 1 a a ?????
b = b + 1
End Function
agora da maneira correta
Public Function Calcular(a As Duble, b As Double) As Double
Calcular = a + b
End Function
ou seja a Função Calcular irá exibir o resultado da soma de a + b
exemplo de uso
Private Sub Command7_Click()
Dim a As Double, b As Double
a = 4
b = 5
MsgBox Calcular(a, b)
End Sub
repare que mudei o tipo de Integer para Double, pois assim vc poderá exibir valores fracionados, ex:
integer = {1,2,3,4,5...50,60}
Double = {(1,75),(2,83),(7,933)}
entendeu mais ou menos
agora analisando melhor o que deseja fazer, poderá fazer assim para obter o resultado de 11, conforme exemplo postado:
Public Function Calcular(a As Duble, b As Double) As Double
Calcular = (a + 1) + (b + 1)
End Function
Hum... acho que entendi.
Então para retornar o valor que é calculado pela função, vc tem que guardar o resultado do que se quer retornar, dentro da função??
Ou seja, de maneira geral:
é semrpe desta forma que retornamos o resultado do cálculo de uma função?
[ ]'s
Então para retornar o valor que é calculado pela função, vc tem que guardar o resultado do que se quer retornar, dentro da função??
Ou seja, de maneira geral:
Public Function Nome_da_Função(Parâmetros) As Algum_Tipo
[...vários_cálculos...]
x = resultado_que_eu_quero_que_retorne
Nome_Da_Função = x
End Function
é semrpe desta forma que retornamos o resultado do cálculo de uma função?
[ ]'s
não necessariamente, vc pode fazer a propria função exibir o resultado diretamente, mas desta maneira fica mais pratico, vamos ver alguns exemplos
se eu fizer assim
Public Function Calcular(a As Double, b As Double)
MsgBox (a + 1) + (b + 1) [ô]aqui quem decide que o resultado será exibido em uma mensagem é a função
End Function
Private Sub Command1_Click()
Call Calcular(4, 5)
[ô]ou
[ô]Calcular 4,5
End Sub
e da maneira anterior, em que vc poderá exibir o resultado onde achar melhor
ex:
Text1.Text = Calcular(4,5)
Label1.Caption = Calcular (4,5)
e assim vai
se eu fizer assim
Public Function Calcular(a As Double, b As Double)
MsgBox (a + 1) + (b + 1) [ô]aqui quem decide que o resultado será exibido em uma mensagem é a função
End Function
Private Sub Command1_Click()
Call Calcular(4, 5)
[ô]ou
[ô]Calcular 4,5
End Sub
e da maneira anterior, em que vc poderá exibir o resultado onde achar melhor
ex:
Text1.Text = Calcular(4,5)
Label1.Caption = Calcular (4,5)
e assim vai
vamos a outro exemplo:
supondo que vc deseje criar uma função para tocar musica
e melhor maneira seria esta
Public Function Tocar_Musica( Caminho as string)
mmcAudio.FileName = Caminho
mmcAudio.Command = [Ô]Open[Ô]
mmcAudio.Command = [Ô]Play
End Function
ou seja necessito apenas mostrar o caminho da musica e pronto, não preciso armazenar nada na função, pois dentro dela ja existem os controles para isto, apenas passo o caminho para o controle e a função o executa.
Toca_Musica [Ô]c:\meuaudio\minhamusica.mp3[Ô]
supondo que vc deseje criar uma função para tocar musica
e melhor maneira seria esta
Public Function Tocar_Musica( Caminho as string)
mmcAudio.FileName = Caminho
mmcAudio.Command = [Ô]Open[Ô]
mmcAudio.Command = [Ô]Play
End Function
ou seja necessito apenas mostrar o caminho da musica e pronto, não preciso armazenar nada na função, pois dentro dela ja existem os controles para isto, apenas passo o caminho para o controle e a função o executa.
Toca_Musica [Ô]c:\meuaudio\minhamusica.mp3[Ô]
hum... acho q agora ficou claro.
Então, se eu quiser exibir a função em uma msgbox:
====== EXEMPLO 1 ======
Se eu quiser retornar o resultado para uma txt, label, o variável:
====== EXEMPLO2 ======
Ou seja, no Exemplo 1, o resultado é exibido em uma msgbox, e a função deve ser chamada através do Call.
Já no exemplo 2, para retornar a função em outro lugar (txt, label, variável), sou obrigado a fazer ela receber o resultado que eu quero que retorne.
Entendi certo!? :D
Eu achava que para retornar o resultado de uma função, deveria ser algo como na linguagem C:
[ ]'s
Então, se eu quiser exibir a função em uma msgbox:
====== EXEMPLO 1 ======
Private Sub Command7_Click()
Dim a As Integer
Dim b As Integer
a = 4
b = 5
Call Calcular(a, b)
End Sub
Public Function Calcular(a As Integer, b As Integer) As Integer
MsgBox (a + 1) + (b + 1)
End Function
Se eu quiser retornar o resultado para uma txt, label, o variável:
====== EXEMPLO2 ======
Private Sub Command7_Click()
Dim a As Integer
Dim b As Integer
a = 4
b = 5
txt3.Text = Calcular(a, b)
End Sub
Public Function Calcular(a As Integer, b As Integer) As Integer
Calcular = (a + 1) + (b + 1) [ô]a própria função guarda o resultado que quero que retorne.
End Function
Ou seja, no Exemplo 1, o resultado é exibido em uma msgbox, e a função deve ser chamada através do Call.
Já no exemplo 2, para retornar a função em outro lugar (txt, label, variável), sou obrigado a fazer ela receber o resultado que eu quero que retorne.
Entendi certo!? :D
Eu achava que para retornar o resultado de uma função, deveria ser algo como na linguagem C:
Private Sub Command7_Click()
Dim a As Integer
Dim b As Integer
a = 4
b = 5
txt3.Text = x
End Sub
Public Function Calcular(a As Integer, b As Integer) As Integer
dim x as integer
x = (a + 1) + (b + 1)
Return x [ô]Tipo na linguagem C....
End Function
[ ]'s
é isso mesmo que vc entendeu.
agora supondo que vc queira exibir o resulta do em X, este X tem de ser publico
ex:
isso para que vc possa usar o valor de X em todo o form.
porém veja como ficaria para exibir o resultado
estranho né, sendo que vc pode atribuir o resultado a própria função
agora supondo que vc queira exibir o resulta do em X, este X tem de ser publico
ex:
Dim X as Integer[ô]--------declarei X no general do form
Public Function Calcular(a As Integer, b As Integer) As Integer
x = (a + 1) + (b + 1)
End Function
isso para que vc possa usar o valor de X em todo o form.
porém veja como ficaria para exibir o resultado
Private Sub Command7_Click()
Dim a As Integer
Dim b As Integer
a = 4
b = 5
call Calcular(a, b)
Text1.Text = X
End Sub
estranho né, sendo que vc pode atribuir o resultado a própria função
Muito bom Marcelo-Treze!
Muito obrigado!!
[ ]'s
Muito obrigado!!
[ ]'s
Tópico encerrado , respostas não são mais permitidas