Casio Basic入門49
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2015/04/17
修正 2017/08/16
2015/04/17
修正 2017/08/16
4. CasioBasicを使ってみる(続き)
Chapter 8 - 初級
前回: Casio Basic入門48 を見る
◆ Chapter 7 の目標: Basic コマンドを使ってみる
移植前の fx-5800P 用プログラムを再掲載します。変更する部分を赤文字で示しています。
fx-5800P:温度換算プログラム TEMP CONV
0→A
While 1
Cls
"1: °C" (スペース11個)
"2: °F" (スペース11個)
"3: K" (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<FMLA>"
-1→M
Do
Getkey→L
LpWhile L=0
L=35⇒1→M
L=36⇒2→M
L=37⇒3→M
L=74⇒4→M
K=73⇒Break
Locate 1,4," " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
Cls
Locate 2,1,"C = 5(F-32)÷9"
Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"
Locate 11,4,"<EXIT>"
While Getkey≠73
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd
WhileEnd
Cls
Locate 7,2,"BYE!"
新世代 Casio Basic は fx-5800P だけでなく、他のグラフ関数電卓にも搭載されています。そこで、今回は fx-5800P 用に作った温度換算プログラムを fx-9860GII や fx-CG20/CG50 (グラフ関数電卓) に移植することにします。
Chapter 8-8
グラフ関数電卓へプログラムを移植する
新世代 Casio Basic は、機種間の互換性は高いのですが、移植するにあたって、幾つかの制限があります。
fx-5800P から グラフ関数電卓への移植時に互換性の無いもの
出力 | " "(出力命令 | 詳細動作がかなり異なる |
◢(出力)命令 | fx-9860GII では -DISP- 表示にブロックされる | |
Cls コマンド | fx-9860GII では ClrText コマンドに置き換える | |
入力 | ?(入力)命令 | fx-9860GII では ?A と言う記法が使えない |
Getkey コマンド | キーコードが全く異なる | |
変数 | 配列変数 | fx-9860GII では 配列変数が無い |
行列 | 記法が異なる | |
その他 | キー | 同じキーが必ずしも無い |
関数 | 記法が異なることがある | |
プログラム名 | fx-9860GII では 8文字以下 |
" " (出力)命令は、表示行の全てを上書きします。同じ行に 先に Locate コマンドで表示してあると、それを上書き消去してしまいます。表示行を " " 命令だけで表示する場合のみ、互換性があります。
◢ (出力)命令
-DISP- と言う表示で1行占有される。先にLocate コマンドで表示された1行が -DISP- で完全に上書きされ、画面設計が潰されます。
?(入力)命令
?A と言う記法が使えず、?→A のみが使えます。?A と書くと、変数 A に入っている値を表示した上で、そのままで良ければ[EXE] で確定できる付加機能が得られ、使いやすいプログラムが作れます。fx-9860GII ではこの機能を使えず、?→A を書くしかありません。
Cls
グラフ関数電卓では ClrText と書き換えます。機能は全く同じなので書き換えるだけで使えます。
[2017/08/16 修正] グラフ関数電卓での Cls は グラフィックス画面の消去のみを行います。というのも、グラフィックス画面の消去コマンドには ClrGraph もありますが、これは同時に座標系をデフォルトの論理座標系に変更します。Cls は座標系の変更は行わずにグラフィックス画面の消去のみを実行します。
Getkey
キーコードが全く異なるので、キーコードを変更します。Getkeyコマンド自体の動作は全く同じです。
配列変数
グラフ関数電卓には無いので、代わりに行列を使います。
行列
扱う際の書式が一部異なるので、そこを修正すれば使えます。
キー
同じキーが無いことがあります。
関数
関数の記法が一部異なります。
ファイル名
fx-5800P は12文字以内、グラフ関数電卓は 8文字以内。
旧来の命令は、Basicコマンドほど互換性が高くなく、どうやっても同じ動作を実現できないことがあります。詳しくは、下記を参照してください。
⇒ fx-9860GIi への移植 - 厄介な旧来の命令
⇒ fx-9860GII への移植 - 素因数分解
⇒ fx-9860GII への移植 - ピタゴラス数
一方、Basic コマンドは、適切な変更を行えば、100%の移植が可能です。
温度換算プログラム TEMP CONV について言えば、
・ Getkey使用の際して、キーコードを変更する。
・ Cls を ClrText に変更する。
・[FMLA] キーが無いので、他のキーに変更する。
・ ファイル名 TEMP CONV を8文字以内に変更する。
先ずはこの程度の変更で、同じ動作を行うプログラムとして移植できます。上のプログラムコードで赤文字で示した部分が、移植に際して変更が必要です。
なお、Chapter 7 で作ったプログラムは、?命令の機能が異なるので、100%同じ動作をさせる移植は不可能です。fx-9860GII などのグラフ関数電卓への将来の移植を考える場合は、旧来の命令はできるだけ使うべきではありません。
キーコードの変更
TEMP CONV で使うキーコードについて、fx-5800P と グラフ関数電卓 の違いをまとめます。
キーコード | ||
キー | fx-5800P | グラフ関数電卓 |
[1] | 35 | 72 |
[2] | 36 | 62 |
[3] | 37 | 52 |
[EXIT] | 73 | 47 |
[FMLA] | 74 | --- |
[VARS] | --- | 58 |
計算式を表示させるためにfx-5800P では [FMLA] キーを利用しましたが、fx-9860GII にはこのキーは無いので、変わりに [VARS] キーを使うことにします。

[VARS] キーは [EXIT] キーの左上にあって、互いに近いので、使いやすいと思います。
Cls → ClrText の変更
単に書き換えるだけでOK.。
ファイル名の変更
TEMP CONV は9文字なので、8文字以内にするためにスペースを取って TEMPCONV に変更する。
以上の変更を反映させると、以下のプログラムになります。
fx-9860GII などグラフ関数電卓:温度換算プログラム TEMPCONV
0→A
While 1
ClrText
"1: °C" (スペース11個)
"2: °F" (スペース11個)
"3: K" (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<VARS>"
-1→M
Do
Getkey→L
LpWhile L=0
L=72⇒1→M
L=62⇒2→M
L=52⇒3→M
L=58⇒4→M
K=47⇒Break
Locate 1,4," " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
ClrText
Locate 2,1,"C = 5(F-32)÷9"
Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"
Locate 11,4,"<EXIT>"
While Getkey≠47
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd
WhileEnd
Cls
Locate 7,2,"BYE!"
これを実行してみます。
fx-9860GII の電源を入れ、[MENU] キーで MAIN MENU 画面を表示;

矢印キーで PRGM アイコンを選択;

そして [EXE] キーを押すと Program List が表示されます。

矢印キーでカーソルを移動させ、TEMPCONV を選択

[EXE] キーか [F1] (EXE) を押すと、プログラムが起動します。

なんだか間の抜けた感じですね。後で、それらしくなるように表示を変更することにします。先ずは動作確認をします。
[1] キーで、入力ボックス起動
![TC10-[1]](https://blog-imgs-71-origin.fc2.com/e/g/a/egadget/2015040510001022b.jpg)
摂氏 -40 を入力し、

[EXE] で入力確定すると、換算結果が表示されます。

換算は正常のようですね。では、[VARS] キーを押して計算式を表示させてみます。

では、[EXIT] キーでメイン画面へ戻ります。念のため、[EXIT] キーを押っ放しにしてみてください。
何も画面変化がなければ正常です。では [EXIT] キーを離してみると、

メイン画面に戻りました。
プログラムを終了させるために、[EXIT] キーを押すと、

正常終了の画面が現れます。ここで、[EXIT]、 [AC]、 [EXE] のいずれのキーを押しても、Program List 画面に戻ります。

これで、機能面では正常であることが確認できました。
さて、間抜けな感じの表示をなんとかしたいと思います。
fx-9860GII 用の画面をどのようにするかは、それぞれ好みがあると思いますが、ここでは以下のような画面にしようと思います。



先ずは、画面表示変更に挑戦してみてください。次回は、この画面に変更する方法を紹介します。
つづく...
⇒ Casio Basic入門50 / 目次
応援クリックをお願いします。励みになるので...
- 関連記事
-
-
Casio Basic入門G01 2017/09/25
-
Casio Basic入門G02 2017/09/25
-
Casio Basic入門49 2017/08/17
-
Casio Basic入門48 2017/08/17
-
Casio Basic入門47 2016/12/24
-