¿Cómo hacer un intérprete de ecuaciones matemáticas en QuickBASIC? Parte 6 Final
Imagen generada usando Bing Image Creator
Para ver la quinta parte de este artículo puedes usar este enlace: Parte 5
Introducción
En la parte anterior de este tutorial terminamos de implementar todo lo necesario para poder interpretar ecuaciones matemáticas usando QuickBASIC, en esta parte del texto por tanto sólo nos resta utilizar el código escrito para resolver algunas ecuaciones a manera de prueba.
Por supuesto, todavía todo esto se puede mejorar mucho más, y se pueden agregar más funciones intrínsecas y características hasta donde se lo desee, porque como se ha dicho en ocasiones, se trata nada más de una implementación básica.
El parser desarrollado tiene la capacidad de evaluar una o más ecuaciones en la forma de una cadena de texto, y por eso vamos a tratar de obtener los resultados de la evaluación de dos de ellas, para lo cual nada más necesitamos separarlas por medio de un caracter punto y coma.
El código fuente de esta parte también estará disponible para descarga como el código de las demás de modo cada cual pueda probarlo como guste y hacer experimentos agregando o cambiendo las ecuaciones.
La evaluación de las ecuaciones
El código a continuación usa las subrutinas y funciones del intérprete de ecuaciones para obtener los resultados de evaluar dos ecuaciones, una de ellas es la ecuación del área de una esfera Area=4*Pi*Sqr(r), y la otra será la ecuación para obtener el volúmen de una esfera Vol=4/3*Pi*Pow(r,3), utilizada antes con el analizador lexicográfico básico para extraer lexemas:
Cls
Print "Calcular área y volumen de la esfera de radio 10:"
Print
Rem Establecer las ecuaciones para hacer la prueba
Expression = "Area=4*Pi*Sqr(r);Vol=4/3*Pi*Pow(r,3);"
Print "Expresión matemática: ";
Print Expression
Print
On Error Goto ErrorHandler
Rem Declarando las variables para evaluar las ecuaciones
SetVariable "Area", 0
SetVariable "Vol", 0
SetVariable "Pi", 3.14159
SetVariable "r", 10
Rem Evaluando las ecuaciones
SolverExpression
Print "El resultado del cálculo del área de la esfera para los valores establecidos es: ";
Print GetVariable("Area")
Print
Print "El resultado del cálculo del volumen de la esfera para los valores establecidos es: ";
Print GetVariable("Vol")
End
ErrorHandler:
If Err = 255 Then
Print "Error detectado durante el procesamiento del símbolo cerca de: " + Str$(Position)
Print "El programa será terminado"
End If
End
El resultado de correr este programa pueden verlo en la siguente captura de DOSBox, como se puede ver en el código no se utilizó ningún formato para exponerlo:
En resumen, con esto disponemos de un intérprete básico para evaluar ecuaciones matemáticas hecho en lenguaje QuickBASIC, y podemos utilizarlo para crear una calculadora capaz de resolver ecuaciones definidas por el usuario.
En adición, todavía sería necesario testearlo, y agregar más código para comprobar un par de cosas pasadas por alto, como especificar códigos diferenciados para el tratamiento de errores, pero en general funciona y debería poder resolver la o las ecuaciones pasadas como entrada en forma de una cadena de caracteres.
Nota: Es necesario recordar como la tabla de funciones del intérprete nada más contiene la definición de tres de ellas para simplificar la tarea, sin embargo, nada impide agregarle más funciones, recordando se debe colocar el código correspondiente para comprobar la sintaxis y obtener un resultado en la función GetFactor.
Código fuente
Los interesados pueden descargar el fuente de este programa para intérpretar las ecuaciones matemáticas comentadas por medio de este enlace: 🔗 EVALEQ.zip
Nota: En el programa no se han incluido los comentarios mostrados en el código en este texto.
¿Qué te ha parecido esta parte final?
Tú participación aportando ideas, dando sugerencias, o expresando tu crítica constructiva a través de tus comentarios, es importante y fundamental para permitirnos crecer y crear contenidos con cada vez más calidad.
También es importante tu voto si crees vale la pena concederlo.
¡Nos vemos en otro artículo tutorial sobre algún tema interesante!