叨叨小算盘 3.0
叨叨小算盤 version 3.0 使用C#開發,運行于.net framework 4.0(點此下載)
叨叨小算盤的下載地址:download.csdn.net/detail/heroius/4878277
如有任何疑問,請訪問我的個人IEPI博客http://blog.heroius.com
了解叨叨小算盤
叨叨小算盤是一款智能計算器,它能夠識別你輸入的算式,并計算出一個結果。 啟動叨叨小算盤,可以見到它的主界面:
界面可劃分為4個部分,首先是菜單欄,這里提供了一些常用操作,這些操作也可以通過其他方式實現:
編輯:輸入框編輯功能。
- 復制:復制輸入框中當前選中的文本,你也可以在文本框使用Ctrl+C進行相同的操作。
- 粘貼:將剪貼板上的文本內容粘貼到輸入框的當前選中位置,等效于Ctrl+V。
- 清除表達式<:清空輸入框內容,點擊"Clear"按鈕或按下Del鍵可達到同樣目的。
- 退出:退出叨叨小算盤。
記錄:操作計算的結果記錄。
- 轉到第一個、上一條、下一條、轉到最后:在21個記錄緩存中移動,將相應位置的記錄顯示在記錄框中。
- 傳遞到輸入:將當前顯示的記錄移至輸入框選中位置。
- 從輸入獲取:將輸入框中的內容保存為一個記錄。
幫助
- 說明:也許就是因為點擊了這個,你才看到了這篇文檔。
- 關于:顯示程序信息對話框。
第二個部分是記錄區。主界面上設置有21個循環存儲區,用于保存計算的結果(包括錯誤信息)。除去當前記錄號和記錄顯示框,其他按鈕功能均與記錄菜單項中相同。
第三部分為鍵盤區。位于中央部分的密集的按鈕組成了鍵盤區的大部,點擊它們后將在輸入框選中位置插入按鈕上顯示的文本,當然你也可以在輸入框中手動輸入內容。除了這些鍵入文本的按鈕,還有一些特殊的按鍵:
- GO:相當于敲擊回車鍵,點擊之后程序將執行當前輸入框中表達式的計算。
- Clear:相當于敲擊Del鍵,點擊之后將清空輸入框中的內容。
- Back:相當于敲擊退格鍵,點擊之后將刪除輸入框中的選中內容或光標位置的前一個字符。
- 顯示記錄窗:顯示或隱藏計算的輸入和輸出記錄,記錄窗是下面這個樣子的:
第四個部分是算符列表,在列表框中列出了所有可用的算符,雙擊算符可以在輸出框中插入算符,如在列表的ADDITION項目處雙擊鼠標左鍵,輸入框中會添加“ADDITION()”內容,并且光標被定為在括號之間以便為算符輸入參數。
什么是算符
算符是由算符名和一對括號組成的,我們一般稱之為函數,算符的名稱可能包含字母、數字和下劃線,根據其功能不同,會需要在使用時提供數量不等的參數,參數之間需要用半角逗號(,)隔開,如算符ADDITION代表加法運算,使用時需要提供2個或更多參數:ADDITION(1,2,3),這樣的表達式會對參數進行求和,結果為6。
在算符列表中列出了叨叨小算盤支持的所有算符,下面的表單詳細說明了每個算符的作用和使用方法。
| ADDITION | 加法運算,基數為0 | 不限,應輸入2個或更多 | 任意參數均為和數 |
| SUBTRACTION | 減法運算 | 至少1個,應輸入2個或更多 | 以第一參數為被減數 |
| MULTIPLICATION | 乘法運算,基數為1 | 不限,應輸入2個或更多 | 任意參數為因數 |
| DIVISION | 除法運算 | 至少1個,應輸入2個或更多 | 以第一參數為被除數 |
| MINUS | 取相反數 | 1個 | ? |
| SELF | 獲取值自身 | 1個 | ? |
| ABS | 取絕對值 | 1個 | ? |
| REMAIN | 求整除余數 | 2個 | ? |
| POW | 乘冪運算 | 2個 | 第一參數為底數,第二參數為指數 |
| LOG | 對數運算 | 2個 | 第一參數為真數,第二參數為底數 |
| TETRATION | 重冪運算 | 2個 | 第一參數為根,第二參數為次 |
| SIN | 正弦函數 | 1個 | ? |
| COS | 余弦函數 | 1個 | ? |
| TAN | 正切函數 | 1個 | ? |
| ASIN | 反正弦函數 | 1個 | ? |
| ACOS | 反余弦函數 | 1個 | ? |
| ATAN | 反正切函數 | 1個 | ? |
| FACTORIAL | 階乘 | 1個 | 取第一參數的整數部分 |
| PERMUT | 排列 | 2個 | 第一參數為選取數,第二參數為元素總數 |
| COMBIN | 組合 | 2個 | 第一參數為選取數,第二參數為元素總數 |
| GT | 比較:大于 | 2個 | ? |
| LT | 比較:小于 | 2個 | ? |
| EQ | 比較:等于 | 2個 | ? |
| AND | 邏輯:與,基數為1 | 不限,應輸入2個或更多 | 所有參數均參與判斷 |
| OR | 邏輯:或,基數為0 | 不限,應輸入2個或更多 | 所有參數均參與判斷 |
| GE | 比較:大于或等于 | 2個 | ? |
| LE | 比較:小于或等于 | 2個 | ? |
| BETWEEN | 判斷第一參數是否在由第二、第三參數形成的閉區間上 | 3個 | 第一參數為待比較數,第二、第三參數分別構成閉區間的左右邊界 |
| NOT | 邏輯:非 | ? | ? |
| NE | 比較:不等于 | 2個 | ? |
| IN | 判斷第一參數的值是否在出其之外的參數中出現 | 至少1個,應輸入2個或更多 | 第一參數為待比較數,其余參數為查找集合 |
| ISNULL | 判斷輸入參數是否為空值 | - | 此算符無法在叨叨小算盤中使用 |
| PI | 得到圓周率 | 0個 | ? |
| E | 得到自然對數 | 0個 | ? |
| RANDOM | 得到隨機數 | 0個、1個或2個 | 若輸入0個參數,則得到0附近的隨機數;若輸入參數為1個,則得到參數附近的隨機數;若輸入2個參數,則得到0附近、參數限定范圍內的隨機數 |
| STR_EQ | 字符串操作:判斷兩個字符串是否相等 | 2個 | ? |
| STR_CONTAIN | 字符串操作:判斷第一參數是否包含第二參數 | 2個 | ? |
| STR_MATCH | 字符串操作:使用正則表達式判斷匹配 | 2個 | 第一參數為目標字符串,第二參數為正則表達式 |
注意:
什么是符號
符號實際上是對算符的簡化,如符號“+”相當于算符ADDITION,不同的是,符號只能是一元或者二元的,而算符的參數數量則不受這個限制。下面的表單列舉了能夠在表達式中使用的符號:
| - | MINUS | 對之后的成員取相反數 | highest |
| ^ | POW | 乘方 | higher |
| * | MULTIPLITATION | 乘法 | high |
| / | DIVISION | 除法 | high |
| + | ADDITION | 加法 | low |
| - | SUBTRACTION | 減法 | low |
| > | GT | 比較數值 | lower |
| < | LT | 比較數值 | lower |
| = | EQ | 比較數值是否相等 | lower |
| >= | GE | 比較數值 | lower |
| <= | LE | 比較數值 | lower |
| != | NE | 比較數值是否不等 | lower |
| & | AND | 邏輯與判斷 | lowest |
| | | OR | 邏輯或判斷 | lowest |
注意:
表達式規范
在叨叨小算盤中輸入的表達式必須遵循一定的規范:表達式中只能包含允許的成員,每種成員也有一定的格式要求,這些成員和要求在之后列出。
除了在字符串常量中:所有的字符均應為半角字符,并且建議不要使用任何空格,雖然空格會被自動忽略。
成對使用小括號“(”和“)”來確定優先級或分隔成員,程序無法識別其他的括號。
數值常量
數值常量中允許包含數字和小數點“.”,但每個數字應當最多包含一個小數點。輸入的數值一般是正數,負數的情況是通過符號“-”指定的。
字符串常量
字符串常量使用雙引號(同樣是半角的“"”)包圍,在特殊的情況下,字符串常量本身可能包含有雙引號,因此引入了轉義字符“\”,當需要在字符串常量中包含雙引號時,需要輸入“\"”,類似的,需要包含反斜杠時輸入“\\”。
算符
算符用于在表達式中調用內置的函數。每個算符包含一個算符名,接下來是一對小括號,在括號中為算符的參數,參數間由逗號“,”分隔。算符名只能包含字母、數字和下劃線“_”,且不能由數字開頭,字母不區分大小寫。在“什么是算符”主題下列出了所有可以使用的算符及說明。
符號
符號使用特殊字符來簡化算符的使用,在“什么是符號”主題下列出了所有可以使用的符號及說明。
特殊值
特殊值的表達規范和算符的名稱相似,只能包含字母、數字和下劃線"_",且不能由數字開頭,但是字母區分大小寫。特殊值用來對應數學中的常用數值,在叨叨小算盤中,e代表自然常數,pi代表圓周率,x代表一個基于0的隨機數。
?
計算實例
考慮如下算例:
計算半徑為4.5個單位的圓面積
表達式:pi*POW(4.5,2)
結果:63.6172512351933
比較 3倍√2 是否大于 2倍√3
表達式:3*POW(2,-2)>2*POW(3,-2)
結果:1(是)
從5個顏色的球中任選3個,有多少種顏色組合可能
表達式:COMBIN(3,5)
結果:10
轉載于:https://www.cnblogs.com/heroius/archive/2012/12/13/abacus.html
總結
- 上一篇: poj 1390(消除方块(blocks
- 下一篇: Strut2的属性驱动,模型驱动的理解