VB - Resolvendo uma equação do 2o. Grau
Continuando nossa série de artigos sobre VB e a matemática vamos mostrar como resolver uma equação do segundo grau. Estou usando a abordagem procedural e procurando tornar o código o mais simples possível. Vamos começar pelos conceitos matemáticos e depois vou mostrar como criar o projeto VB para resolver o problema.
Os conceitos Matemáticos
Toda equação do tipo ax²+bx+c, com coeficientes numéricos a, b e c com . é chamada de equação do 2o. grau . Exemplos:
Equação |
a |
b |
c |
x²+3x-1 |
1 |
3 |
-1 |
4x-x²-2 |
-1 |
4 |
-2 |
Para
resolver estas equações, utilizamos a fórmula de
Baskara que permite calcular as duas raízes
simultaneamente. A fórmula é a seguinte: Onde x é a raiz da equação do segundo grau.(podemos ter até duas raízes) |
Toda equação do segundo grau terá ou não raizes reais em função do valor do discriminante : |
De acordo com o valor do discriminante podemos ter os valores para Delta : |
Classificação das equações do segundo grau
- Incompletas: Se um dos coeficientes ( b ou c ) for nulo, temos uma equação do 2º grau incompleta.
1º caso: b=0 ==> x²-9=0 => x²=9 => x= => x=3
2º caso: c=0 ==> x²-9x=0 => Basta fatorar o fator comum x => x(x-9)=0 => x=0,9
3º caso: b=c=0 ==> 2x²=0 => x=0
O projeto para cálculo da equação do segundo grau
Como já conhecemos as regras de 'negócio' podemos implementar o algoritimo para resolver o problema. Na verdade a primeira coisa que devemos fazer sempre antes de sentar e codificar é fazer uma análise do problema e rascunhar um algoritimo com os passos necessários para chegarmos á solução do problema. Por falar nisto vejamo como ficaria um possível algoritimo representado no fluxograma abaixo para este nosso caso:
Bonitinho , não é mesmo ???
Agora vamos ao VB : inicie um novo projeto e no formulário padrão insira os controles conforme o layout abaixo:
- O usuário deverá
informar os valores para os coeficientes de x^2 , x e
para a constante. - O coeficiente para x e para constante pode ser suprimido (basta clicar no checkbox ao lado do controle textbox) - O resultado é exibido no frame da direita - Para limpar os controles e começar de novo basta clicar em - Efetuar Novo Cálculo |
O código do projeto
Vou mostrar somente o código mais importante e que realmente efetua a operação. Primeiro na seção - General Declarations do formulário temos as variáveis declaradas:
Option Explicit Dim A As Single Dim B As Single Dim C As Single Dim Discriminante As Single Dim X1 As Single Dim X2 As Single Dim n As Integer Dim mensagem As String |
Lembra por que usamos -
Option Explicit ?? Não lembra !!! Bem , fazemos isto para forçar a declaração de variáveis Assim não podemos usar uma variável que não seja declarada antes |
Agora o código do botão - Resolver Equação - que calcula o determinante e as raízes da equação.(se houver).
Private Sub cmdResolver_Click() A = Val(txtCoX2.Text) B = Val(txtCoX.Text) C = Val(txtConst.Text) If A = 0 Then MsgBox "O valor do coeficiente A não pode ser igual a zero.", vbCritical, mensagem Exit Sub End If cmdNovoCalculo.Enabled = True Discriminante = (B ^ 2 - 4 * A * C) If Discriminante < 0 Then lblX1Val = "" lblX2Val = "" MsgBox ("Esta equação não possui raizes reais !."), vbCritical, mensagem Else X1 = (-B + Sqr(Discriminante)) / (2 * A) X2 = (-B - Sqr(Discriminante)) / (2 * A) If Discriminante = 0 Then lblX1Val = X1 lblX2Val = X1 MsgBox ("Esta equação possui duas raizes reais iguais."), vbInformation, mensagem Else lblX1Val = X1 lblX2Val = X2 MsgBox ("Esta equação possui duas raizes reais."), vbInformation, mensagem End If End If End Sub |
Este código é a aplicação do algoritmo representado pelo fluxograma exibido ; nele fazemos os cálculos para achar as raízes da equação segundo as regras para uma equação do segundo grau.
O código dado abaixo esta associado ao evento Keypress das caixas de texto ; Nele permitimos somente a entra de valores numéricos , do sinal de - , e do Backspace ( Keyascii = 8):
Private Sub txtConst_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then txtConst.Text = Left(txtConst.Text, (Len(txtConst.Text) - 1)) SendKeys "{END}" End If If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0 End Sub Private Sub txtCoX_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then txtCoX.Text = Left(txtCoX.Text, (Len(txtCoX.Text) - 1)) SendKeys "{END}" End If If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0 End Sub Private Sub txtCoX2_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then txtCoX2.Text = Left(txtCoX2.Text, (Len(txtCoX2.Text) - 1)) SendKeys "{END}" End If If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0 End Sub |
Ao executar a aplicação e informar algumas valores válidos para os coeficientes A , B e C da equação temos o resultado como mostrado abaixo:
Um formulário dando informação sobre as raízes é exibido antes do formulário acima, basta clicar em OK para continuar:
Para encerrar o projeto usamos o código abaixo que causa um efeito fazendo com que formulário se desloque para a esquerda da sumir:
Private Sub cmdSair_Click() While frmQuadratica.Left > -9000 frmQuadratica.Left = frmQuadratica.Left - 1 DoEvents Wend End End Sub |
Você acabou de ver como o VB pode ser usado para ensinar matemática , espero que tenha gostado .
Aguarde que voltarei ao tema - O VB e a matemática ...(o projeto completo esta no super CD VB)
Referências: