Ir para conteúdo
Fórum Script Brasil
  • 0

Obter Resultado


rodfraga

Pergunta

Galera, eu estava praticando com o meu grupo de um projeto VB que eu to fazendo...Tipo a gente ta aprendendo pra fazer um programa e competir com outros. então nós estávamos fazendo uma calculado e, surgiu a seguinte dúvida:

Como fazer a adição sem utilizar uma função? Utilizando uma rotina?

Pegamos o seguinte código na internet para interpretar e testar:

Public Sub Adicao()
Dim x As Integer
Dim y As Integer
x = Split(txt1.Text, " ")(0)
y = Split(txt1.Text, " ")(1)
z% = x + y
End Sub

Public Sub mais_Click()
txt2.Text = z
End Sub
Deu pra entender né? A gente tem uma text com o nome de txt1, onde o usuário digita um numero e o outro, exemplo: "1 2" Então a rotina coleta o primeiro numero e o segundo, somando-os para obter o valor de z. Então, quando se clica no botao que nomeamos de mais, o texto de txt2 será o valor de z. Tudo bem, antes estávamos utilizando etiquetas com labels. Assim, quando se clicava em mais, tudo isso acontecia, e as etiquetas diziam o seguinte: "1 + 2 =" e ai tinha o txt2 com o resultado. O 1 e o 2 eram sempre alterados não importando qual numero colocassemos, mas o resultado nunca aparecia! Deixamos as etiquetas de lado, deletando o codigo delas e sobrou o de cima! Continuando a não mostrar o valor. Lembrei do conceito de função(retorna um valor) e criei o seguinte código:
Function so()
Dim x As Integer
Dim y As Integer
x = Split(txt1.Text, " ")(0)
y = Split(txt1.Text, " ")(1)
so = x + y
End Function

Public Sub mais_Click()
txt2.Text = so
End Sub

E deu certo. Mas ai eu utilizei uma função para retornar um valor. Resumindo, quero saber se é possível alterar o primeiro código que postei, para que aquela rotina, mostre o resultado que só consegui fazer criando uma função depois?

Obrigado

Rodrigo

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O problema ali é que "z" só existe dentro daquela rotina. Acabou a rotina, "z" é perdido. Para evitar isso, você deve declarar "z" lá no topo do código (no General Declarations), assim:

Dim z
Existe ainda uma outra maneira de fazer o que você quer somente utilizando uma Sub (acho que fica até melhor do que o primeiro método, só não é melhor que uma função):
Public Sub Adicao(byref z as integer)
Dim x As Integer
Dim y As Integer
x = Split(txt1.Text, " ")(0)
y = Split(txt1.Text, " ")(1)
z = x + y
End Sub

Public Sub mais_Click()
dim z as integer
adicao z
txt2.Text = z
End Sub
Todavia, não é muito prático criar rotinas ou funções cujos parâmetros são obtidos dentro das mesmas (nesse caso, x e y). Imagine que você quisesse usar essa mesma função para outra textbox ou até mesmo em outro form. Você teria que copiar o código e alterá-lo. Por isso, acho mais aconselhável usar uma função ou uma sub na qual os valores necessários sejam passados na chamada. Seguindo esse exemplo, ambas seriam:
Public Function Adicao(byval x as integer, byval y as integer) as integer
Adicao = x + y
End Sub
Public Sub Adicao(byval x as integer, byval y as integer, byref z as integer)
z = x + y
End Sub

Dessa forma, você pode usar essa função para quaisquer valores em qualquer lugar. Ao invés dos parâmetros x e y poderia-se também usar apenas um que receberia uma string e a dividiria, tornando a função ou sub também reutilizável.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...