>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Criar uma Calculadora com Visual Basic

O Microsoft Visual Basic é uma linguagem de programação baseada na linguagem BASIC, originalmente desenvolvida para tornar a programação mais fácil de aprender. O Visual Basic pega os comandos familiares do BASIC e adiciona ferramentas e interfaces orientadas a objetos para projetar aplicativos Windows WYSIWYG e controles web, entre muitos outros aprimoramentos. Um projeto de aprendizado relativamente simples para Visual Basic é a criação de uma calculadora Windows.

Passo 1

Abra o Visual Basic 6 e selecione "Standard EXE" no menu de novo projeto. Você verá um formulário em branco aparecer na tela.

Passo 2

Renomeie seu projeto e seu formulário clicando em "Projeto1" no lado direito da tela, na listagem do projeto, e inserindo um novo nome na linha "Name" da caixa Propriedades, que deve aparecer abaixo da listagem do projeto por padrão. Pressione "Enter" para aceitar o novo nome. Faça o mesmo para seu formulário (um nome sugerido é "CalculatorUI"), certificando-se de inserir um nome similar na propriedade "Caption", que alterará o texto na barra superior do formulário. Salve o projeto em uma nova pasta no seu computador.

Passo 3

Adicione botões e uma caixa de texto ao formulário. Primeiro, adicione uma caixa de texto, onde os números digitados na calculadora aparecerão, bem como os resultados dos cálculos. Faça isso selecionando o botão TextBox na barra de ferramentas no lado esquerdo da tela e arrastando com o mouse o tamanho e local desejados para o TextBox. Depois de posicionar o TextBox, você pode alterar tamanho e local arrastando-o para outra localização do formulário ou arrastando as alças (pequenos quadrados) ao longo da borda do TextBox. Certifique-se de alterar as seguintes linhas na janela Propriedades, com o TextBox selecionado: "(Name)" = tbResult, "Alignment" = 1 - Justificar à Direita, "Data Format" = (clique no botão "..." para selecionar) Number, "Locked" = True, e "Text" = 0.

Passo 4

Selecione o ícone CommandButton na barra de ferramentas e crie o primeiro botão da mesma forma que criou o TextBox para adicionar botões. Como referência, use a calculadora do Windows no modo Padrão (Programas > Acessórios > Calculadora) como base para o layout da sua calculadora, deixando de fora os botões "MC", "MR", "MS" e "M+". Em cada botão, altere as seguintes propriedades (usando o botão "+" como exemplo): "(Name)" = btnPlus, "Caption" = +. Faça o mesmo para o resto dos botões da calculadora e salve seu trabalho. Seu formulário deve agora se parecer com o exemplo mostrado.

Passo 5

Adicione o código. Note que se seus botões e caixa de texto não tiverem os mesmos nomes que o código aqui espera, precisará alterar os nomes para corresponder aos seus botões e caixa de texto, ou alterar seus botões e caixa de texto para corresponder a este código. Primeiro, precisamos criar algumas variáveis para processar a entrada da calculadora:

Dim sLeft As String, sRight As String, sOperator As String
Dim iLeft As Double, iRight As Double, iResult As Double
Dim bLeft As Boolean

Cada cálculo consiste de quatro partes: um número à esquerda do operador (sLeft, iLeft), um operador (sOperator), um número à direita do operador (sRight, iRight), e um resultado (iResult). Para rastrear se o usuário está digitando o número esquerdo ou direito, precisamos criar uma variável booleana, bLeft. Se bLeft for verdadeiro, o lado esquerdo do cálculo está sendo digitado; se bLeft for falso, o lado direito está sendo digitado.

Passo 6

Inicialize a variável bLeft. Fazemos isso criando uma sub-rotina Form_Load, que você pode digitar como listado aqui ou criar automaticamente clicando duas vezes em qualquer parte do formulário não coberta por um botão ou caixa de texto. Dentro da função, precisamos definir bLeft como True, porque o primeiro número digitado será a parte esquerda:

Private Sub Form_Load()
bLeft = True
End Sub

Passo 7

Crie uma sub-rotina que lidará com o clique de qualquer um dos botões de número. Criamos isso como sub-rotina porque usamos código idêntico para cada botão, e usar uma sub-rotina significa não ter que repetir o mesmo código dez vezes. Insira o seguinte abaixo da linha End Sub da sub-rotina Form_Load:

Private Sub AddNumber(sNumber As String)
If bLeft Then
sLeft = sLeft + sNumber
tbResult.Text = sLeft
Else
sRight = sRight + sNumber
tbResult.Text = sRight
End If
End Sub

Como pode ver, esta função recebe um parâmetro string, sNumber, que conterá o número em que o usuário clicou. Se bLeft for verdadeiro, este número é anexado à string que representa o número sendo digitado, sLeft, e a caixa de texto, tbResult, é atualizada para exibir o novo número. Se bLeft for falso, a mesma operação é realizada usando sRight.

Finalmente, crie uma função de evento Click para cada número que chame nossa sub-rotina AddNumber. Faça isso facilmente clicando duas vezes em cada botão de número, que criará a estrutura da sub-rotina para você. Adicione a chamada para AddNumber, substituindo o número entre aspas pelo número associado ao botão. Para o botão zero, seu código será assim:

Private Sub btn0_Click()
AddNumber ("0")
End Sub

Da mesma forma, para o botão um, seu código será assim:

Private Sub btn1_Click()
AddNumber ("1")
End Sub

Passo 8

Trate os operadores: mais, menos, vezes e divisão. Faremos como no passo anterior, criando uma sub-rotina chamada nos eventos Click dos botões de operador. A sub-rotina será como a seguinte:

Private Sub AddOperator(sNewOperator As String)
If bLeft Then
sOperator = sNewOperator
bLeft = False
Else
btnEquals_Click
sOperator = sNewOperator
sRight = ""
bLeft = False
End If
End Sub

Se bLeft for verdadeiro, significando que o usuário acabou de digitar a parte esquerda do cálculo, esta sub-rotina define a variável sOperator criada no passo 5 como igual ao operador digitado, passado para AddOperator como a string sNewOperator. O segundo passo é definir bLeft como Falso, porque a entrada de um operador significa que o usuário terminou de digitar o lado esquerdo da equação. Para lidar com entradas que encadeiam múltiplos operadores, como 9 * 3 * 2 * 6, precisamos também verificar se bLeft é falso, significando que o usuário digitou um operador onde esperávamos um igual. Primeiro chamamos o evento Click do botão igual (descrita no próximo passo), que faz o cálculo e define tbResult para o resultado do que já foi digitado. Então limpamos sRight para o usuário digitar o próximo número, e definimos bLeft como Falso para que o programa saiba que estamos digitando o lado direito do cálculo a seguir.

Finalmente, adicione uma chamada AddOperator ao evento Click de cada botão de operador, usando o mesmo método do passo 7 para criar os eventos Click dos botões de número. Seu código para o botão mais será assim:

Private Sub btnPlus_Click()
AddOperator ("+")
End Sub

Da mesma forma, o código para o botão menos será assim:

Private Sub btnMinus_Click()
AddOperator ("-")
End Sub

Passo 9

Crie o evento Click para o botão igual, que é o código mais complexo neste programa. Crie a estrutura da sub-rotina como fez para os outros botões, clicando duas vezes no botão igual no seu formulário. Sua sub-rotina será assim quando inserir o código:

Private Sub btnEquals_Click()
If sLeft <> "" And sRight = "" And sOperator <> "" Then
sRight = sLeft
End If

If sLeft <> "" And sRight <> "" And sOperator <> "" Then
iLeft = sLeft
iRight = sRight
Select Case sOperator
Case "+"
iResult = iLeft + iRight
Case "-"
iResult = iLeft - iRight
Case "/"
iResult = iLeft / iRight
Case "*"
iResult = iLeft * iRight
End Select
tbResult.Text = iResult
sLeft = iResult
sRight = ""
bLeft = True
End If

End Sub

As três primeiras linhas verificam se ambos os lados do cálculo foram digitados junto com um operador. Se apenas o lado esquerdo e um operador forem digitados, o valor do lado esquerdo é copiado para o direito, para imitar o comportamento padrão da calculadora para lidar com entrada como 9 * =, que multiplica 9 por si mesmo para obter resultado 81. O resto do código roda apenas se esquerda, direita e operador forem digitados, começando por copiar as strings de números para nossas variáveis iLeft e iRight do tipo Double, que fazem os cálculos reais. A declaração Select Case permite rodar código diferente dependendo do operador digitado, e realiza o cálculo real, colocando o resultado em iResult. Finalmente, atualizamos a caixa de texto com o resultado, copiamos o resultado para sLeft, resetamos sRight, e definimos bLeft = True. Estas últimas linhas permitem pegar o resultado do cálculo e usá-lo para fazer outro cálculo.

Passo 10

Trate os últimos três botões de operação: raiz quadrada, %, e 1/x. Para o evento Click do botão raiz quadrada, seu código será assim:

Private Sub btnSqrt_Click()
If sLeft <> "" Then
iLeft = sLeft
Else
iLeft = 0
End If

If sRight <> "" Then
iRight = sRight
Else
iRight = 0
End If
If bLeft Then
iLeft = Math.Sqr(iLeft)
tbResult.Text = iLeft
Else
iRight = Math.Sqr(iLeft)
tbResult.Text = iRight
End If
If iLeft <> 0 Then
sLeft = iLeft
Else
sLeft = ""
End If
If iRight <> 0 Then
sRight = iRight
Else
sRight = ""
End If

End Sub

As primeiras 11 linhas garantem que se não tivermos valor digitado para nenhum dos lados da equação, substituímos zero em vez de tentar copiar string vazia para iLeft ou iRight, o que geraria erro. As linhas do meio realizam a função raiz quadrada na parte atual do cálculo, seja esquerda ou direita. Finalmente, revertemos as verificações do início para que zero seja copiado como string vazia de volta para sLeft e sRight.

Para o botão porcentagem, o código é similar, com uma exceção: a operação porcentagem só pode ser realizada se ambos os lados esquerdo e direito forem digitados.

Private Sub btnPercent_Click()
If Not bLeft Then
If sRight <> "" Then
iRight = sRight
Else
iRight = 0
End If

iRight = iRight * (iLeft / 100)
tbResult.Text = iRight
If iRight <> 0 Then
sRight = iRight
Else
sRight = ""
End If
End If

End Sub

Por fim, o evento Click 1/x, ou fração, que é muito similar ao código acima:

Private Sub btnFraction_Click()
If sLeft <> "" Then
iLeft = sLeft
Else
iLeft = 0
End If

If sRight <> "" Then
iRight = sRight
Else
iRight = 0
End If
If bLeft Then
iLeft = 1 / iLeft
tbResult.Text = iLeft
Else
iRight = 1 / iRight
tbResult.Text = iRight
End If
If iLeft <> 0 Then
sLeft = iLeft
Else
sLeft = ""
End If
If iRight <> 0 Then
sRight = iRight
Else
sRight = ""
End If

End Sub

Passo 11

Adicione código para lidar com os botões C e CE. C limpa toda a entrada da calculadora, enquanto CE limpa apenas o número atualmente sendo digitado.

Private Sub btnC_Click()
sLeft = ""
sRight = ""
sOperator = ""
tbResult.Text = "0"
bLeft = True
End Sub

Private Sub btnCE_Click()
If bLeft Then
sLeft = ""
Else
sRight = ""
End If
tbResult.Text = "0"
End Sub

Passo 12

Execute seu programa de calculadora e faça qualquer cálculo desejado. Esta calculadora pode ser facilmente expandida para lidar com mais operações, cálculos mais complexos ou até ser uma calculadora científica com um pouco de trabalho extra.

Dica

Se encontrar erros, verifique seu código linha por linha, focando nas linhas que o VB apontou como contendo erros, e compare com o código acima. O código contido neste artigo foi totalmente testado para ser livre de erros, então copiá-lo fielmente resultará em um programa funcional. Se estiver usando versão anterior do Visual Basic, pode encontrar alguns problemas onde mudanças foram feitas na linguagem entre versões. Versões anteriores do VB, por exemplo, usavam Math.Sqrt() em vez de Math.Sqr() para realizar operação de raiz quadrada. Verifique as Referências para sua versão específica para ver se alguma mudança é necessária.