Панель с калькулятором

(поделиться находкой)
Обычный калькулятор закрывает часть таблицы, а удобный - нет.
Программа "SIDETOOL.EXE"
(версия 0.2.0.0 бета)
Размер: 0,05 Мб

Обычный калькулятор перекрывает окна других программ или сам прячется за ними. Удобный калькулятор всегда находится на виду и готов к работе.

Описание программы

Предлагаемая программа представляет собой простой 10-разрядный калькулятор для выполнения четырёх арифметических действий над числами в форме с естественным положением десятичной запятой. Основные возможности программы:

Специальной установки программа не требует. По ссылке "Скачать программу" загружается EXE-файл, который может быть запущен на выполнение любым удобным способом.

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

При разработке программы преследовалась цель, чтобы пользователь "настоящего" калькулятора испытывал минимальный дискомфорт. Для этого в программе реализованы:

Вычисления с константой

В калькуляторе реализован традиционный режим вычислений с константой. Поясним его на примере.

Предположим, что для ряда товаров нужно подсчитать НДС, который составляет 20% от стоимости. Для вычисления 20% от некоторого значения нужно это значение умножить на 0,2. Допустим, первый товар стоит 425 рублей. Набираем число "425", нажимаем кнопку [*], набираем число "0,2" и нажимаем кнопку [=]. На индикаторе калькулятора отобразится вычисленное значение: "85,".

При этом "за кулисами" помимо выполненного вычисления произошло ещё одно действие: при нажатии кнопки [=] калькулятор запомнил последнюю операцию: "* 0,2". Теперь для расчёта НДС по второму товару, который стоит 417 рублей, достаточно набрать число "417" и нажать кнопку [=]. На экране отобразится результат умножения введённого числа на 0,2 — "83,4".

Таким образом, калькулятор запоминает последнее действие, которое было введено перед нажатием кнопки [=], и выполняет его для нового значения, если сразу после его ввода нажать на кнопку [=].

Вычисления с памятью

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

Предположим, на расчётном счёте имеется 1 102 рубля, из которых 367 рублей нужно оставить на текущие расходы, а остальные средства можно разместить в депозит на 1 месяц под 3,75 % годовых. Какой доход можно получить в описанной ситуации?

  1. Сначала вычислим, какую часть от размещённой в депозит суммы можно получить за один месяц: "3,75" [/] "100" [/] "12" [=]. Отобразившийся на индикаторе результат "0,003125" сохраним в памяти: [M+].
  2. Теперь вычислим сумму, которую можно разместить в депозит: "1102"[-]"367"[=]. Получилось 735 рублей.
  3. Умножим число, которое отображается на индикаторе, на вычисленную ранее долю ежемесячного дохода. Для этого нужно нажать кнопки [*] (операция умножения), [MR] (вызов значения из ячейки памяти на индикатор) и [=] (выполнение вычисления). Получится результат: "2,296875". Таков доход в рублях за месяц нахождения средств в депозите.

Конечно, использование кнопки [M+] приводит к записи отображаемого на индикаторе значения в память только в начальной ситуации, когда ячейка памяти пуста и в ней содержится число "ноль". Если в памяти уже содержится какое-нибудь число, то нажатие кнопки [M+] будет приводить к прибавлению к находящемуся в памяти значению числа, отображаемого на индикаторе. Аналогично, нажатие кнопки [M-] будет приводить к вычитанию числа из содержимого ячейки памяти.

Для того, чтобы очистить ячейку памяти (записать в неё число "ноль"), предназначена кнопка [MC]. А кнопка [MR] предназначена для извлечения находящегося в памяти числа на индикатор.

Обработка переполнений и ошибок.

При выполнении вычислений может возникнуть ситуация, когда точный результат нельзя разместить на индикаторе калькулятора. Например, деление "единицы" на число "три" даёт бесконечную десятичную дробь "0,333333333…". На десятиразрядном калькуляторе в этом случае будут отображены только первые девять цифр дробной части.

Рассмотрим другой пример — деление "единицы" на "шесть". Результатом снова будет бесконечная дробь: "0,166666666…". По правилам математики, округление этой дроби до девяти цифр после десятичной запятой должно дать число "0,166666667". Однако на индикаторе калькулятора будет отображено число с цифрой "шесть" в последнем разряде.

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

Если в результате вычислений получается число, величина которого слишком мала, чтобы быть отображённой на индикаторе (например, при вычислении "0,0025 / 10000000"), калькулятор не сочтёт это за ошибку, и на индикаторе отобразится "ноль".

Другое дело, если расчёты дадут слишком большое значение, для отображения которого не хватит разрядов индикатора калькулятора. Например, "1234567 * 9876543". Точное значение этого произведения равно "12 193 254 061 881" — всего 14 цифр результата. Если же попытаться вычислить предложенное выражение в программе, то на индикаторе отобразится число "1219,325406", а калькулятор перейдёт в состояние "переполнения", о чём будут сигнализировать его "отключившиеся" кнопки.

В случае переполнения на индикаторе калькулятора отображается число, которое, будучи умножено на 10N, где N — разрядность калькулятора, даст приближённое значение вычисляемого выражения. Для приведенного примера: 1219,325406 * 1010 = 12 193 254 060 000, что с точностью до четырёх младших разрядов соответствует реальному значению выражения.

Вывести калькулятор из режима "переполнения" и продолжить вычисления можно двумя путями. Первый путь — нажать кнопку [CE]. В этом случае вычисленное значение сохранится на индикаторе, что позволит продолжить вычисления с приближённым значением, имея в виду свершившийся факт переполнения. Второй путь — нажать кнопку [ON/C], в результате чего калькулятор перейдёт в начальное состояние, а на индикаторе отобразится "ноль".

Наиболее проблемная для калькулятора ситуация — это требование пользователя разделить какое-нибудь число на ноль. Выполнить это действие невозможно, поэтому калькулятор переходит в состояние ошибки. Однако, поскольку запрос деления на ноль является, вероятнее всего, непреднамеренным действием пользователя, на экран индикатора выводится число, предшествующее этой операции. Это позволяет после сброса ошибки с помощью кнопки [CE] сразу произвести требуемое вычисление, без необходимости повторного набора числа.

Обратная связь

Программа находится на стадии публичного тестирования. Это означает, что она прошла внутренние проверки, предусмотренные разработчиком, но ещё недостаточно испытана пользователями. Если Вы загрузили программу и попробовали выполнять с её помощью какие-нибудь вычисления, то тем самым приняли участие в её испытаниях.

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

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


Форма обратной связи