fx-201Pでのプログラミング (1)
少し前に紹介したCASIO初の本格的プログラム関数電卓fx-201Pですが、本日はそのちょっと変わったプログラム言語について紹介したいと思います。
fx-201のプログラムを入力するには、モード切替スイッチを"WRITE"に切り替えますが、WRITEモードで[AC]キーを押すとそれまで入力されていたプログラムは消去されますので注意が必要です。表示が"0."の状態でキー入力を行うと、プログラムとして記録されていきますが、プログラム入力中の画面は下記のような感じで左端の3桁が最後に入力したキーのステップ数(右端に表示されている"Γ6"が11ステップ目という意味です)を示し、その右側には3ステップ分のプログラムが表示されています。

プログラムの確認・編集は、WRITEモードでプログラムの新規入力中か"0."表示の状態で[CHECK]キーを押すと可能になります。この表示を"0."に戻す方法ですが英語版のマニュアルを読んでもよくわからず、モードスイッチを"COMP"にして[AC]を押し、再び"WRITE"に切り替えなおす方法しか見つけられませんでした(WRITEモードでは[AC]キーはプログラムのクリア、[C]キーは現在表示中の命令の消去になってしまいます)。ちなみに[CHECK]キーはFX-50xP/60xPなどの[FST]キーと同様の動作をしますが、[BST]に相当する逆送りキーは備わっていないようです。[CHECK]でプログラムを表示している状態で何かキーを押すと次の命令が新しく入力した命令で上書きされます(FX-50xP/60xPなどでは挿入になりますが、201Pでは上書きです)。また[C]を押すと表示中の命令が消去され"00"(FX-50xP/603PなどのNOP命令と同じでしょうか)に置き換わります。つまり、挿入や削除は一切できず、NOP命令を含めた他の命令で上書きするという形でしか編集はできません。下記に実際の操作例を示します。わかりやすいように[1][2][3][4][5][6][7][8][9]というプログラムを入力後、編集を行っている様子です。

[CHECK]で3ステップ目の"3"を呼び出したところ。

[C]キーを押すと"3"が"00"に置き換わるとともにステップが一つ前に戻ります。

再度[CHECK]キーを押して進めると、このように"3"が"00"に置き換わっているのが確認できます。

2つ上の画像のように2ステップ目に戻ったところで"9"を押すと、このように3ステップ目の"00"が"9"で上書きされます。

ステップを進めたところ。"3"が"9"に置き換わっており、その次の"4"以降は変化していません。

とまあ、こんな感じでかなり操作性は悪いです。では、実際のプログラムの基本構成を見てみることにしましょう。fx-201Pのプログラムは、データを入力するENTメッセージ→実際の演算を行う計算式→結果を表示するANSメッセージ、という構造が基本となっています。また、メモリはMANUALモードで利用できる独立メモリ(M)は使用できず、プログラム専用のメモリ0~9と、間接指定用レジスタI、Iによって指定されたメモリIMの12個が利用できます(Iには一桁の整数0~9のみ代入できます)。間接指定の考え方ですが、例えばI=3であれば、IMはメモリ3を指定したのと同じことになります。また、ひとつ独特な点として、計算式のなかでそのまま0~9と表記するとそれはメモリ0~9を指定したことになってしまい、定数値を指定したい場合は[K]に続けて書く必要がありますので注意が必要です。次に、各メッセージの書式を列挙していきます。
1. ENTメッセージ
メモリへの数値入力を求めるENTメッセージは次のように記述します。
[ENT] メモリ番号 [:]
メモリ番号は[:]で区切って複数記述すること可能で、たとえばメモリ1,2,3への数値入力を求める場合は次のようになります。
[ENT] 1 [:] 2 [:] 3 [:]
同じプログラムは、FX-50xP/60xPでは次のようになります。fx-201Pのほうが融通がきかないぶんシンプルになっていますね。(FX-50xP/60xPの[HLT]は単に実行を一時停止するだけの命令ですので、後にはメモリ代入の[Min]命令以外の命令も使用できます)
[HLT] [Min] 1 [HLT] [Min] 2 [HLT] [Min] 3
上記の命令を実際に実行すると下記のような画面になります。左端に"1"と表示され"ENT"インジケータが点灯していますが、これはメモリ1への数値入力を待っているという意味です。ここで数値を入力して[ENT]キーを押すと、入力した値がメモリ1に代入されます。

2. 計算式
基本的な書式は下記のとおりとなります。
メモリ番号 [=] 計算式 [:]
上記の書式を、必要な数だけ記述できます。計算式の書き方は通常の演算とほぼ同じですが、上でも書いた通り単なる数値はメモリ番号として認識され、定数値は[K]に続けて書きます。例えば、メモリ0に半径を入力して円の面積を計算し、メモリ1に結果を代入する場合は下記のようになります。(ちなみに[π]キーはWRITEモードでは定数に前置する[K]キーとして働くため、円周率を計算式中で使用するには手入力するしかなさそうです。)
1 [=] 0 [×] 0 [×] [K] 3.14 [:]
ちなみに同じプログラムは、FX-502P/602Pなどでは次のようになります。fx-201Pのものはこれに比べるとかなりわかりにくいですね。
[MR] 0 [x2] [×] [π] [=] [Min] 1
3. ANSメッセージ
結果を表示するANSメッセージは次のように記述します。
[ANS] メモリ番号 [:]
これもENTメッセージと同様、メモリ番号を[:]で区切って複数指定できます。
以上で簡単なプログラムを作成することは可能になります。例えば、ピタゴラスの定理のサンプルプログラム(昔電器店に展示してあったPC-1211の横に置いてあった説明書にピタゴラスの定理のプログラム例が書いてあったのが印象に残っており、ついつい使ってしまいます)はこんな感じです。乗除優先や()がないので書きにくいですね。これだけで31ステップも使ってしまいます。
ENT 0 : 1 :
2 = 0 × 0 :
3 = 1 × 1 :
4 = 2 + 3 :
4 = 4 √ :
ANS 4 :
実行するにはモードスイッチを"COMPに切り替えて[START]を押します。実際に実行し、0に3, 1に4を入力した場合の答え。左端に"4"と表示され"ANS"インジケータが点灯していますが、これはメモリ4の内容が表示されていることを示しています。この状態で[ANS]キーを押すと、表示を終了(メモリ番号を複数指定している場合は次の結果を表示)して次のプログラムステップへ進みます。

次回は条件判断やジャンプ、サブルーチンについて書いてみたいと思います。またそれを利用して他の電卓で行ったようなベンチマークテストも行う予定です。
fx-201のプログラムを入力するには、モード切替スイッチを"WRITE"に切り替えますが、WRITEモードで[AC]キーを押すとそれまで入力されていたプログラムは消去されますので注意が必要です。表示が"0."の状態でキー入力を行うと、プログラムとして記録されていきますが、プログラム入力中の画面は下記のような感じで左端の3桁が最後に入力したキーのステップ数(右端に表示されている"Γ6"が11ステップ目という意味です)を示し、その右側には3ステップ分のプログラムが表示されています。

プログラムの確認・編集は、WRITEモードでプログラムの新規入力中か"0."表示の状態で[CHECK]キーを押すと可能になります。この表示を"0."に戻す方法ですが英語版のマニュアルを読んでもよくわからず、モードスイッチを"COMP"にして[AC]を押し、再び"WRITE"に切り替えなおす方法しか見つけられませんでした(WRITEモードでは[AC]キーはプログラムのクリア、[C]キーは現在表示中の命令の消去になってしまいます)。ちなみに[CHECK]キーはFX-50xP/60xPなどの[FST]キーと同様の動作をしますが、[BST]に相当する逆送りキーは備わっていないようです。[CHECK]でプログラムを表示している状態で何かキーを押すと次の命令が新しく入力した命令で上書きされます(FX-50xP/60xPなどでは挿入になりますが、201Pでは上書きです)。また[C]を押すと表示中の命令が消去され"00"(FX-50xP/603PなどのNOP命令と同じでしょうか)に置き換わります。つまり、挿入や削除は一切できず、NOP命令を含めた他の命令で上書きするという形でしか編集はできません。下記に実際の操作例を示します。わかりやすいように[1][2][3][4][5][6][7][8][9]というプログラムを入力後、編集を行っている様子です。

[CHECK]で3ステップ目の"3"を呼び出したところ。

[C]キーを押すと"3"が"00"に置き換わるとともにステップが一つ前に戻ります。

再度[CHECK]キーを押して進めると、このように"3"が"00"に置き換わっているのが確認できます。

2つ上の画像のように2ステップ目に戻ったところで"9"を押すと、このように3ステップ目の"00"が"9"で上書きされます。

ステップを進めたところ。"3"が"9"に置き換わっており、その次の"4"以降は変化していません。

とまあ、こんな感じでかなり操作性は悪いです。では、実際のプログラムの基本構成を見てみることにしましょう。fx-201Pのプログラムは、データを入力するENTメッセージ→実際の演算を行う計算式→結果を表示するANSメッセージ、という構造が基本となっています。また、メモリはMANUALモードで利用できる独立メモリ(M)は使用できず、プログラム専用のメモリ0~9と、間接指定用レジスタI、Iによって指定されたメモリIMの12個が利用できます(Iには一桁の整数0~9のみ代入できます)。間接指定の考え方ですが、例えばI=3であれば、IMはメモリ3を指定したのと同じことになります。また、ひとつ独特な点として、計算式のなかでそのまま0~9と表記するとそれはメモリ0~9を指定したことになってしまい、定数値を指定したい場合は[K]に続けて書く必要がありますので注意が必要です。次に、各メッセージの書式を列挙していきます。
1. ENTメッセージ
メモリへの数値入力を求めるENTメッセージは次のように記述します。
[ENT] メモリ番号 [:]
メモリ番号は[:]で区切って複数記述すること可能で、たとえばメモリ1,2,3への数値入力を求める場合は次のようになります。
[ENT] 1 [:] 2 [:] 3 [:]
同じプログラムは、FX-50xP/60xPでは次のようになります。fx-201Pのほうが融通がきかないぶんシンプルになっていますね。(FX-50xP/60xPの[HLT]は単に実行を一時停止するだけの命令ですので、後にはメモリ代入の[Min]命令以外の命令も使用できます)
[HLT] [Min] 1 [HLT] [Min] 2 [HLT] [Min] 3
上記の命令を実際に実行すると下記のような画面になります。左端に"1"と表示され"ENT"インジケータが点灯していますが、これはメモリ1への数値入力を待っているという意味です。ここで数値を入力して[ENT]キーを押すと、入力した値がメモリ1に代入されます。

2. 計算式
基本的な書式は下記のとおりとなります。
メモリ番号 [=] 計算式 [:]
上記の書式を、必要な数だけ記述できます。計算式の書き方は通常の演算とほぼ同じですが、上でも書いた通り単なる数値はメモリ番号として認識され、定数値は[K]に続けて書きます。例えば、メモリ0に半径を入力して円の面積を計算し、メモリ1に結果を代入する場合は下記のようになります。(ちなみに[π]キーはWRITEモードでは定数に前置する[K]キーとして働くため、円周率を計算式中で使用するには手入力するしかなさそうです。)
1 [=] 0 [×] 0 [×] [K] 3.14 [:]
ちなみに同じプログラムは、FX-502P/602Pなどでは次のようになります。fx-201Pのものはこれに比べるとかなりわかりにくいですね。
[MR] 0 [x2] [×] [π] [=] [Min] 1
3. ANSメッセージ
結果を表示するANSメッセージは次のように記述します。
[ANS] メモリ番号 [:]
これもENTメッセージと同様、メモリ番号を[:]で区切って複数指定できます。
以上で簡単なプログラムを作成することは可能になります。例えば、ピタゴラスの定理のサンプルプログラム(昔電器店に展示してあったPC-1211の横に置いてあった説明書にピタゴラスの定理のプログラム例が書いてあったのが印象に残っており、ついつい使ってしまいます)はこんな感じです。乗除優先や()がないので書きにくいですね。これだけで31ステップも使ってしまいます。
ENT 0 : 1 :
2 = 0 × 0 :
3 = 1 × 1 :
4 = 2 + 3 :
4 = 4 √ :
ANS 4 :
実行するにはモードスイッチを"COMPに切り替えて[START]を押します。実際に実行し、0に3, 1に4を入力した場合の答え。左端に"4"と表示され"ANS"インジケータが点灯していますが、これはメモリ4の内容が表示されていることを示しています。この状態で[ANS]キーを押すと、表示を終了(メモリ番号を複数指定している場合は次の結果を表示)して次のプログラムステップへ進みます。

次回は条件判断やジャンプ、サブルーチンについて書いてみたいと思います。またそれを利用して他の電卓で行ったようなベンチマークテストも行う予定です。
- 関連記事
-
- fx-201Pでのプログラミング (2) (2014/09/22)
- fx-201Pでのプログラミング (1) (2014/09/20)
- CASIOの古いプログラム関数電卓 fx-201P (2014/09/12)
スポンサーサイト