Expresiones infijas VS expresiones postfijas y cómo construir una mejor calculadora de JavaScript

Si desea que su Calculadora simple sea mucho más inteligente, esta publicación es para usted.

Podrías preguntar, "¿Qué le pasa a mi simple calculadora?" Bueno, puede que haga todas las operaciones correctamente, pero la secuencia en la que las hace probablemente sea incorrecta.

La calculadora simple contiene solo cuatro operaciones: suma, resta, división y multiplicación. Muchos de nosotros podríamos haber estudiado en la escuela secundaria sobre la precedencia de los operadores: la división y la multiplicación tienen la misma prioridad, y tienen mayor prioridad que la suma y la resta, que tienen la misma prioridad.

Puede encontrar un resumen rápido de la precedencia de los operadores aquí: //www.math.utah.edu/online/1010/precedence/.

La razón por la que hago hincapié en la precedencia de los operadores es porque una calculadora simple realiza la mayoría de los cálculos incorrectamente. Por ejemplo, 1 + 2x3 debería ser igual a 7 según una calculadora normal, pero la calculadora simple da un resultado de 9.

La razón por la que la calculadora simple lo hace todo mal es porque simplemente multiplica los dos operandos, con el operador entre ellos, y produce el resultado.

Simplemente no podemos culpar a la simple calculadora. Después de todo, estaba destinado a ser simple. Entonces, ahora puede comenzar a pensar en cómo reorganizar los operadores para obtener el resultado correcto. Sí, estás en el camino correcto. Para eso, necesitamos conocer dos conceptos más en informática: expresiones infijas y expresiones postfijas.

En palabras simples, las expresiones aritméticas que entendemos son expresiones Infix y la expresión aritmética que la computadora entiende son expresiones Postfix.

Tanto las expresiones infijas como postfijas crean los mismos resultados. Es solo que los humanos están acostumbrados a resolver expresiones infijas, y las computadoras están acostumbradas a resolver expresiones postfijas.

Otra característica clave de la expresión de sufijo es que contiene operadores que suceden a los operandos según la precedencia, lo que facilita que la computadora los evalúe usando pilas y produzca el resultado correcto.

A estas alturas, debe estar pensando en cómo convertir la expresión infija ingresada por su usuario en una expresión sufija. Existe un algoritmo que convierte una expresión infija en una expresión sufija que se puede encontrar aquí .

Así es como se ve este proceso:

La expresión de sufijo debe evaluarse mediante un algoritmo, que se puede encontrar aquí . Es similar a la evaluación realizada por una calculadora simple, excepto que los operadores suceden a los operandos en expresiones postfijas.

Finalmente, el motivo principal de convertir una expresión infija en una expresión sufija es preservar la precedencia de los operadores mientras la computadora evalúa la expresión.

Mira mi calculadora completamente funcional que incorpora estos principios aquí .