Что можно написать на калькуляторе
Как написать «лох» на калькуляторе?
Калькулятор, как нам известно, не имеет такой клавиатуры, с помощью которой набирались бы тексты. Но предположим, что слово «лох», это некий набор символов, который нужно выдать на экране не обязательно с помощью этих русских букв. Наша задача превращается в логическую. Она является скорее забавой.
На калькуляторе мы набираем комбинацию символов — «НО7». Пока никакого «Лоха» мы не видим. Но если повернуть калькулятор к верху ногами и снова посмотреть на экран, то мы обнаружим на нем другое сочетание — «LOH». Прочитать такую комбинацию можно только как «лох», если нас попросят именно прочитать изображенное на экране.
Как написать на калькуляторе ЛОХ?
Такое «задание» с калькулятором содержит в себе небольшую хитрость.
Итак, мы берём в свои руки наш калькулятор, набираем на нём сочетание «H07″ (только без кавычек». После этого ничего больше не потребуется набирать. Остаётся совсем малое — взять и перевернуть наш калькулятор. Имеется в виду, что его нужно повернуть на 180 градусов, чтобы и экран перевернулся.
После этой процедуры смотрим на экран и видим те же самые символы, но «вверх ногами», в результате чего перед нашими ждущими глазами предстаёт «L0H» (снова без кавычек), что прочитывается интуитивно как «лох».
Например, если калькулятор не перевёртывать, но смотреть на него будет человек, сидящий за партой перед нами (то есть который напротив), он, обернувшись, увидит L0H. И засмеётся, наверное.
Как делать интересные вещи с калькулятором
В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.
Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.
Количество просмотров этой статьи: 113 205.
Если вы устали от линейных уравнений и геометрических прогрессий, возможно, пришло время отдохнуть от математики и поразить своих друзей фокусами с калькулятором. Все, что вам понадобится, — это любой калькулятор, на котором вы покажете впечатляющие фокусы. Устройте драматическое шоу, чтобы усилить эффект!
Подсказка: если вы не хотите раскрывать секрет фокуса, попросите добровольца нажать на клавишу со знаком равенства (=) и сразу передать вам калькулятор, чтобы доброволец не видел результат умножения.
Подсказка: это работает, потому что составление двух одинаковых 4-значных чисел равнозначно умножению одного 4-значного числа на 10001, а число 10001 нацело делится на 137.
Подсказка: это работает, потому что 10001 = 137 x 73. Разделив 8-значное число на 137, вы получите число, равное загаданному число, умноженному на 73. Таким образом, если разделить это число на загаданное 4-значное число, каждый раз будет получаться число 73.
Пишем калькулятор на JavaScript
Доброго времени суток, друзья!
В этой статье мы с вами, как следует из названия, напишем простой калькулятор на JavaScript.
Желание написать калькулятор возникло у меня после просмотра одного туториала, посвященного созданию «simple calculator», который оказался далеко не симпл и толком ничего не умел делать.
Наш калькулятор будет true simple (42 строки кода, включая пробелы между блоками), но при этом полнофункциональным и масштабируемым.
Без дальнейших предисловий, приступаем к делу.
Наша разметка выглядит так:
Здесь мы подключаем библиотеку, создаем контейнер для калькулятора и поле для вводимых символов и результата.
Вот что мы имеем на данный момент:
Кнопки будут генерироваться программно.
Переходим к скрипту.
Определяем поле для вывода результата и создаем контейнер для клавиатуры:
Наша строка с символами выглядит так:
Преобразуем данную строку в массив и создаем кнопки:
Находим созданные кнопки и добавляем к ним обработчик события «клик»:
Мы также хотим иметь возможность вводить символы с помощью клавиатуры. Для этого нам необходимо добавить обработчик события «нажатие клавиши» к объекту «Document» или «Window», затем отфильтровать ненужные значения свойства «ключ» клавиши, например, с помощью регулярного выражения:
Метод «match» в данном случае играет роль фильтра: он не позволяет передавать функции «calc» аргумент, не соответствующий заданному в нем условию.
Само условие звучит так: если значением event.key является один из символов, указанных в квадратных скобках ([]; цифра от 0 до 9, знаки деления, умножения, сложения, вычитания, открывающая, закрывающая круглые скобки или знак равенства; обратная косая черта — экранирование) или (| — альтерация) Backspace, или Enter, то вызываем calc с event.key в качестве параметра, иначе ничего не делаем (Shift также успешно отбрасывается).
Наша главная (и единственная) функция «calc» выглядит следующим образом (код следует читать снизу вверх):
В завершение, парочка слов о заявленной масштабируемости и полнофункциональности.
Метод «evaluate» (ранее «eval») и другие методы Math.js имеют очень большие возможности. Опираясь на эти возможности, мы можем легко расширить функционал нашего калькулятора, добавив в него новые символы и операторы, предусмотрев возможность работы с числами с плавающей точкой (регулируя количество знаков после запятой с помощью переключателя и метода «toFixed») и т.д.
Благодарю за внимание. Надеюсь, вы нашли для себя что-то полезное. Хороших выходных и счастливого кодинга.
Тестируем и исправляем калькулятор на JavaScript
В нём много ошибок, но мы их пофиксим
Эта статья — продолжение истории про калькулятор на JavaScript. В предыдущих частях мы:
Теперь наш калькулятор будут смотреть инженеры по тестированию — постараются найти в нём ошибки логики, поведения, вычислений и прочие неявные моменты.
👉 В этой статье не будет автотестов, юнит-тестов, API-тестов и интеграционных тестов. Это всё нужные инструменты, но задача тестировщика, в частности, — выбрать правильный инструмент тестирования.
Если у него в работе очень простая программа (как наш калькулятор), то нет смысла городить автоматизацию и делать тесты ради тестов. Иногда можно и вручную всё проверить и получить точно такой же результат.
Базовое тестирование
Первое, что мы делаем, — проверяем, а как вообще ведут себя кнопки математических действий и делают ли они то, что нужно. Возьмём два числа — 12 и 5 — и сравним результаты всех действий с тем, что даёт калькулятор:
Отрицательные числа тоже отображаются и считаются правильно.
Тестируем большие числа
У компьютеров есть нюанс: любые переменные имеют ограничения по размеру числа. Например, если на переменную выделено 16 бит, то максимальное число, которое можно в нее положить, — 65 536. Число на единицу больше уже потребует 17 бит, а мы столько не выделяли.
Мы хоть и разработчики этого калькулятора, но мы не помним, какое число имели в виду, когда заводили переменную. Может быть, это решение за нас принял JavaScript. Поэтому нужно проверить, не сломается ли наш калькулятор от больших чисел.
Пробуем: 123 456 789 × 2 = 246 913 578 — верно
А вот необычный эксперимент:
12 345 678 901 234 567 × 1 = 12 345 678 901 234 568
Ух ты! Мы умножили большое число на единицу, а в ответе появилась ошибка. Это значит, что настолько длинные числа за раз наш калькулятор уже обработать не в состоянии.
❌ Неправильно обрабатываются 17-значные числа и те, которые больше них.
А если мы попробуем получить 17-значное число в ответе, интересно, оно тоже будет с ошибкой?
Да, в ответе тоже неверное число — 8 × 4 = 32, поэтому в конце должно стоять 2, а не 0. Пишем баг:
❌ Если в ответе получается 17-значное число или более — ответ точно неверный.
При этом деление на 16-значное число работает верно:
Тестирование математических трюков
Теперь попробуем разделить на ноль:
Скрипт хитро выкрутился и записал результатом деления бесконечность. Но лучше выводить сообщение, что на ноль делить нельзя.
❌ Нет сообщения при делении на ноль.
Отказоустойчивость
А что если оставить поле ввода пустым и попробовать что-то посчитать? Давайте посмотрим:
Скрипт преобразовал пустую строку в ноль и получил ответ, но это неправильно — при отсутствии одного из чисел калькулятор должен сообщить об этом, а не продолжать считать.
❌ Нет сообщения, если одно из чисел не введено.
Пойдём дальше и введём слово вместо числа:
Скрипт честно пытается перевести строку в число, у него это не получается, поэтому он выдаёт неопределённое значение.
❌ Нет проверки на то, ввели число или строку.
И напоследок проверим что будет, если мы что-то введём, но не выберем ни одно действие:
Тоже плохо. Надо будет обработать такую ситуацию.
❌ Нет проверки, когда не выбрали ничего из математических действий.
Так проверяем работу калькулятора со всеми действиями, а не только с умножением. В итоге у нас получится список ошибок, которые нужно исправить.
Что делаем
После тестирования у нас получился такой список ошибок:
❌ Неправильно обрабатываются 17-значные числа и те, которые больше них.
❌ Если в ответе получается 17-значное число или более — ответ точно неверный.
❌ Нет сообщения при делении на ноль.
❌ Нет сообщения, если одно из чисел не введено.
❌ Нет проверки на то, ввели число или строку.
❌ Нет проверки, когда не выбрали ничего из математических действий.
Исправим эти ошибки. Так как все вычисления начинаются при вызове функции func(), то и править всё будем тоже внутри неё.
Проверяем, что ввели число, а не слова или другие символы
Проверяем, что нет пустых значений
JavaScript когда переводит строку в число, то пустую строку он считает как 0. Нам такой вариант не подходит, поэтому сравним её с пустой сторокой. Если она пустая — выдаём сообщение и ничего не считаем.
Ещё надо дополнительно добавить проверку на пробелы — JavaScript строку из пробелов тоже переводит как ноль, а нам это не нужно:
Обрабатываем деление на ноль
Простая проверка — добавляем сравнение второго числа с нулём:
Обрабатываем длинные числа
Даже если мы ограничим каждое поле ввода числами по 16 знаков вместо 17, то при перемножении они дадут нам в ответе 32 знака — а это тоже превышает наш предел точности. Чтобы гарантированно получить в ответе число не больше 16 разрядов перед запятой, нам нужно, чтобы оба числа были не больше 99 999 999 — в нём 8 разрядов, а при перемножении мы получим максимум 16, как раз то, что нужно.
Чтобы это сделать, добавим проверку на размер числа:
Если не выбрано математическое действие
С этим всё просто — добавляем в case действие по умолчанию, которое выполнится, если никакие из вариантов не подойдут:
В итоге
✅ Калькулятор не работает с числами больше 16 знаков до запятой и предупреждает об этом пользователя
✅ В ответе всегда число, в котором не больше 16 знаков до запятой
✅ Есть проверка деления на ноль
✅ Есть сообщение, если одно из чисел не введено.
✅ Есть проверка на то, ввели число или строку.
✅ Есть проверка, когда не выбрали ничего из математических действий.
Это всё?
О нет, этот калькулятор можно гонять ещё и в хвост и в гриву:
Это (и многое другое) — и есть работа тестировщика. Круто, да?
Что означают кнопки на калькуляторе
Такие простые с первого взгляда устройства, как калькуляторы, могут оказаться сложными в обращении.
Всеми возможностями этих «счетных машинок» не пользуются даже опытные бухгалтеры, финансисты и программисты, уже не говоря о школьниках или студентах.
В первой части нашего материала рассмотрим функции самых простых калькуляторов (в качестве примера возьмем кнопки калькулятора Citizen), во второй – бухгалтерских, и в заключительной — инженерных (с поддержкой вычисления функций и т.п.).
За что отвечают кнопки на калькуляторе
Простейшие калькуляторы
Неотъемлемая часть любой вычислительной техники, работающей с числами – клавиши для ввода цифр. Поэтому кнопки от «0» до «9» в представлении не нуждаются.
Операторы основных математических операций, такие как умножение («*» или «×»), деление («/» или «÷»), сложение («+»), вычитание («-») и сравнение («=») знакомы по урокам математики.
Не должны вызвать проблем и операторы «квадратный корень от числа» («√»), квадрат числа («x2»), а также часть целого («1/x», единица делится на отображаемое значение).
Однако, с виду простой оператор % оказывается на деле сложен в использовании.
Если набрать любое число и нажать %, значение обнулится. И верно, ведь 1% — это одна сотая доля от какого-либо числа, а значит, требуемую к вычислению долю/часть необходимо дополнительно задать.
100+10%=110, ведь 10% от предыдущего числа (от 100) – это 10, а 100+10=110.
Аналогичные процедуры можно производить и с другими математическими операциями («-«, «/», «*»).
Дополнительные кнопки
Кнопки памяти на калькуляторе выносятся отдельным блоком и требуют определенных последовательностей работы с ними.
В качестве примера.
Бухгалтерские калькуляторы
Бухгалтерские модели устройств имеют дополнительные функции, такие как GT, MU, EX (не путать с EXP), TAX и другие (быстрый ввод нулей «00», «000», округление до заданного знака и в требуемую сторону, и т.п.). Ниже рассмотрим наиболее популярные клавиши.
То есть после трех следующих вычислений:
2*3=6 (нажатие CE)
5-3=2 (нажатие CE)
5/2=2,5
Нажатие GT отобразит результат 10,5 (6+2+2,5). Повторное нажатие GT обнулит регистр суммы.
Нагляднее всего операции с кнопкой MU демонстрируют равнозначные математические формулы ниже:
X+Y (MU) = 100 * (X+Y)/Y
X-Y (MU) = 100 * (X-Y)/Y
X*Y (MU) = X * (1 + Y/100)
X/Y (MU) = X / (1 — Y/100)
Например:
9 / 10 = 0,9
А если ввод был перепутан:
10/9 EX = 0,9
Таким образом, первым делом устанавливается ставка (кнопкой SET), например, в 20%, и далее производятся вычисления с использованием TAX:
400 «TAX+» = 480 (при ставке 20%),
400 «TAX-» = 320.
Очень полезными будут функции округления, которые часто реализуются специальными переключателями.
Что означают кнопки инженерного калькулятора
Инженерные калькуляторы могут быть весьма сложными в обиходе ввиду того, что позволяют реализовывать множество стандартных функций высшей математики и поддерживают ввод сложносоставных выражений.
На некоторых моделях можно составлять полноценные программы (в сети даже есть видео с запуском 3D игр на таких устройствах).
Описание стандартных возможностей в оригинальных инструкциях занимает несколько десятков страниц.
Лучше всего значение кнопок на инженерном калькуляторе уточнять именно в официальной инструкции или на сайте производителя.
Почему? Очень часто функции требуют соблюдения определенного синтаксиса, а большинство тригонометрических функций может работать только с заданными единицами измерения углов (одни работают только с градусами, одни только с радианами, есть универсальные модели и т.п.).
Во всем остальном обозначения и логика расчета полностью совпадают с требованиями высшей математики. То есть достаточно знать, как пишется функция и для чего она нужна, и тогда результат и процесс вычисления станет понятен («tg», «ctg», «sin», «cos», «acos», «actg», «atg», «logyx» и др.).
Единственная рекомендация – ставьте больше скобок, чтобы правильно распределить приоритеты в порядке действий по вычислениям. И тогда результат не станет для вас неожиданностью.