Casio Basic入門44
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2015/03/15
2016/12/24 修正
2015/03/15
2016/12/24 修正
4. CasioBasicを使ってみる(続き)
Chapter 8 - 初級
前回: Casio Basic入門43 を見る
◆ Chapter 8 の目標: Basicコマンドを使ってみる
前回作ったプログラム TC6 では、温度入力画面と温度出力画面が異なる画面構成となっています。
例えば、以下のような温度出力画面になっているとします。

ここで、摂氏温度を 20℃ に変更したらどうなるかを見るためには、一旦以下のような入力画面で入力します。

入力を確定すると、以下の出力画面になります。

これでもプログラムとして全く問題ないのですが、出力画面のまま、摂氏表示ののところで、別の値を入力したいと思うわけです。
と言うのも、スマホやパソコンのプログラムではそうなっているので、電卓プログラムでの同様の機能を実現できないだろうか?と言うのが今回のテーマです。
Casio Basic には、位置を指定して、そこで入力させるようなコマンドが用意されていません。そこで、この機能を実現させるために、入力ボックス を作りました。
⇒ fx-5800P用 プログラムライブラリ - 入力ボックス
⇒ グラフ関数電卓用 プログラムライブラリ - 入力ボックス
入力ボックスは、汎用サブルーチンとして作っていて、他のプログラムから呼びだして使うことを前提にしています。従って、Basic コマンドとは少し使い方が異なります。
Basic コマンドの使い方は、
[コマンド] [設定1],[設定2],[設定3], ...
といった使い方になります。
入力ボックスはサブルーチンです。サブルーチンを呼びだす時に色々な設定を一緒に指定することができません。そこで、
[入力ボックスの設定]
Prog "入力ボックス"
[結果の受け取り]
といった書式になります。
今回は、温度換算プログラムで、入力ボックスを使ってみようと思います。
Chapter 8-2
入力ボックスを使ってみる
入力ボックスには、使い勝手を考えて複数のバージョンがあります。
入力する数値の種類 | 応答性が速い バージョン(Ver2.0) | キーリピート抑制した バージョン(Ver2.1) | プログラム名 |
0以上の整数 | (INPI Ver2.0) | INPI Ver2.1 | INPI |
0以上の小数と整数 | INP Ver2.0 | (INP Ver2.1) | INP |
正負の小数と整数 | IN Ver2.0 | (IN Ver2.1) | IN |
入力ボックスには、fx-5800P で使うために、大きく Ver 2.0 と Ver 2.1 の2種類があります。fx-5800P はCasio Basic プログラムの実行速度が比較的遅いので、できるだけキー入力の応答性を高める必要があり、その目的で作ったのがVer 2.0 で、応答性を高めるために、キーを押したままにするとその数字が繰り返し入力される(キーリピートが発生する)仕様になっています。
一方、キーリピートを抑制したものが Ver2.1 です。
Ver 2.0 / Ver 2.1 それぞれについて、入力する数値の種類に応じて3つのバージョン、INPI、INP、IN を用意しています(上の表参照)。
実際に使用してみると、Ver 2.0 のINPI の処理が軽いのでキーリピートが発生しやすいと思います。そこで INPI を使う場合はキーリピートを抑制した Ver 2.1 をお勧めします。
INP と IN については、INPI に比べて相対的に処理が少し重く、キーリピートがあまり問題になりません。むしろキーリピートを抑制すると応答性の悪化を感じるので、Ver 2.0 の利用を勧めます。
上の表で赤文字で示したように、INPI Ver2.1、INP Ver2.0、IN Ver2.0 を使えば、間違いないと思います。なお、今回、温度換算プログラムで利用する場合は、温度値は正負の小数と整数なので IN Ver2.0 を使うことにします。
IN Ver2.0 の準備
fx-5800P は、パソコンとのリンク機能がないので、プログラムをパソコンから転送することが出来ません。最初は面倒でもプログラムをキー入力する必要があります。
fx-5800P に入力ボックス IN Ver 2.0 が保存されていない場合
もし、あなたの fx-5800P に入力ボックスが保存されていない場合は、面倒でも最初はキー入力する必要があります。
入力するソースコードは、fx-5800P プログラムライブラリ - 入力ボックス の プログラム- IN Ver2.0: プログラム名 IN に掲載していますので、間違えないように入力してください。
fx-5800P に入力ボックスが保存されている場合
入力ボックスは、既に Casio Basic入門で扱っているので、既にプログラムが保存されているかも知れません。今回は、正負小数対応の IN を使います。もし、バージョンに応じて異なったファイル名で保存している場合は、今回使う IN Ver2.0 のファイル名を IN にしてください。
先ずは、fx-5800P で入力ボックスを導入して温度換算プログラムを作りますが、後で fx-9860GII へ移植する予定です。そこで、fx-9860GII で入力ボックスを準備する方法も書いておきます。fx-9860GII はPCリンク機能を使ってプログラムを簡単に転送できるので、準備が楽です。
fx-9860GII で入力ボックスを準備する場合
もし、fx-9860GII をお使いの場合は、fx-9860GII 専用入力ボックス Ver 2.1G の G1M ファイルをダウンロードできるようにしています。このファイルを一旦パソコンにダウンロードすれば、専用リンクソフトを使って fx-9860GII へ転送できるので、入力の手間はありません。
⇒ e-Gadget アーカイブ - Archaive ページ - fx-9860GII Casio Basic から IN.G1M をダウンロード
あるいは、
⇒ ここ から IN.G1M をダウンロード
入力ボックス IN 2.0 の使い方
入力ボックスは、汎用サブルーチンです。サブルーチンを呼びだすには、Prog コマンドを使い、呼びだすプログラム名を " " で括ります。正負小数に対応した IN を使うので、
Prog "IN"
と書きます。
ちなみに、Prog の入力は、[SHIFT] [FILE] です。
入力ボックスを呼びだす前に、以下の4つの変数の設定を行います。
・ 入力ボックスを表示する桁(X座標): 変数X
・ 入力ボックスを表示する行(Y座標): 変数Y
・ 入力ボックスの桁数: 変数D
・ 入力ボックスの確定インジケータの種類の設定: 変数E
具体的には、以下の書式で使います。
入力ボックスの書式
△→X:△→Y:△→D:△→E (入力ボックスの設定)
Prog "IN" (入力ボックスの呼出し)
Z→▽ (入力値の受け取り)
※ △は任意の整数、▽は任意の変数、但し使用機種の画面範囲内に収まるように設定する。
参考 fx-5800P: 1≦X≦16、1≦Y≦4、X+D≦16
- X: 入力ボックス表示開始桁
- Y: 入力ボックス表示開始行
- D: 入力ボックス桁数
- E: 入力ボックスインジケータの選択
E=2: 画面右下に <EXE>:ENTER と表示
E=1: 画面右下に ▶E と表示
E=(上記以外): インジケータ非表示
- Z: 入力ボックスで確定した数値が代入される
入力ボックスの動作確認
入力ボックス IN をキー入力した場合は、入力ミスの可能性もあるので、テストプログラムで入力ボックスの動作テストを行います。併せて、入力ボックスの使い方を紹介します。
以下のテストプログラムを使います。
プログラム TEST
0→Z
"1:"
"2:"
While 1
-1→M
Do
Getkey→K
LpWhile K=0
L=35⇒1→M
L=36⇒2→M
Locate 1,4," " (スペース16個)
If M=1:Then
3→X:1→Y:10→D:2→E
Prog "IN"
Else If M=2
Then
3→X:2→Y:6→D:1→E
IfEnd:IfEnd
Locate 1,4,"Z="
Locate 3,4,Z
WhileEnd
==========
<裏技>
代入命令 → を入力する良い方法を紹介します。
4→X を速く入力する方法
[4] キー
[SHIFT] [RCL] キーで → が入力され、この時 アルファベット入力モードになる
[0] キー を押すと、アルファベットモードなので X が入力される
入力ボックスを使う書式では、代入命令を多く使うので、この方法を知っていると入力が楽になります。
ちなみに、Prog の入力は、[SHIFT] [FILE] です。
==========
では、テストプログラム TEST 作成の操作です。
[MODE] [5] (5:PROG] で Program Menu を表示

新たにプログラム TEST を作るので、[1] (1:NEW) を押し、File Name 入力画面へ...

ここで、プログラム名 TEST を入力し、[EXE] で確定。File Mode 設定画面が現れる。

[1] (1:COMP) を選択すると、プログラム入力画面に切り替わります。
ここで、プログラム TEST を入力します。
入力が終わったら、[EXIT] を押して、Program Menu 画面に戻ります。

では、プログラム TEST を実行してみます。
[2] (2:RUN) を押して、Prog List を表示させ、

[EXE] キーで、プログラム TEST を実行します。

[1] キーを押すと、1: の右に10桁の入力ボックスが表示されます。

入力ボックス表示の左端は3桁目(X座標が3)、1行目(Y座標が1)で、桁数は10です。つまり、X に 3、Y に 1 、D に 10 を指定しています。さらに右下に、<EXE>:ENTER と表示されていますが、これがインジケータで、E に 2 を指定するとこの表示になります。
つまり、
3→X:1→Y:10→D:2→E
Prog "IN"
と書いておき、これが実行されると、上のような入力ボックスが表示され、入力モードになります。
ここで、項目1 に、-12.345678 を入力すると、以下のようになります。

右下のインジケータは、入力モードにあることを示し、[EXE] キーを押して確定することを示す操作案内です。
入力モード中に [DEL] キーを押せば入力した数字が削除され、内容を編集できます。
[EXE] で入力確定すると、変数 Z に 確定した値が格納されてから、入力ボックスが終了します。

一番下の行で変数 Z の値を表示しています。
これは、プログラム TEST の以下のコードによるものです。
Locate 1,4,"Z="
Locate 4,4,Z
このように、希望の位置に希望の桁数で入力させることができます。色々な入力を試して、Z の値が正しいことを確認します。
さて、次に項目2に、入力してみます。[2] を押すと、以下のようになります。

入力ボックスの左端は、3桁目(X=3)、2行目(Y=2)で、桁数が6(D=6)です。そして、インジケータは簡略化した表示(E=1)です。
プログラムに書く場合は、以下のようにします。
3→X:2→Y:6→D:1→E
Prog "IN"
ここで、-9.876 と入力すると、

正しい位置に入力中の内容が表示されています。[DEL] で削除できて、入力内容の編集ができます。
右下のインジケータ ▶E は、[EXE] で確定、との操作方法を示しています。
[EXE] で確定すると、変数 Z に入力値が代入され、入力ボックスが終了します。

Locate 1,4,"Z="
Loxate 3,4,Z
によって、4行目に、Z の値を表示しています。
では、ここで [1] を押して、再び入力ボックスを表示させ、

このまま、[EXE] を押す、つまり何も入力しないで確定すると、変数 Z には 0 が代入され、入力ボックスが終了するので、

このように表示されます。
テスト用プログラムをもう一度掲載しますが、赤文字で示した部分、つまり入力ボックスの桁数とインジケータの種類を変更してみて、色々と試してみてください。
プログラム TEST
0→Z
"1:"
"2:"
While 1
-1→M
Do
Getkey→K
LpWhile K=0
L=35⇒1→M
L=36⇒2→M
Locate 1,4," " (スペース16個)
If M=1:Then
3→X:1→Y:10→D:2→E
Prog "IN"
Else If M=2
Then
3→X:2→Y:6→D:1→E
Prog "IN" [2016/12/24] 追加修正
IfEnd:IfEnd
Locate 1,4,"Z="
Locate 3,4,Z
WhileEnd
今回は、入力ボックスを使う準備と、使い方を紹介しました。
次回は、温度換算プログラムに入力ボックスを導入してゆきます。
つづく...
⇒ Casio Basic入門45 / 目次
応援クリックをお願いします。励みになるので...