Ejercicio de If then

EJERCICIO EJEMPLO

Crear un programa que resuelva la ecuación cuadrática tipo ax2 + bx + c.



SOLUCIÓN

Option Explicit
Rem Declaración de variables
Dim a!, b!, c!, d!, e As Single

Rem Contenido del formulario
Private Sub Form_Load()
Form1.Caption = "Ecuación cuadrática"
CommandCalcular.Caption = "Calcular x"
LabelTítulo = "Parámetros a, b y c para ecuación tipo a*x^2 + b*x + c = 0"
Labela.Caption = "Valor parámetro a"
Labelb.Caption = "Valor parámetro b"
Labelc.Caption = "Valor parámetro c"
End Sub

Rem Cálculo y muestra de resultados
Private Sub CommandCalcular_Click()
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
a = Val(Texta)
b = Val(Textb)
c = Val(Textc)
d = b ^ 2 - 4 * a * c
e = 2 * a
If d = 0 Then
    LabelResultado = "x1 = x2 = " & - b / e
Else
    If d > 0 Then
        LabelResultado = "x1 = " & (-b + Sqr(d)) / e
        LabelResultado = LabelResultado & vbCrLf & "x2 = " & (-b - Sqr(d)) / e
    Else
        LabelResultado = "x1 = " & -b / e & " + " & Sqr(-d) / e & " * i"
        LabelResultado = LabelResultado & vbCrLf & "x2 = " & -b / e & " - " & Sqr(-d) / e & " * i"
    End If
End If
End Sub



El programa "funciona", si bien tiene sus limitaciones. Prueba a introducir los siguientes datos:   a = 0b = 3 y c = 1 . Te aparecerá el siguiente mensaje: "Error 6 en tiempo de ejecución. Desbordamiento."  Efectivamente, a = 0 implica que e = 0 y al encontrarnos con una operación del tipo  (-b + Sqr(d)) / edonde el denominador vale cero... ¡se acabó! Mejor dicho, "se acabó" mientras no preparemos el programa para detectar este tipo de situaciones, cosa que veremos más adelante.

Estamos construyendo programas sencillos que en líneas generales responden bien cuando se dan las circunstancias previstas pero que fallan ante situaciones extrañas. Esto no debe preocuparnos por el momento, ya que a medida que progresemos como programadores iremos construyendo programas cada vez más sólidos.

Aspecto gráfico:


No hay comentarios:

Publicar un comentario