English version

Students Calculator for JAVA phones

by :VoxeL: aka absorbb

Представляю Вашему вниманию JAVA калькулятор для студентов. с вводом строки, но не в режиме tap, а с клавиатуры.
Проблема с малым кол-вом кнопок была решена делением клавиатуры на уровни:
1ый уровень: цифры и "."
2ой уровень: sin, cos, tan, *, /, +, -, (, ), квадрат, корень квадратный
3ий уровень: asin, acos, atan, ln, log, e в степени x, (-), 10 в степени x, π, x в степени y, корень n-ной степени.
4ый уровень:
sh, ch, th, ash, ach, ath, ANS (вставка ответа в строку), abs, факториал, X,Y (переменные задаваемые пользователем)
Уровни переключаются #.
Проверено, что скорость ввода на нем почти не уступает обычным калькуляторам. Максимум для введения оператора потребуется 4 раза нажать кнопку, а т.к. большинство нажатий приходится на числа, то в среднем получится около 1ого нажатия :)
Точность 16 разрядов. Для расчетов чисел с плавающей точкой применяется класс Real.java от Roar Lauritzsen.
Калькулятор написан под MIDP1.0 и CLDC1.0

Дополнительно:

  1. В калькуляторе сохраняется история ввода из девяти строк.
  2. Имеется возможность задавать 2 пользовательские переменные и использовать их в строке ввода.
  3. Возможность считать в системах HEX, OCT, BIN! Для этих режимов доступны дополнительные  функции div, or, and, mod, xor, not, >>, <<.
    (версия 1.5.0)
  4. Настройка формата угловых аргументов (градусы/радианы/грады/длина дуги) через меню Settings.
  5. Настройка формата вывода ответа (Number Format): FIX, SCI, ENG и количества разрядов.
  6. Возможность переназначения клавиш DIAL, FIRE, NODIAL(только для некоторых телефонов) через меню Settings.
  7. Для перевода текста в любой формат и для копирования его в буфер обмена (на телефонах поддерживающих это) функция  (Convert ANS).
  8. Возможность преобразования ответа в простую дробь (ANS to a/b). Алгоритм приближённый. В случае если подобрать дробь точно не удаётся перед результатом ставится символ "Е".
  9. История ввода и все настройки сохраняются при выходе.
  10. Возможность вставлять основные физические константы через меню Constants. (константы заданы в системе SI)

Джойстик  вверх/вниз - навигация по истории ввода. "Вниз" на первой строке создает новую строку и затирает верхнюю. "=" не создает в истории ввода новой строки.

Протестирован на:
Motorola E398, V620, C380, C650
SonyEricsson K700
, Т630, T610
Siemens C65 CX65 (версия для Siemens) , SX1
Nokia 6610i, N-Gage
Samsung E800
Теоретически должен работать на всех телефонах.

Спасибо:
JenFA за исходники File Manager, которые мне очень помогли, за ценные советы и моральную поддержку.

Бушевой Марии aka RNqAM за вдохновение и за моральную поддержку.
Павлу Стриженко aka Proton за самоотверженное тестирование и продвижение проекта.
Станиславу Дмитриеву aka Stasilok за обнаружение и устранение глюков с телефонами Siemens.

DOWNLOAD:

MIDP1.0 версия Students Calculator 1.5.0 PR - рекомендуется для всех мобильных телефонов.

Download: Archive RAR: link1, / JAR file: link1 / JAD file: link1

MIDP2.0 версия Students Calculator 1.5.0 PR для Motorola - специальная MIDP2.0 версия только для телефонов Motorola, дающая возможность управления функцией подсветки и включения полноэкранного режима.

Download: Archive RAR: link1, / JAR file: link1 / JAD file: link1

Комментарии оставлять в форуме или по absorbb@gmail.com

Изменения в версии 1.5.0 PR от 26.03.2006:

1. Использована новая версия класса Real.java с исправленной ошибкой расчета на некоторых телефонах Siemens и Nokia. Специальная версия для Siemens теперь не нужна.
2. Исправлен неправильный расчет констант.

Изменения в версии 1.5.0beta4 от 7.01.2006:

1. Теперь можно настроить формат данных для вычислений в режимах HEX, OCT, BIN - 1, 2 или 4 байта (Number Format)
2. Исправлены проблемы отрисовки клавиатуры на некоторых телефонах.
3. Мелкие багфиксы.

Изменения в версии 1.5.0beta3 от 1.12.2005:

1. Новый алгоритм распознавания и расчета строки. Написан практически с нуля.
2. Исправлены приоритеты побитовых операций - теперь соответствует принятым в программировании.
3. Значительно ускорен алгоритм преобразования в дробь. Также повышена точность преобразования.
4. Новый алгоритм сохранения настроек и работы с формами настроек.
5. Оптимизация всего кода программы.
6. Мелкие багфиксы.

Изменения в версии 1.5.0beta2 от 25.10.2005:

1. История ввода для каждого из режимов DEC,HEX,OCT,BIN теперь своя.
2.
Исправлены глюки клавиатуры.
3.
Исправлены приоритеты при расчете функций div, or, and, mod, xor, , >>, <<

Изменения в версии 1.5.0beta1 от 24.10.2005:

1. Добавлена возможность считать в системах HEX, OCT, BIN! Для этих режимов доступны новые функции div, or, and, mod, xor, not, >>, <<
2.
Функция ANS to text заменена на Convert ANS и теперь представляет ответ сразу во всех форматах (DEC,HEX,OCT,BIN)
3.
Добавлена функция Past ANS для прямой вставки ответа в строку. При этом ответ полученный в другой системе исчисления преобразуется в текущую.
4. Новые форматы для угловых аргументов - Грады и Длина дуги
5. Оптимизация кода и графики.
6. Небольшие фиксы в алгоритмах распознавания строки.

Изменения в версии 1.13 от 20.09.2005:

1. Повторение действия клавиши при удерживании.

Изменения в версии 1.12 от 29.04.2005:

1. Увеличена скорость и повышена точность алгоритма преобразования ответа в дробь.
2. Теперь если перед дробью стоит символ "Е" это значит, что результат алгоритма приближённый.

Изменения в версии 1.1 от 27.04.2005:

1. Владельцам телефонов Siemens теперь доступна полнофункциональная версия программы.
2. Исправлен расчёт корня n-ной степени (уже в версии 1.07 с 16.04.2005)
.

Изменения в версии 1.07 от 13.04.2005:

1. В истории ввода теперь сохраняется 9 строк.
2.
В список Constants добавлены ещё 3 константы
3.
Небольшая оптимизация алгоритма преобразования в простую дробь.

Изменения в версии 1.05 от 28.03.2005:

1. Добавлена возможность вставлять основные физические константы через меню Constants.
2.
Добавлена возможность удалять из главного меню ненужные пункты (Settings).
3.
Исправлены мелкие недочеты.

Изменения в версии 1.02 от 26.03.2005:

1. Добавлена возможность преобразования ответа в простую дробь. Алгоритм экспериментальный и достаточно медленный. Надеюсь получится улучшить.

Изменения в версии 1.01 от 24.03.2005:

1. Исправлена незначительная ошибка в алгоритме распознавания строки.

Изменения в версии 1.0 от 22.03.2005:

1. Исправлен глюк с прорисовкой ответа на некоторых телефонах.

Изменения в версии 1.0RC2 от 21.03.2005:

1. Настройки значений кнопок DIAL, NODIAL, FIRE и формата для угловых аргументов вынесены в пункт Settings.
2. Добавлена возможность копировать текст в буфер телефона через пункт ANS to text.
3. Теперь ускорение курсора происходит после 8 повторных нажатий (раньше было 10)
4. Из-за глюков с рисованием ответа по правому краю на некоторых телефонах, по умолчанию ответ рисуется по левому. Right align можно включить в пункте Settings.
5. Исправлены мелкие недочёты.

Изменения в версии 1.0RC1 от 20.03.2005:

1. Добавлен четвертый уровень клавиатуры. Содержит гиперболические функции, ANS, abs, факториал и 2 пользовательские переменные.
2. Добавлена возможность задавать значения 2ум пользовательским переменным и использовать их в строке ввода.
3. Настройка формата результата вычислений FIX SCI ENG и количества разрядов.
4. Ответ рисуется по правому краю.
5. Изменён внешний вид кнопок.

Изменения в версии 0.91 от 20.03.2005:

1. Теперь калькулятор использует класс Real.java от Roar Lauritzsen  для расчётов с плавающей запятой. Благодаря этому существенно повышена точность и быстродействие. Точность 16 разрядов.

Изменения в версии 0.90 от 19.03.2005:

1. Учёт нюансов в распознавании строки. Теперь кажется уже на 100% совпадает с железными аналогами.
2. Улучшена проверка синтаксиса строки.

Изменения в версии 0.89 от 19.03.2005:

1. В истории операций теперь 5 строк.
2. Проверка синтаксиса строки перед расчётом.
3. Новый шрифт для строки ввода.
4. Исправлены мелкие недочёты.

Изменения в версии 0.88 от 18.03.2005:

1. Добавлена история операций! Навигация по строкам - стрелки вверх, вниз. "Вниз" на первой строке создает новую строку и затирает верхнюю.
2. Сохранение истории операции и всех настроек при выходе и восстановление их при последующем запуске.
3. Возможность перенастройки кнопки "DIAL" с "=" на Delete. Необходимо для тех телефонов, в которых и "=" и delete доступны только через меню.
4. Исправления в алгоритме расчёта строки. Теперь наиболее приближенно к аппаратным калькуляторам.
5. Оптимизация алгоритмов прорисовки. Торможение практически исключено.

Изменения в версии 0.75 от 17.03.2005:

1. Исправлены серьёзные ошибки в расчёте строки, приводившие к неверному ответу в правильно заданной строке.
2. Изменения в алгоритмах распознавания строки. Запись подобная ln5ln6ln7 теперь считается как ln5 * ln6 * ln7, как в Casio и Cityzen
  
а sinп(2+0.5) как sinп * (2+0.5)

Изменения в версии 0.73 от 16.03.2005:

1. Полностью дооптимизировал алгоритмы прорисовки. Теперь практически ни один пиксель лишний раз не перерисовывается. Что должно положительно сказаться на скорости отрисовки экрана 
2. Изменения в алгоритмах распознавания строки. Теперь можно считать выражения подобные (2+3)ln3,  (1+2)sin2п.
3. tan теперь рассчитываются верно.

Изменения в версии 0.71 от 16.03.2005:

1. Бортик клавиатуры не сливается с цифрами на экранах 128х128.
2. Изменения в алгоритмах распознавания строки. Теперь можно считать (2+3)(3+4).
3. atan теперь рассчитываются верно.

Изменения в версии 0.7 от 15.03.2005:

1. Изменён внешний вид клавиатуры. Более быстрые алгоритмы прорисовки экрана.
2. Изменения в алгоритмах распознавания строки. Теперь можно писать следующие выражения:
    2ln4,3sin0.5п, 4(2+3), но (2+3)(3+4) нельзя - нужно (2+3)*(3+4).
3. Уменьшена вероятность вылета от синтаксической ошибки.

Изменения в версии 0.56 от 14.03.2005:

1. Исправлена несовместимость с SonyEricsson T6xx и наверное Z6xx тоже.
2. Оптимизирована прорисовка.

Изменения в версии 0.55 от 14.03.2005:

1. Пришлось отказаться от FullScreen и использовать MIDP1.0. Для совместимости со всеми телефонами. Теперь подписи к софт-клавишам в нижней полоске, что даже в некотором смысле удобнее.
2. Кнопка "Dial" эквивалентна "="
3. У тех мобил, у которых есть кнопка "с" (стереть) она должна работать как DEL.
4. Сделал переключение Градусы / Радианы
5. Возможность вставки полученного ответа в строку ввода.