程式的整合方法
相信大家都知道fx-50FH / fx-50F PLUS只有四個程式的位置,很多人會問有沒有方法可以輸入多過4個程式。答案是有方法,就是將不同的程式給一個編號(例如: 0, 1, 2, 3 , 4),因此程式可以根據輸入的數值,決定執行那個程式,但要注意程式680位元的限制。你可以使用Goto指令或If 指令或While 指令去組織及整合程式,但要注意使用各種指令的一些限制。
(A) GOTO 指令程式整合方法
假設程式含有三個程式
方案一:
?→Y: Y=1 => Goto 1: Y=2 => Goto 2:
程式編號0程式 |
: Goto 0 : Lbl 1:
程式編號1程式 |
: Goto 0 : Lbl 2:
程式編號2程式 |
: Lbl 0
這個方案最大優點為簡單,很多不同現有的程式可以直接進行整合,缺短點相信大家都想到,就是每整合多一個程式,除了增加程式本身的長度外,還要額外加入的程式碼去控制程式的流程。紅色的程式碼 : Goto 0 : 可以改為◢,而最後紅色程式碼 : Lbl 0 亦可以省略,這樣程式會較為簡短,不過每個程式就不會自動終止,需要自行按AC終止程式。
方案二:
?→Y:
程式間的相同部分 |
Y=1 => Goto 1: Y=2 => Goto 2:
程式編號0程式 |
: Goto 0 : Lbl 1:
程式編號1程式 |
: Goto 0 : Lbl 2:
程式編號2程式 |
: Lbl 0
各個程式間會有一些相同的部分,這些部分不一定要重複編寫,如果安排恰當,甚至可以節省程式空間,程式間的相似程度越大,節省的空間越多,一般情況下,大多數程式都有輸入變數的部分,這些部分通常可以經修改後變成相同的部分(修改為相同的數字記憶)。雖然有這種好處,不過要對程式有基本認識,才可以恰當將程式修改及整合。同方案一相同,紅色的程式碼 : Goto 0 : 可以改為◢,而最後紅色程式碼 : Lbl 0 亦可以省略,這樣程式會較為簡短,不過每個程式就不會自動終止,需要自行按AC終止程式。
Goto方案的限制及注意事項:
若要整合的程式包含Goto及Lbl的組合,要注意上述Goto及Lbl編號與各個要整合程式的Goto及Lbl編號有沒有相同的情況,若有則會有衝突,只要在程式中改用其它沒有使用的Goto及Lbl編號組合即可。
(B) If / While 指令程式指令整合方法
(I) 二合一程式
?→Y: If Y: Then
程式編號1程式 |
: Else
程式編號0程式 |
這是一個很簡單二合一程式方法,比Goto指令更簡潔及更容易,但使用時要注意If及While本身是有限制,就是在一個If的結構內是不能再使用If語句,所以要整合的程式若包含有If 的語句,就會出現Syntax ERROR,解決的方法可以參考以下情況
(1) 若果只有一個程式要整合的程式有If 語句(假設是程式編號0的程式),那麼可以使用以下方法
?→Y: If Y: Then
程式編號1程式 |
◢ IfEnd:
程式編號0程式 |
現在程式編號0的If語句就不是在控制整合的If語句之內(紅色),所以程式可以正常執行,但程式編號1執行完結後是不會自動終止程式,要自行按 AC 終止。
(2) 若果兩個要程式都有If 語句,可以嘗試用While語句取代控制的If語句,即程式改為
?→Y: While Y:
程式編號1程式 |
◢ WhileEnd :
程式編號0程式 |
雖然這個方法可以解決兩個要整合程式有If語句的問題,但是While語句亦有本身的限制,就是While的結構內是不能再用While或For語句,所以最後可能要使用Goto指令方法才可以完全將問題解決。
(II) If / while 三個或以上整合方法
?→Y: If Y=1: Then
程式編號1程式 |
◢ IfEnd:
If Y=2: Then
程式編號2程式 |
◢ Else
程式編號0程式 |
另一個寫法
?→Y: While Y=1:
程式編號1程式 |
◢ WhileEnd:
While Y=2:
程式編號2程式 |
◢ WhileEnd:
程式編號0程式 |
與二合一的情況相同,這個N合一方法同樣有If / While的限制。
註: 若各個程式間會有一些相同的部分,這些部分不一定要重複編寫,可以參考Goto指令方案二的方法,作出適當安排以節省程式空間。
注意: 若果需要整合的程式包含 ClrMemory: 程式碼,請將 ClrMemory: 程式碼移至整合後程式的最前位置,否則程式可能無法正常運作,另外若果多於兩個要整合的程式包含ClrMemory: 程式碼,整合的程式只要一個 ClrMemory: 程式碼就可以。
返回 CASIO fx-50FH 及 fx-50F PLUS 程式集