Вирази Infix проти виразів Postfix та як створити кращий калькулятор JavaScript

Якщо ви хочете зробити свій простий калькулятор набагато розумнішим, ця публікація для вас.

Ви можете запитати: "Що поганого в моєму простому калькуляторі". Ну, він може робити всі операції правильно, але послідовність, в якій він їх робить, напевно, неправильна.

Простий калькулятор містить лише чотири операції: додавання, віднімання, ділення та множення. Багато з нас, можливо, вивчали у старшій школі перевагу операторів: ділення та множення мають однаковий пріоритет і мають вищий пріоритет, ніж додавання та віднімання, які мають однаковий пріоритет.

Швидкий підсумок пріоритету оператора можна знайти тут: //www.math.utah.edu/online/1010/precedence/.

Причиною того, що я наголошую на перевазі оператора, є те, що простий калькулятор виконує більшість обчислень неправильно. Наприклад, 1 + 2х3 має дорівнювати 7 відповідно до звичайного калькулятора, але простий калькулятор дає результат 9.

Причина, через яку простий калькулятор робить все неправильно, полягає в тому, що він просто множить два операнди, з оператором між ними, і дає результат.

Ми просто не можемо звинуватити простий калькулятор. Зрештою, це мало бути простим. Тож тепер ви можете почати думати про те, як переставити оператори, щоб отримати правильний результат. Так, ви на правильному шляху. Для цього нам потрібно знати ще про два поняття в інформатиці: вирази Infix та вирази Postfix.

Простими словами, арифметичні вирази, які ми розуміємо, є виразами Infix, а арифметичні вирази, які розуміє комп’ютер, - вирази Postfix.

Вираз як інфікс, так і постфікс створюють однакові результати. Просто люди звикли розв’язувати вирази з інфіксом, а комп’ютери - для вирішення виразів з постфіксами.

Ще однією ключовою особливістю виразу постфікс є те, що він містить оператори, що змінюють операнди відповідно до пріоритету, що полегшує комп'ютеру їх оцінку за допомогою стеків і отримання правильного результату.

На даний момент ви вже думаєте про те, як перетворити введений користувачем вираз інфіксу у вираз постфікса. Існує алгоритм, який перетворює вираз інфіксу у вираз постфікса, який можна знайти тут .

Ось як виглядає цей процес:

Вираз постфіксу слід оцінювати за допомогою алгоритму, який можна знайти тут . Це схоже на обчислення, проведене простим калькулятором, за винятком того, що оператори змінюють операнди у виразах постфіксу.

Зрештою, основним мотивом перетворення виразу інфіксу в вираз постфікса є збереження переваги операторів, поки комп’ютер обчислює вираз.

Ознайомтесь із моїм повнофункціональним калькулятором, який містить ці принципи тут .