小飛計算器(小飛可程式設計複數計算器)使用者手冊
版權所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/18676049
本軟體特色
·可程式設計,程式設計師可以在本軟體中寫程式。
·支援複數和複函式,所有函式均可以在複數模式下計算。
·支援多進位制實數,通常計算器只支援多進位制整數,本軟體還支援多進位制小數。
·高精度,支援任意小數轉為分數。
·有任意多的儲存器可供儲存資料。
更多特色請看
http://blog.csdn.net/xiaofei_it/article/details/18675175
1、基本功能
開啟計算器,使用者看到的介面稱作計算介面。
計算介面第一行的方框是輸入框,第二行的方框是輸出框,第三行的方框是模式框,最底下的方框是提示框。
請按在紙上的相同格式輸入結果,輸入的數值表示式將顯示在輸入框中。
之後按=,便開始進行計算。計算完成後結果將顯示在輸出框中。
如果想終止運算,按終止。
模式框顯示當前模式,通過設定可以改變模式。
點選“設定”可以改變實數複數模式、角度弧度模式、顯示方式。關於顯示方式請參見下文的“結果顯示”。
提示框顯示提示資訊。
在數值表示式中,運算子優先順序和日常的沒區別。
另外乘號寫作“*”,除號寫作“/”,圓周率寫作“pi”。
2、數值表示式
數值表示式出現在很多地方,輸入框中的表示式就應該是一個合法的數值表示式。在自定義函式中,數值表示式尤為重要。數值表示式和日常計算的表示式幾乎一樣,優先順序也幾乎一樣:乘方最高,乘除其次,加減最低。
另外,a^b表示a的b次方。注意乘方號的結合性,2^3^4是2^(3*4),而不是(2^3)^4。
在使用自然對數的底e時要注意,科學計數法裡已經使用了e作為指數標誌,所以諸如e^x應該使用exp(x)。
不論呼叫內建函式還是自定義函式,必須加上括號,比如sin 8應該寫作sin(8)。
pi返回圓周率。ans返回上次的計算結果,複數模式下,ans只保留結果的實數部分。
一個合法表示式的例子是3*7^4*ans+pi+load(x)。
2.1 合法的數
·實數輸入
實數可以有正負號,也可以加上指數,指數不能超過1000,不能小於-1000。一個實數不管有沒有指數部分,都不能有空格。如果要進行多進位制輸入,則應加上字首。多進位制輸入時,可以輸入小數,但不能輸入類似科學計數法的指數。字首以數字0開頭,後接一個字母(b或B表示二進位制,小寫字母o或大寫字母O表示八進位制,d或D表示十進位制,h或H表示十六進位制)。十六進位制大於9的部分由大小寫字母abcdef或ABCDEF構成。
以下是幾個例子:
89.756e+900
-89.68E89
32999.7864e-87
0Hadf78.8907
0b110.00011
·複數輸入
複數的實數部分和實數輸入相同,虛數部分在虛數後加上i即可。比如3-7i、-8+9i,如果想單獨輸入虛數單位i(比如2+i),那麼應該輸入1i(2+i應該輸入2+1i),因為計算器不把i看成數字,而把它看成一個識別符號。
3、結果顯示
4、儲存結果
計算結束後,可以儲存結果。點選“儲存結果”,選擇要存入的儲存器即可。也可以新建儲存器進行儲存。第一次使用時,還沒有儲存器,必須新建儲存器進行儲存。
儲存器ans儲存上次的計算結果,不應人為把結果存入ans中。
5、儲存器
儲存器儲存一些數值供使用者以後使用。使用者點選計算介面的“儲存器”後,可以新建儲存器並且儲存一些數值,也可以更改現有的儲存器中的數值。在自定義函式中,使用者可以使用store語句把相應的值存入儲存器。
在表示式中,使用者可以使用load(儲存器名)使用儲存器中的數值。比如load(sum)+5。另外load(ans)和ans是同一個意思。
儲存器名應是一個合法的識別符號。
注意:在複數模式下,儲存器只儲存數值的實數部分。
所有數值用十進位制表示時,均有50位精度,在顯示時顯示30位。使用者可以在ans儲存器中檢視所有的50位。
6、識別符號
合法的識別符號是一個字母開頭,後跟字母或數字的字串,中間不能有符號,也不能有空格。如About、sumOf2Num均為合法的識別符號。儲存器名、函式名、自定義函式中的變數名都應是合法的識別符號。
使用者自定義的識別符號不應是內建函式名、load、ans、pi以及保留字。
保留字有:function、var、if、else、for、to、step、while、break、continue、store、return等。
7、內建函式
表示式中可以呼叫內建函式,但是千萬記住加上括號。如sin(8)、cos(8-7*9)。
點選“函式”,再點選需要呼叫的函式,相應的函式就出現在計算介面輸入框的游標處,但後面的括號要自己補齊。某些函式有多個引數,多個引數中用逗號隔開。如root(34,5)。
輸入內建函式時,計算介面的提示框會顯示提示資訊。
每個內建函式都可以在實數和複數兩種模式下執行。在複數模式下,函式返回的值和實數模式不同,這一點要注意。比如sqrt(-1)結果是1i,而實數模式下會報錯。
通常複函式都是多值的,結果的表示式中會有k,k取不同值時就得到多個結果。本軟體取k為0。(軟體內建文件在此處有誤,以本文為主。)
複數模式下的函式是供高等院校師生和專業人員使用,普通使用者幾乎不需要在複數模式下使用內建函式。所以普通使用者請儘量使用實數模式下的函式。
8、自定義函式
呼叫自定義函式時,點選“自定義函式”,再選擇自定義函式,按“插入”,便會插入計算介面表示式的游標處,同時提示框內會顯示您編寫自定義函式時輸入的描述資訊。
要編寫自定義函式,點選計算介面中的“自定義函式”,再點選“新建”,輸入函式名和函式描述(呼叫自定義函式時,計算介面中的提示框中會顯示函式描述,所以建議您認真填寫),然後就進入函式編輯頁面。
編輯函式時,函式頭的函式名(具體見下文)應該與之前輸入的函式名保持一致。
編輯框中只能輸入一個函式(區域性函式是不被支援的),如果要建立其他函式,請另外新建函式。
如果編輯框中輸入了多個函式,本軟體只處理第一個函式,第一個函式後的所有內容將被忽略。
計算器只存入localFun,而忽略後面的函式。
本軟體不支援區域性函式,此例中,使用者只能把localFun作為一個新函式進行定義。
編輯函式後,點選檢查,會顯示編譯資訊。有錯誤時,提示資訊會顯示在下方,同時游標會顯示在出錯處的附近。
當確認沒有錯誤後,便可以使用此函式了。
本計算器不支援函式過載,所以當您已經編寫了函式max(a,b)後,就不能再編寫max(a,b,c)了。
9、編寫函式程式碼
一個函式由函式頭、變數定義、函式體三部分組成,其中變數定義部分可以省略。函式支援遞迴呼叫,並且可以在計算過程中把資料儲存在儲存器中,也可以從儲存器中讀取資料。
寫程式碼時,一切符號請使用英文標點,註釋中的除外;一切字母和數字請使用英文字母和半形數字,註釋中的除外。
考慮到某些手機輸入法可能使用不方便,編輯程式碼時,編輯器中給出了許多標點和語句的快捷輸入鍵。
您可以使用空格和tab製表符進行縮排。
一個典型的函式如下:
在使用計算器時,可以像使用內建函式那樣使用自定義函式。
您開啟fib函式,按“插入”,便可以把該函式插入輸入框的游標位置(和內建函式操作一樣)。
在計算介面輸入fib(6)+fib(3)+1,按等號,便得到17。
但如果計算fib(0)將死迴圈,請終止。
9.1 型別
當實數模式時,所有資料、變數、函式返回值都是實數型別;當複數模式時,所有資料、變數、函式返回值都是複數型別。所以程式設計時無需定義型別,由具體執行環境決定。如果函式只能在複數模式中執行,那麼在實數模式中執行會報錯。比如:
function foo()
{
return 1i;
}
另外許多計算器內建函式在複數和實數兩種模式中計算結果不同,因此如果自定義函式中呼叫了內建函式,結果會不同。
function foo(x)
{
return sqrt(x);
}
如果實數模式呼叫foo(-8),將會報錯,但複數模式可以執行。
因此,在使用內建函式時,請特別注意當前的模式。
您編寫函式時應該儘可能考慮相容性,即讓您的函式在實數複數模式下都能正確執行。
9.2 函式頭
格式:funtion 函式名(引數列表)引數列表不需要型別,只需要給出變數名。如果沒有引數,則空著;如果多餘一個引數,引數中用逗號隔開。
這些引數是按值傳入的,所以即使在函式體中,引數值發生了變化,原來的那些變數的值不會改變。
因為函式返回的只能是值,所以不需要定義返回值型別。在複數模式下,返回複數;在實數模式下返回實數。
例子:
function foo1()
function foo2(a)
function foo3(val,data,i,j)
9.3 變數定義
格式:var 變數列表;一切在函式中用到的臨時變數都應該在此處定義,如果沒有臨時變數,則不用定義。
這裡定義的變數是區域性變數,只能在當前這個函式中使用。
定義以分號結尾。變數之間用逗號隔開。
var a,b;
或者
var Example1;
以下例子是錯誤的:
function foo(a)
var b,c;
var d;
{
...
}
不應出現兩次var,應該改為
function foo(a)
var b,c,d;
{
...
}
9.4 函式體
函式體由“{”開頭,“}”結尾。由一條以上的語句構成。和絕大多數程式語言一樣,基本語句以分號結尾。基本語句包括賦值語句、儲存語句、返回語句、break語句、continue語句。
·賦值語句
格式:變數名=數值表示式;數值表示式在之前已經講解過了。
寫賦值語句時,別忘了最後的那個分號。
·儲存語句
格式:store(數值表示式, 儲存器名);如果儲存器列表中沒有相應的儲存器,那麼該儲存器會被新建;如果有相應的儲存器,那麼該儲存器的值會被覆蓋。
另外,為了相容,如果儲存一個複數,則只有實數部分會被儲存。這點請特別注意。
例子:
a=3.8;
store(a,mem1);
store(a+1,mem2);
store(5*7,mem3);
執行結束後,在儲存器列表中,mem1儲存值3.8,mem2儲存值4.8,mem3儲存值35。
·返回語句
格式:return 數值表示式;程式到此即返回,下面部分不再執行。
·if語句
格式1:if (條件表示式) 語句格式2:if (條件表示式) 語句 else 語句
條件語句可以巢狀。
·條件表示式
條件表示式類似大多數程式語言。大小比較符不能連用,即1<2<3這種表示式是錯誤的。
優先順序也類似大多數程式語言。以下是所有操作符的優先順序:
最上面的具有最高優先順序,最下面的具有最低優先順序,處於同一行的操作符的優先順序相同。
邏輯非(!)
乘方號(^)
乘除號(*、/)
加減號(+、-)
大小比較符(>、>=、<、<=、==、!=)
邏輯與(&&)
邏輯或(||)
注意:為了相容,在複數模式下,>、>=、<、<=四個符號只比較複數的實數部分,=和!=是比較實數和虛數部分兩個部分。
例子(沒有實際意義)
if (!(year==2001&&year==2002))
year=year+1;
else if (year/4000==0)
{
year=year+2;
ok=0;
}
·while語句
格式:while(條件表示式) 語句和絕大多數程式語言一樣,此處不再講解。
·for語句
格式:for 變數名=起始數值表示式 to 終止數值表示式 step 間隔數值表示式 語句(沒有“do”,軟體內建文件在此處有誤,以本文為準。)
執行過程如下:
(1)計算起始數值表示式,賦給變數。
(2)計算終止數值表示式,如果變數小於等於終止數值表示式的值,跳至3;否則跳至5。
(3)執行迴圈體。
(4)計算間隔數值表示式,此值加上變數賦給變數本身,跳至2。
(5)執行for語句以後的語句。
注意:每次終止數值表示式和間隔數值表示式都會被重新計算,所以如果數值表示式中有變數,請儘量不要在迴圈體內部改變該變數的值(除非有特殊需求)。
例子:
sum=0;
for i=a to b step 1
sum=sum+i;
·break和continue
while語句和for語句內部可以使用break和continue,也可以使用return。當然break和coontinue後面有一個分號。10、其他
10.1 迴圈體
多個語句組成迴圈體時,應用“{”“}”括起來。10.2 變數初始化
一切變數應該先初始化,否則值不能確定。10.3 遞迴呼叫
在函式中可以使用內建函式,也可以使用函式自身或其他自定義函式。不需要函式宣告,只要執行的時候,所有被使用的函式均有明確定義即可。如果您新建一個函式,取名fib,然後把函式體設為:
您就可以使用fib進行計算了。這裡有自身遞迴呼叫。
下面例子是兩個函式互相遞迴呼叫。
您新建一個函式,取名foo,然後把函式體設為
然後再新建一個函式bar
這樣您就可以使用foo和bar了。
注意:編輯函式的那個編輯框中只能編輯一個函式,絕對不能在一個編輯框中輸入兩個函式,也不能建立區域性函式。
10.4 函式註釋
“/*”和“*/”中間可以加入註釋。例如:
/*This is an example.*/
多行註釋推薦使用Java風格,即
/**
* This is an example.
* This is just an example.
*/
不支援“//”的註釋。
11、如何編寫好的函式
·要把函式描述寫好。·為了相容,註釋儘量用英文。
·考慮輸入的各種情況。如果您編寫的一個函式在某些不符合要求的輸入下不應繼續執行,那麼可以對符合要求的輸入返回相應的值,對不符合要求的輸入不返回值。這樣,如果輸入不符合要求,在函式執行結束時,由於沒有返回值,計算器會報錯,計算便終止了。具體請參見下文的例子。
12、有用的例子
·函式名:rand2
·描述:rand2(a,b)返回一個均勻分佈於[a,b)的隨機數。如果a和b中的任一個有虛數部分或a大於等於b,函式將報錯。
·程式碼:
function rand2(a,b)
{
if (a==conj(a) && b==conj(b) && a<b)
return rand(b-a)+a;
}
·函式名:gaussian
·描述:gaussian(mu,sigma)返回一個均值為mu,標準差為sigma的高斯分佈(正態分佈)的隨機數。如果sigma<=0,函式將報錯。
·程式碼:
function gaussian(mu,sigma)
var u1,u2,temp;
{
if (mu==conj(mu) && sigma==conj(sigma) && sigma>0)
{
/**
* Since rand(1) returns a uniformly distributed random number between 0.0 (inclusive) and
* 1.0 (exclusive), 1-rand(1) returns one between 0.0 (exclusive) and 1.0 (inclusive).
*/
u1=1-rand(1);
u2=1-rand(1);
/*Use Box-Muller transform to generate a standard Gaussian distributed random number.*/
temp=sqrt(-2*ln(u1))*cos(2*pi*u2);
return mu+temp*sigma;
}
}
相關文章
- 在手機上程式設計:自制的小飛可程式設計複數計算器(小飛計算器)程式設計
- 計算機計算小數除法的陷阱計算機
- AIX下的小計算器 bcAI
- 練手小專案(二):計算器(說明文件)
- Java程式設計常用計算機小知識Java程式設計計算機
- 加法小計算
- 當雲端計算飛向深空
- 小程式初探 —— 使用Taro開發BMI體質計算器
- 高數上 無窮小計算
- 計算器
- 複利計算器4.0JUnit
- 計算cpu速度的小程式 (轉)
- 結對程式設計 小學四則運算程式設計
- MaxCompute 圖計算使用者手冊(下)
- MaxCompute 圖計算使用者手冊(上)
- 微信小程式開發—專案實戰之計算器開發微信小程式
- 結對程式設計——小學四則運算練習題小程式程式設計
- Java 計算器Java
- 日期計算器
- 健康計算器
- JS計算精度小記JS
- 實時計算小括
- 計算機組成原理期末複習小結計算機
- 微信小程式--親戚稱呼計算微信小程式
- 飛思卡爾微控制器PIT彙編程式設計(一)程式設計
- 四則運算計算器
- 千鋒雲端計算畢業設計論文:遠端日誌伺服器配置手冊伺服器
- 單、複利計算程式
- Java語言編寫計算器(簡單的計算器)Java
- 逆波蘭計算器
- android計算器Android
- web計算器案例Web
- c#計算器C#
- javascript 計算器程式碼例項JavaScript
- 產假計算器php程式碼PHP
- 【雲端計算小知識】什麼是雲端計算?雲端計算特點是什麼?
- 施耐德UNITY下使用ST程式設計計算最近一小時的均值Unity程式設計
- 小學數學程式設計題程式設計