Casio Basic入門44

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2015/03/15
2016/12/24 修正

 4. CasioBasicを使ってみる(続き)

Chapter 8 - 初級

前回: Casio Basic入門43 を見る


◆ Chapter 8 の目標: Basicコマンドを使ってみる

前回作ったプログラム TC6 では、温度入力画面と温度出力画面が異なる画面構成となっています。

例えば、以下のような温度出力画面になっているとします。

TC5 6 

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

TC6 4 

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

TC6 5 

これでもプログラムとして全く問題ないのですが、出力画面のまま、摂氏表示ののところで、別の値を入力したいと思うわけです。

と言うのも、スマホやパソコンのプログラムではそうなっているので、電卓プログラムでの同様の機能を実現できないだろうか?と言うのが今回のテーマです。



Casio Basic には、位置を指定して、そこで入力させるようなコマンドが用意されていません。そこで、この機能を実現させるために、入力ボックス を作りました。

 ⇒ fx-5800P プログラムライブラリ - 入力ボックス

 ⇒ fx-9860GII プログラムライブラリ - 入力ボックス

入力ボックスは、汎用サブルーチンとして作っていて、他のプログラムから呼びだして使うことを前提にしています。従って、Basic コマンドとは少し使い方が異なります。

Basic コマンドの使い方は、

[コマンド] [設定1],[設定2],[設定3], ...

といった使い方になります。

入力ボックスはサブルーチンです。サブルーチンを呼びだす時に色々な設定を一緒に指定することができません。そこで、

[入力ボックスの設定]
Prog "入力ボックス"
[結果の受け取り]


といった書式になります。

今回は、温度換算プログラムで、入力ボックスを使ってみようと思います。



Chapter 8-2
入力ボックスを使ってみる

入力ボックスには、使い勝手を考えて複数のバージョンがあります。

入力する数値の種類応答性が速い
バージョン(Ver2.0)
キーリピート抑制が
バージョン(Ver2.1)
プログラム名
0以上の整数(INPI Ver2.0)INPI Ver2.1INPI
0以上の小数と政数INP Ver2.0(INP Ver2.1)INP
正負の小数と整数IN Ver2.0(IN Ver2.1)IN

入力ボックスには、fx-5800P で使うために、大きく Ver 2.0Ver 2.1 の2種類があります。fx-5800P はCasio Basic プログラムの実行速度が比較的遅いので、できるだけキー入力の応答性を高める必要があり、その目的で作ったのがVer 2.0 で、応答性を高めるために、キーを押したままにするとその数字が繰り返し入力される(キーリピートが発生する)仕様になっています。

一方、キーリピートを抑制したものが Ver2.1 です。

Ver 2.0 / Ver 2.1 それぞれについて、入力する数値の種類に応じて3つのバージョン、INPI、INP、IN を用意しています(上の表参照)。

実際に使用してみると、Ver 2.0INPI の処理が軽いのでキーリピートが発生しやすいと思います。そこで INPI を使う場合はキーリピートを抑制した Ver 2.1 をお勧めします。

INPIN については、INPI に比べて相対的に処理が少し重く、キーリピートがあまり問題になりません。むしろキーリピートを抑制すると応答性の悪化を感じるので、Ver 2.0 の利用を勧めます。

上の表で赤文字で示したように、INPI Ver2.1INP Ver2.0IN 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.1GG1M ファイルをダウンロードできるようにしています。このファイルを一旦パソコンにダウンロードすれば、専用リンクソフトを使って 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 を表示

IB-ProgramMenu 

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

IB-FileName 

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

IB-FileMode 

[1] (1:COMP) を選択すると、プログラム入力画面に切り替わります。

ここで、プログラム TEST を入力します。

入力が終わったら、[EXIT] を押して、Program Menu 画面に戻ります。

IB-ProgramMenu 

では、プログラム TEST を実行してみます。

[2] (2:RUN) を押して、Prog List を表示させ、

IB-ProgList  

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

TEST-1 

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

TEST-2 

入力ボックス表示の左端は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 を入力すると、以下のようになります。

TEST-3 

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

[EXE] で入力確定すると、変数 Z に 確定した値が格納されてから、入力ボックスが終了します。

TEST-4 

一番下の行で変数 Z の値を表示しています。
これは、プログラム TEST の以下のコードによるものです。

Locate 1,4,"Z="
Locate 4,4,Z


このように、希望の位置に希望の桁数で入力させることができます。色々な入力を試して、Z の値が正しいことを確認します。


さて、次に項目2に、入力してみます。[2] を押すと、以下のようになります。

TEST-5 

入力ボックスの左端は、3桁目(X=3)、2行目(Y=2)で、桁数が6(D=6)です。そして、インジケータは簡略化した表示(E=1)です。

プログラムに書く場合は、以下のようにします。

3→X:2→Y:6→D:1→E
Prog "IN"


ここで、-9.876 と入力すると、

TEST-6 

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

[EXE] で確定すると、変数 Z に入力値が代入され、入力ボックスが終了します。

TEST-7 

Locate 1,4,"Z="
Loxate 3,4,Z


によって、4行目に、Z の値を表示しています。


では、ここで [1] を押して、再び入力ボックスを表示させ、

TEST-8 

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

TEST-9 

このように表示されます。

テスト用プログラムをもう一度掲載しますが、赤文字で示した部分、つまり入力ボックスの桁数とインジケータの種類を変更してみて、色々と試してみてください。

プログラム 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 / 目次




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ


 


keywords: fx-5800PCasioBasic、入力ボックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

Re: プログラムTEST

Mog様

間違いのご指摘、本当にありがとうございます。

> プログラムTESTですが、もしかしたら間違いがあるかもしれません。
> 下から4行目と5行目の間にProg "IN"が必要かと思います。

おっしゃる通り、肝心な1行が抜けておりましたので、修正致しました。

こちらのうっかりミスで、無駄な時間を取らせてしまったと思います。お詫び致します。

とても助かりました。
繰り返しになりますが、ありがとうございます。


併せて、プログラムライブラリ - 入力ボックス の記事もより分かり易くしたいと思い、追記修正しました。

http://egadget.blog.fc2.com/blog-entry-134.html

http://egadget.blog.fc2.com/blog-entry-173.html



プログラムTEST

Casio Basicの勉強に大変参考にさせてもらっています。記事の作成、公開、本当にありがとうございます。

プログラムTESTですが、もしかしたら間違いがあるかもしれません。
下から4行目と5行目の間にProg "IN"が必要かと思います。
最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR