Однажды, когда я сидел и делал свою скучную домашнюю работу по алгебре, меня осенила мысль. Что, если бы я сделал калькулятор алгебры с JavaScript, который я сейчас изучаю, чтобы делать домашнее задание за меня. Конечно, я мог бы найти такой калькулятор в Интернете, но я хотел попробовать сделать его сам. Я также хотел еще больше бросить себе вызов, написав код самостоятельно, без посторонней помощи или с помощью библиотек JavaScript. Это было бы идеальной задачей для меня на моем нынешнем уровне JavaScript.

Однако я понял, что полный алгебраический калькулятор, который может решить любое уравнение, будет слишком сложным, и, кроме того, мой уровень математики еще даже не позволяет мне решить любое уравнение. Поэтому я решил начать с простого и добавлять его в свой калькулятор по мере того, как я совершенствуюсь в JavaScript. Моя цель — сделать простой калькулятор, который найдет одну переменную, то есть x, в уравнении. Он пока не будет работать с скобками или дробями, и я предполагаю, что переменная равна x. Однако это не облегчает задачу, так как я никогда раньше не делал ничего подобного и решил сделать это полностью без какого-либо справочного кода или посторонней помощи.

Создание HTML и CSS

Прежде чем беспокоиться о каком-либо фактическом коде, я решил сначала сделать более легкую часть. Все, что мне нужно было сделать, это создать простую HTML-форму с текстовым вводом, кнопками «Отправить» и «Очистить». С помощью CSS я изменил цвет фона на что-то лучшее и сделал
форму по центру экрана. Я также увеличил кнопки и ввод текста, и это было сделано для HTML и CSS.

Планирование

Теперь самое сложное, собственно код. Я понятия не имел, как я собираюсь это сделать и возможно ли это вообще для меня. Поэтому я подумал о том, как бы я сам решил задачу по алгебре, используя математику, которую выучил. Меня учили, что для решения задачи по алгебре нужно сначала поставить все переменные
слева от знака равенства, а все числа — справа от знака равенства. Затем вам нужно складывать или вычитать переменные вместе и складывать или вычитать числа вместе, пока не останется одно число и переменная с каждой стороны. Затем вы делите количество переменной на число справа
, что в конечном итоге дает вам значение переменной. Это дало мне мой план и различные шаги, которые мне нужно было сделать с моим кодом.

Этапы решения уравнения:

1. Переменная слева, числа справа
2. Сложите или вычтите переменные и числа
3. Разделите число справа на количество переменной

Настройка уравнения

Прежде чем я успел что-либо сделать, возникла одна проблема. Вводимое уравнение имеет форму строки. Как я могу взять переменные и числа, переместить их и сложить вместе, если я работаю со строкой. К счастью, после создания нормального математического калькулятора я уже знал, что нужно сделать, чтобы взять строку
и работать с ней. Мне нужно было взять строку и преобразовать ее в массив с помощью метода разделения. Поскольку я работаю с левой и правой частями уравнения, мне понадобилось два массива. Итак, чтобы преобразовать строку в массив, я решил разделить строку по знаку равенства, что дало мне два массива.
Затем я снова разделил эти массивы, освободив место, и у меня осталось два массива, с которыми я действительно могу работать.

  1. Переменная слева, числа справа:

    Чтобы переместить переменные влево, мне нужно было сначала найти их в массиве, что было просто сделать, потому что все, что мне нужно было сделать была проверка, содержит ли текущий элемент массива x. Затем я бы посмотрел на оператор (+ или -) и сделал бы наоборот, например, отрицательный x будет перемещен как положительный x в левую сторону. Во время этого процесса, если я находил переменную, которая равна только x
    , я преобразовывал ее в 1x, чтобы позже выполнять с ней вычисления.

Код для перемещения чисел вправо также был похож, где я смотрел на операторы и соответственно сдвигал число вправо.

В этом процессе упорядочивания уравнения было много очень специфических сценариев, в которых мой код мог не работать, например, когда число является первым элементом, поэтому мне пришлось
протестировать эти сценарии и заставить мой код работать со всеми их. Это немного усложняло дело, но в итоге все получилось.

2. Добавьте или вычтите переменные и числа:

Как только мое уравнение было составлено правильно, мне нужно было складывать и вычитать числа, что было довольно легко. Все, что мне нужно было сделать, это посмотреть на оператор и соответственно добавить или вычесть числа в массиве. Для переменных мне нужно было взять число с переменной и добавить или вычесть
это. Например, я бы взял 3 в 3 раза и 5 в 5 раз и сложил их вместе.

3. Разделите число справа на количество переменной

Это была самая простая часть, так как не было никаких петель или чего-то необычного. Все, что мне нужно было сделать, это разделить два числа так, чтобы число справа было разделено на число с переменной, которая в конечном итоге дала мне значение x.

На этом этапе я также заметил, что если x станет равным 0, это приведет к ошибке, поэтому, если x был равен 0, я бы просто сказал, что уравнение неверно, например, x = x + 7 или что x может быть любым числом, например x + 2 = х + 2

Конец?

После 3 с половиной часов напряженной работы мой калькулятор наконец-то заработал, и я добился своей цели. Я столкнулся со многими проблемами и сделал то, чего никогда раньше не делал. Я рад, что принял этот вызов, и я очень рад, что он сработал.

Это не означает, что это конец этого калькулятора, поскольку все, что я сделал, это заставил его работать с основными уравнениями. Моя следующая цель — заставить его работать с дробями и скобками. Я также хочу, чтобы пользователь мог вводить любую переменную, чтобы ему не приходилось вводить x. Еще одно ограничение на данный момент заключается в том, что в уравнении должны быть пробелы, и оно не будет работать следующим образом: 3+7, так что это то, что я исправлю в следующей итерации. Звучит как забавный вызов!

Полный исходный код доступен в репозитории Github.