>> Tecnologia eletrônica >  >> Lar inteligente >> Vida Inteligente

Como fazer uma calculadora com o Visual Basic


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 usa os comandos familiares do BASIC e adiciona ferramentas e interfaces orientadas a objetos para projetar aplicativos Windows e controles da Web semelhantes a WYSIWYG, entre muitos outros aprimoramentos. Um projeto de aprendizado relativamente simples para Visual Basic é a criação de uma calculadora do Windows.

Etapa 1


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

Etapa 2


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

Etapa 3


Adicione botões e uma caixa de texto ao formulário. Primeiro, adicione uma caixa de texto, que será onde aparecerão os números inseridos na calculadora, 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, em seguida, arrastando com o mouse o tamanho e o local desejados para o TextBox. Depois de colocar o TextBox, você pode alterar o tamanho e a localização arrastando-o para outro local do formulário ou arrastando as alças (os 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- Right Justify, "Data Format" =(clique no botão "..." para select) Número, "Bloqueado" =Verdadeiro e "Texto" =0.

Etapa 4


Selecione o ícone CommandButton na barra de ferramentas e crie o primeiro botão da mesma forma que você criou o TextBox para adicionar botões. Para referência, use a calculadora do Windows na visualização padrão (Programas> Acessórios> Calculadora) como base para o layout da 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 restante dos botões da calculadora e salve seu trabalho. Seu formulário agora deve se parecer com o exemplo mostrado aqui.

Etapa 5


Adicione o código. Observe que, se seus botões e caixa de texto não tiverem o mesmo nome que o código listado aqui espera, você precisará alterar os nomes para corresponder aos botões e à caixa de texto ou alterar os botões e a caixa de texto para corresponder a esse 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 em 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 true, o lado esquerdo do cálculo está sendo inserido; se bLeft for false, o lado direito está sendo inserido.

Etapa 6


Inicialize a variável bLeft. Fazemos isso criando uma sub-rotina Form_Load, que você pode digitar conforme 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 para True, pois o primeiro número inserido será a parte esquerda:

Private Sub Form_Load() bLeft =True End Sub

Etapa 7


Crie uma sub-rotina que manipulará o clique de qualquer um dos botões numéricos. Criamos isso como uma 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. Digite 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 você pode ver, esta função recebe um parâmetro de string, sNumber, que conterá o número em que o usuário clicou. Se bLeft for true, esse número será anexado à string que representa o número que está sendo inserido, sLeft, e a caixa de texto tbResult será atualizada para exibir o novo número. Se bLeft for false, a mesma operação será executada usando sRight.

Por fim, crie uma função de evento Click para cada número que chama nossa sub-rotina AddNumber. Você pode fazer isso facilmente clicando duas vezes em cada botão numérico, o que criará a estrutura da sub-rotina para você. Em seguida, adicione a chamada a AddNumber, substituindo o número entre aspas pelo número associado ao botão. Para o botão zero, seu código ficará assim:

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

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

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

Etapa 8


Manipule os operadores:mais, menos, vezes e divisão. Faremos isso como no último passo, criando uma sub-rotina que é chamada nos eventos Click para os botões do operador. A sub-rotina terá a seguinte aparência:

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 true, significando que o usuário acabou de inserir a parte esquerda do cálculo, esta sub-rotina define a variável sOperator que criamos na etapa 5 para igualar o operador inserido, que é passado para AddOperator como a string sNewOperator. A segunda etapa é definir bLeft como False, porque a entrada de um operador significa que o usuário terminou de inserir o lado esquerdo da equação. Para lidar com entradas que encadeiam vários operadores, como 9 * 3 * 2 * 6, também precisamos verificar se bLeft é falso, o que significa que o usuário inseriu um operador onde esperávamos um igual. Primeiro chamamos o evento Click para o botão igual (descrito na próxima etapa), que faz o cálculo e define tbResult como o resultado do que já foi digitado. Em seguida, limpamos sRight para que o usuário possa inserir o próximo número e configuramos bLeft como False para que o programa saiba que estamos inserindo o lado direito do cálculo em seguida.

Por fim, adicione uma chamada AddOperator ao evento Click de cada botão do operador, usando o mesmo método que usamos na etapa 7 para criar os eventos Click para os botões numéricos. Seu código para o botão de adição ficará assim:

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

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

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

Etapa 9


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

Private Sub btnEquals_Click() If sLeft <> "" E sRight ="" E sOperator <> "" Então sRight =sLeft End If
If sLeft &amp;lt;&amp;gt; "" And sRight &amp;lt;&amp;gt; "" And sOperator &amp;lt;&amp;gt; "" 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

Finalizar Sub

As primeiras três linhas de código verificam se ambos os lados do cálculo foram inseridos junto com um operador. Se apenas o lado esquerdo e um operador forem inseridos, o valor do lado esquerdo será copiado para a direita, para que possamos imitar o comportamento padrão da calculadora para lidar com uma entrada como 9 * =, que multiplica 9 por si mesmo para obter um resultado de 81. O resto do código será executado apenas se left, right e operator forem inseridos, e começa copiando as sequências de números em nossas variáveis ​​de tipo duplo iLeft e iRight, que podem fazer os cálculos reais. A instrução Select Case nos permite executar códigos diferentes dependendo de qual operador foi inserido e realiza o cálculo real, colocando o resultado em iResult. Por fim, atualizamos a caixa de texto com o resultado, copiamos o resultado para sLeft, redefinimos sRight e definimos bLeft =True. Essas últimas linhas nos permitem pegar o resultado do cálculo e usá-lo para realizar outro cálculo.

Etapa 10


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

Private Sub btnSqrt_Click() If sLeft <> "" Then iLeft =sLeft Else iLeft =0 End If
If sRight &amp;lt;&amp;gt; "" 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 &amp;lt;&amp;gt; 0 Then
 sLeft = iLeft
Else
 sLeft = ""
End If

If iRight &amp;lt;&amp;gt; 0 Then
 sRight = iRight
Else
 sRight = ""
End If

Finalizar Sub

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

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

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 &amp;lt;&amp;gt; 0 Then
 sRight = iRight
 Else
 sRight = ""
 End If
End If

Finalizar Sub

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

Private Sub btnFraction_Click() If sLeft <> "" Then iLeft =sLeft Else iLeft =0 End If
If sRight &amp;lt;&amp;gt; "" 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 &amp;lt;&amp;gt; 0 Then
 sLeft = iLeft
Else
 sLeft = ""
End If

If iRight &amp;lt;&amp;gt; 0 Then
 sRight = iRight
Else
 sRight = ""
End If

Finalizar Sub

Etapa 11


Adicione código para lidar com os botões C e CE. C apaga todas as entradas da calculadora, enquanto CE apaga apenas o número que está 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

Etapa 12


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

Dica


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