2012年2月9日 星期四

Quick Expression Calculator - 快速算式計算機 - Neil自製

程式作者:Neil
製作日期:2012-01-31
最後修改:2012-01-31

我很大言不慚的的直接把我寫的程式取了「快速」兩個字...XD
其實我是想了很久,不知道我程式到底要取什麼
功能相近的程式,如果沒自己特色的話,那寫出來的意義就不大了
所以,就從我自己程式獨有的特色點出來!對,就是快速!

雖然我不敢講我的程式最快,但至少我下載了好幾種國內外的的計算程式(可輸入算式)
運算速度真的都比我的慢很多耶...

畫面醜醜的就別太計較了.....
先說我程式特色...等等在繼續看我廢話...


特色
、可輸入一般數學算式,且即時運算,馬上打馬上出來,免按等號(這就是我程式圖案的由來)

、左右括號自動補齊

、Syntax highlighting(數字標藍色,運算符號紅色、括號綠色、文字或其他為黑色。如果長度超過128字則全黑色,原因後面會講)

、可接受比較非正規的數學算式(或者說一般程式比較不接受的運算式)。例如:
8*-2 => 正規寫法是 8*(-2)
5(-2+0.5)(-7-1.1) => 正規寫法是 5 * (-2+0.5) * (-7-1.1)
sin-5 => 正規寫法是 sin(-5)
-4sin30cos50  =>  正規寫法是 (-4)*sin(30)*cos(30) ←幹~這多麻煩阿!又括號又*號,打半天

、可自訂變數

、可記錄算式,於輸入框按下Enter即可


有沒有發現一件事,我一開始說~我的程式特色就是速度,而我卻沒列出來?
因為我現在才要講......

效能測試
我先說一下我的測試速度環境:
平台機器:Acer 小筆電 (Aspire One AOA150)
CPU:Intel(R) Atom(TM) CPU N270
RAM:1024 MB
測試項目:計算長度為1,000,000的算式 (包含加減乘除、開根號、平方、三角函數、指數函數等等)

測試結果如下圖 (點圖放大)


200%一定有人會問,什麼是整體費時?什麼是計算費時?差別?
我做了張圖片,如下:



























相信看了圖應該都能懂才對

影片介紹(建議開720p比較清楚)
話說我竟然還出影片教學!這整個感覺我好像在寫作業打報告ㄟ...
Youtube影片如下:(我非常不擅長影片編輯,剪得很爛別炮我...........)
(影片不定時更新...sorry)




我為什麼要設定長度如果超過128字就全上黑色?因為編輯框物件本身的關係,我是用TRichEdit,他的文字設定顏色的速度非常差,雖然我有參考Faster rich edit syntax highlighting這篇國外的文章,如何加速TRichEdit文字上色的方法,我也有用了,的確明顯變快,但還是有限,那篇文章最後也有講了 "The VCL TRichEdit component greatly simplifies coding reasonably sophisticated applications. However, it is designed for convenience, not for speed",這就是TRichEdit的弱點吧!除非用第三方工具,但我有試著裝SynEdit,可是就是裝不起來,只好放棄。


以下廢話開始...

我是不知道還有沒有速度更快計算數學算式的程式,我是有測試SpeedCrunch、計算工廠2、Gu Calculator、單位轉換手冊AEC,速度上跟我的似乎差蠻大的。其實我也用過SpeQ,因為它只能輸入250字,所以不得而知。不過我想,應該是有其他程式超越我的計算速度。

不過話說,論功能的話,我是的確輸他們沒錯,有的還有更多函數,但這會是導致他們速度慢的原因嗎?即使是這樣,小弟程式還多了不少它們沒有的判斷呢,例如  8*-4sin-30.1cos50.2,有幾個程式能正確解析並算出這段運算式?或許只剩下google吧!去google搜尋就知道了,雖然說這是很不正確的寫法,正常應該寫成
 8*(-4)*sin(-30.1)*cos(50.2) ,打了很多括號乘號。總之...有待驗證囉...(好吧...我承認我好像一直在吹捧自己...)

我在寫程式的時候
老爸問了一我句話:「有哪種人會需要算這麼長的算式嗎?這麼長的算式有實際用途嗎?」
嗯...我也不知道該說什麼...被我老爸一語道破...
我只能說....或許這真的是寫給自己爽的吧...

市面上應該有類似多到不行的程式了,還有強大的google搜尋也能算!我為什麼要寫這程式?

原因就...從我大學畢業後兩個月,在一家公司上班,去年(2011)的10月底被...嗯,理由是因為沒東西給我做,都丟給中大陸去做了。之後我上104登記履歷,陸陸續續有幾家公司主動找我面試,去面試了三家都沒上,我發現一件事,個人堅決認為C跟C++可以說是完全不一樣的程式語言!我大學期間都用C語言,只有大一下有用Java,但面試的時候被問到的幾乎都是問C++的東西,我幾乎答不出來,即使我聽過泛型、多型、template、virtual function、STL,但都沒用過,根本不知道那是啥。於是之後大約一兩個禮拜,自己在家狂惡補,把面試被問的問題全都去google找資料學起來!看很多C++教學文,那段時間我真的學到很多。然後也去高中生程式線上解題系統玩一玩,看到裡面有一題叫五則運算,我也去寫一寫。結果排行裡,我寫出的程式速度是0 ms,且程式碼最少,所以引起我的興趣,來寫個計算機程式。


載點:<暫不公開>

3 則留言:

  1. GOOD!
    只能說太厲害了!

    回覆刪除
  2. 這麼多複雜的東東叫我自修的話.....衰~比登天還難阿..

    等有了唉鳳五再來看能不能激發一點程式魂出來...

    回覆刪除