Práctica dirigida
EJERCICIO ECUACIÓN DE SEGUNDO GRADO (ECUACIÓN CUADRÁTICA)
Crear un programa que resuelva la ecuación cuadrática tipo ax2 + bx + c. El planteamiento del problema
y su solución en forma de pseudocódigo se pueden encontrar en el curso “Bases de la programación
nivel I” de [Link], dentro de los ejercicios relacionados con condicionales. Una vez
creado el programa, hay que contrastar su correcto funcionamiento.
SOLUCIÓN
Usaremos tres Labels para pedir los parámetros a, b y c denominados Labela, Labelb y Labelc, y tres
TextBox para que el usuario introduzca datos (Texta, Textb y Textc) además de un botón
(ButtonCalcular). Nosotros hemos añadido además un mensaje de cabecera con un label (LabelTitulo).
Mostraremos primero el código para versiones de Visual Basic más recientes y luego para versiones
menos recientes. Ten en cuenta que la lógica de los programas es en ambos casos igual, lo único que
varía son los detalles de la sintaxis.
CÓDIGO
REM Programa Ecuación Cuadrática
Option Explicit On
Public Class Form1
REM Declaración de variables
Dim aNumber, bNumber, cNumber, dNumber, eNumber As Single
REM Contenido del formulario
Private Sub Form1_Load(ByVal sender As [Link], ByVal e As [Link]) Handles
[Link]
[Link] = "Ecuación cuadrática"
[Link] = "Calcular x"
LabelTí[Link] = "Parámetros a, b y c para ecuación tipo a*x^2 + b*x + c = 0"
End Sub
REM Cálculo y muestra de resultados
Private Sub ButtonHallar_Click(ByVal sender As [Link], ByVal e As [Link])
Handles [Link]
[Link] = New Font("Arial", 10, [Link])
aNumber = Val([Link])
bNumber = Val([Link])
cNumber = Val([Link])
dNumber = bNumber ^ 2 - 4 * aNumber * cNumber
eNumber = 2 * aNumber
If dNumber = 0 Then
[Link] = "x1 = x2 = " & -bNumber / eNumber
Else
If dNumber > 0 Then
[Link] = "x1 = " & (-bNumber + [Link](dNumber)) / eNumber
[Link] = [Link] & vbCrLf & "x2 = " & (-bNumber -
[Link](dNumber)) / eNumber
Else
[Link] = "x1 = " & -bNumber / eNumber & " + " & [Link](-dNumber) /
eNumber & " * " & [Link](-dNumber) / eNumber & " * i"
End If
End If
End Sub
End Class
Nota: en versiones recientes de Visual Basic algunas letras están reservadas y no pueden ser usadas
como nombres de variables. Por ejemplo la letra e. De ahí que en vez de nombrar a las variables como
a, b, c, d, e las hayamos nombrado aNumber, bNumber, cNumber, dNumber y eNumber.
COMENTARIOS
"Funciona", si bien tiene sus limitaciones. Prueba a introducir los siguientes datos: a = 0, b = 3 y c = 1 .
Te aparecerán resultados extraños (o un error como "Error 6 en tiempo de ejecución.
Desbordamiento"). El motivo para esos resultados extraños o errores es que si a = 0 implica que e = 0 y
al encontrarnos con una operación del tipo (− b + Sqr(d)) / e donde el denominador vale cero...
¡operación matemática no permitida! Esto ocurrirá mientras no preparemos el programa para detectar
este tipo de situaciones y darles un tratamiento adecuado, 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: