星尘计算器开发日志

高一的时候开始接触Java ME的编程,便产生了写一个计算器的想法,主要是因为自己对计算器的兴趣、热情和了解,同时在当时的Java ME平台上没有好用的计算器。当时每周回家只有几个小时的电脑时间,甚至有时只能用手机写代码,在学校的时候经常拿出本子手写代码,作为一种放松方式。这是一个缓慢艰难但有趣的过程,并且我也享受其中。于是断断续续地,终于写出一个雏形来了,支持常见的函数和数值微积分,简单的编程(do,while,自定义函数和变量),有3000~4000行,然后写了一个简单的界面,随便弄了一个图标和启动画面,加上名字“星尘计算器”,看起来就像模像样了。等到高三的时候,也就没怎么捣鼓了。

后来,在大一第一学期期中考,我感觉安卓的计算器也没有哪个比较好用,要么不够强大,要么没有自然书写,要么输入很麻烦,于是产生了继续写星尘计算器的想法。Java 的代码很容易被移植到安卓,但是没有自然书写,功能也不够强大,因此在以后的课余时间里,又断断续续地继续写了。有时连续一周下课后都在 写,有时好几周都没写,这其中还写了另一个小软件,但我还是希望能尽快写完星尘计算器,至少在大一暑假要将它完成并发布。

一个人做项目经理,做美工,做程序员,做算法工程师,这感觉真是酸爽。有时为了弄一个图标都要一个下午(然而我并不会PS T.T),有时为了寻找一种高效的数值算法要看好几遍英文论文,有时为了解决安卓的莫名其妙的错误要查找很多资料甚至翻看安卓的源代码,有时因为依赖包等等问题都要弄配置弄好久,有时为了键盘的按键安排反反复复地修改和测试,而直到现在也没有弄出一个像样的Logo和启动画面来。。。

在这里当个记录和激励吧~ 先把贴吧的开发日志搬运过来,贴吧的帖子也就不再更新了。

2013~2014

基本运算以及部分常见函数,包括:

◎基本运算 + - * / ^ abs

逻辑运算== != >= <= > < & | ~

三角函数 sin cos tan arcsin arccos arctan cot arccot deg rad pi

双曲函数 sinh cosh tanh arsinh arcosh artanh cosh arcosh

简单编程 do while if args argnum    = 自定义函数(允许重载和迭代)

对数指数 exp ln lg log sqrt cbrt e

其他常见函数 int(积分) diff (微分)sum prod solve(解方程) gcd lcm max min ranInt rand ceil floor ! mod !! %

◎高精度运算(仅支持 四则运算)

? ~ 2015.11.8

★自然书写显示 Natural View

线性文本、括号、分数线、根号(代表基本自然书写类型)及其组合的自然书写显示。

★eigenmath C语言开源库移植

2015.11.10

★将自己实现的BigDecimal和BigInteger更换为java自带的

2015.11.11

★添加 上述常见函数的高精度计算支持

优化 错误捕捉与处理机制 避免使用try...catch降低效率

2015.11.13

★修复 分数线显示BUG

★优化 自然书写分析逻辑

★添加 数学帝国工具计算模块

2015.11.14

★添加 一个简陋的键盘输入界面 为测试所用

星尘计算器开发日志_第1张图片

2015.11.18

★添加 高斯数值定积分函数

2015.11.22

★添加 幂的自然书写显示

★添加 自然书写显示中的框和光标

2015.11.23

★添加 键盘上的积分和求和等按键

★优化 部分运算符号的显示(例如乘号×和除号÷)

2015.11.24

★添加 点击屏幕可以跳转到光标处

★优化 光标显示 (由字符“|”改为drawLine)

★添加当显示宽度高度超出时显示“▲▼▶◀”的提示

星尘计算器开发日志_第2张图片

2015.11.25

修复 若干BUG

★添加 类似卡西欧计算器的自然书写显示删除和插入的自动判断(例如当根号内没有内容时自动生成框)

★添加 定积分的自然书写显示


2015.11.28
修复 若干BUG
★优化 自然书写显示的函数的括号换成方括号(例如sqrt( )改成sqrt[ ]) 以防止输入括号过程的错误显示
优化 幂函数的自然书写表示(由[ ]^[ ] 改成 ^[ ] )

2015.12.6
★添加 导数的自然书写显示
★优化 eigenmath的浮点计算精度修改为16位
★优化 部分代码和逻辑

添加 键盘按下时按键变色

2015.12.8
★添加 n次方根的自然书写显示
优化 部分代码和逻辑

★添加 算式显示部分的滑动条

2015.12.9~2015.3.3

由于期末考试和一些其他事情,中断开发

本来想寒假再继续,然而寒假前的计划从来都没有实施过/(ㄒoㄒ)/~~

2016.3.4
重构 自然书写模块
补充 一些注释。
修复 目前发现的大多数自然书写显示BUG
★优化 西格玛(求和符号)和括号的显示
★添加 求积符号的自然书写显示。
★添加 括号输入时的自动配对

并将暂停自然书写显示的开发

2016.4.13
添加 超丑的双键盘

★添加 历史记录
★添加 水平和垂直滑动

星尘计算器开发日志_第3张图片

2016.4.14
★优化 键盘图标(存在部分字母看不到的BUG)

★优化 字体
修复 智能删除、插入的所有已知BUG,输入的"人性化"可达到卡西欧ClassWiz计算器差不多

星尘计算器开发日志_第4张图片



2016.4.15
★优化 方框的显示
★修复 ListView不刷新的问题
★修复 输入过程不能正确自动滑动到光标处的问题
2016.4.18
★添加 透明状态栏
★添加 键盘上的一些函数
★添加 显示eigenmath的运算结果

星尘计算器开发日志_第5张图片
2016.4.19
添加 一个简陋的复制粘贴框
星尘计算器开发日志_第6张图片

2016.5.2
添加 标题栏(可隐藏)
添加 角度制选择
添加 侧拉菜单
添加 背景更换
添加 颜色选择器和主题颜色选择

星尘计算器开发日志_第7张图片

星尘计算器开发日志_第8张图片
星尘计算器开发日志_第9张图片
2016.5.10
★修复 按钮字体自动大写和显示不全的BUG
★优化 侧拉菜单,更换为NavigationView
★添加 简陋的设置界面
★添加 material design的部分设计(波纹响应,动画)
注:方程、图像功能尚未添加界面(但功能上是支持的)


星尘计算器开发日志_第10张图片
注:上图阴影为按下按键时的波纹动画瞬间
星尘计算器开发日志_第11张图片
2016.5.14
由于星尘计算"内核"是之前高一高二时写的,已经有四年之久,当时初学编程,用栈实现的,写的比较乱,错误提醒也不友好,所以有必要重写。
新的"内核"采用类似编译器的方式, 预处理→词义分析→语法分析→语法树解释(语法树优化→转换为字节码→字节码解释) 括号前已经完成,括号内的内容是后面再完成的,以提高多次重复计算(例如求和)的效率。
今天已经完成了大部分,支持了变量逗号,部分函数,部分错误提醒等。后面将再加入隐含乘号等。一些函数要重新实现,例如高精度的三角函数等。与此同时加强和eigenmath的兼容。
★添加 编译计算
★优化 为计算单元、各种数学函数实现留出接口,以便以后增加其他支持(例如复数)
★添加 多线程计算,解决了大量运算时界面卡住的情况并支持多个算式同时计算,但不是并发。JNI部分的多线程问题未解决,目前只能用synchronized锁定。
星尘计算器开发日志_第12张图片
2016.5.15
★添加 支持复数的Apfloat开源库,本来想不必自己写各种函数了,然而它除了四则算法很快外,其他的慢到爆,计算sin1 1000位要半分钟也是醉了,速度是我自己写的1/40.。。。所以一些函数还是要自己实现的说。。。

你可能感兴趣的:(星尘计算器开发日志)