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

プログラムライブラリ
<目次>

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

最終更新:
2018/10/28

入力ボックス 2.0 / 2.1
INPI、INP、IN 2.0/2.1 for fx-5800P - 汎用サブルーチン

CcLinkerでfx5800Pに転送可能な CCLファイルがダウンロード可能に [2018/10/28]



著作権者

やす (Krtyski)
[当ブログ管理人]



対応機種

Casio fx-5800P 専用
Casio fx-9860GII、fx-CG20、fx-CG50 用は こちら



プログラムの説明

INPI / INP / IN は、fx-5800P Casio Basic プログラミングで、好みの位置に好みの桁数で数値を入力させる機能を実装する、汎用サブルーチンです。

画面構成を崩さずに数値を入力させるプログラムを簡単に作れるので、換算プログラムなどに最適です。

Casio Basic の入力命令 ? は、入力位置が左端で、入力結果は改行されて右端に表示され、入力するたびに画面がスクロールするので、入力位置や入力結果の表示位置を選べません。もう1つの入力コマンド Getkey はキー1つが押されたことを検出するものなので、そのままでは複数桁の入力や編集に使えません。

そこで画面設計をしたプログラムで使うため、Windows などの Edit Box に近い入力機能をCasio Basic に提供するのが入力ボックスです。

以下の Ver 2.02.1 を用意したので、好みと必要性に応じて使い分けてください。
・Ver 2.0
キーをゆっくりと入力すると、キーリピートすることがありますが、Ver 2.1 よりも応答性が良いです。
・Ver 2.1
キーリピートを抑制していますので、ゆっくりキー入力してもキーリピートが発生しません。


それぞれのバージョンごとに、以下の3種類の入力ボックスを用意しました。

1. INPI 2.0 / 2,1
0以上の整数入力のみに対応。0以上の整数入力のみを行わせたいプログラムで使うことを想定していて、負数や小数入力のエラーチェックが不要になる。

2. INP 2.0 / 2.1
0以上の整数/小数入力のみに対応。0と正の小数のみの入力を行わせたいプログラムで使うことを想定していて、負数入力のエラーチェックが不要になる。

3. IN 2.0 / 2.1 
正負小数/整数の入力に対応、最も汎用性のある入力ボックス。

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



入力ボックスの概要

Basic コマンドの使い方は、

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

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

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

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


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

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

入力する数値の種類応答性が速い
バージョン(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 を使えば、間違いないと思います。



プログラムファイルのダウンロード

CcLinker を使えば、プログラムファイルを以下からダウンロードして fx-5800P に転送してすぐに使えます。
 INPI Ver 2.1 / INP Ver 2.0 / IN Ver 2.0 / INBOX_TEST
 fx-5800P 用入力ボックス、プログラムファイルのダウンロード
 ※ CcLinker の紹介 



プログラム作成について

INPI、INP、IN 2.0 / 2.1 の詳しい説明は、Casio Basic入門32 ~ 36 を参照。
 ・ Casio Basic入門32  (入力ボックス応答性向上)
 ・ Casio basic入門33  (INPI 2.0 作成)
 ・ Casio Basic入門34  (INP 2.0 作成)
 ・ Casio Basic入門35  (IN 2.0 作成)
 ・ Casio Basic入門36  (キーリピート抑制)



プログラムの使い方

具体的な使い方については、Casio Basic入門44 、Casio Basic入門51 を参照。

メインルーチンから以下の書式で呼び出します。

→X:→Y:→D:→E
Prog "INPI"
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: 入力ボックスで確定した数値が代入される

入力ボックス内部では、上記5つの変数以外に、CIF (F は、INPIN の場合のみ)、配列変数を用いています。これらの変数は、入力ボックスを呼び出すたびに格納されている数値が変更されます。メインルーチンでこれらと同じ変数を使う場合は、入力ボックスを呼び出すたびに変更されても良い変数として使ってください(Casio Basicでは変数が全てのプログラムで共用されるため)。特に配列変数は、入力ボックス内で領域確保を行い、メインルーチンに戻る前に領域解放を行いますので、それを念頭に置いて使ってください。



使用例

呼び出しルーチンのプログラム例を掲載します。
・ 予約変数は S, T, U, V
これを元に色々なプログラムを作ってみると、楽かも知れません。

0→S:0→T:0→U:0→V  [予約変数の初期化]

Locate 1,1,"1:"      [初期画面表示]
Locate 1,2,"2:"
Locate 1,3,"3:"
Locate 1,4,"4:"

While 1            [無限ループ、[AC] キーでプログラム終了]

-1→M             [メニュー選択] 
Do:Getkey→K
LpWhile K=0
K=35⇒1→M
K=36⇒2→M
K=37⇒3→M
K=21⇒4→M

Locate 1,4,"        " (スペース16個)

If M=1:Then        [INPIを使った入力処理]
3→X:1→Y:8→D:2→E
Prog "INPI":Z→S
Else If M=2         [INPを使った入力処理]
Then
3→X:2→Y:6→D:2→E
Prog "INP":Z→T
Else If M=3         [INを使った入力処理]
Then
3→X:3→Y:4→D:1→E
Prog "INPI":Z→U
Else If M=4
Then
3→X:4→Y:2→D:1→E
Prog "INPI":Z→V
IfEnd:IfEnd
IfEnd:IfEnd

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

WhileEnd


プログラム例

Birthday_2 
INPI 使用 - 0と自然数入力 - 年齢換算プログラム


YearConv_5_convert_20140312192414.jpg
 
INPI 使用 - 0と自然数入力 - 和暦西暦換算プログラム


PressureConv_2
 
INP 使用 - 0と正野小数入力 - 圧力単位換算プログラム


3-JST_inputBox 
INPI 使用 - 0と自然数入力 - 世界時間換算プログラム


TEMP_CONV_P3 
IN 使用 - 正負小数入力 - 温度単位換算プログラム



入力ボックス 2.0

Ver 1.0Ver 1.2 よりも大幅に応答性を向上させ、速いキー入力でも取りこぼしがないと思います。
CcLinkerで転送できる ccl ファイルのダウンロード

プログラム - INPI Ver 2.0: プログラム名 INPI

INPIv20src_fx-5800P 

注1) 下から10行目の Locate X+C+I-1,Y, " " の " " は、スペース1個
注2) 下から7行目の Locate 6,4, "           " の " " は、スペース11個
注3) 下から4行目の Locate 15,4,"  " の " " は、スペース2個


プログラム - INP Ver 2.0: プログラム名 INP

INPv20src_fx-5800P 

注1) 下から10行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から7行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個


プログラム - IN Ver 2.0: プログラム名 IN

INv20src1_fx-5800P 

注1) 下から11行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から7行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個



入力ボックス 2.1

Ver 2.0 にキーリピート抑制機能を追加しています。但し、INP と IN については、僅かですが応答性の低下が体感されます。
CcLinker で転送できる cclファイルのダウンロード

プログラム - INPI Ver 2.1: プログラム名 INPI

INPI Ver2.1 for fx-5800P 

注1) 下から10行目の Locate X+C+I-1,Y, " " の " " は、スペース1個
注2) 下から7行目の Locate 6,4, "           " の " " は、スペース11個
注3) 下から4行目の Locate 15,4,"  " の " " は、スペース2個


プログラム - INP Ver 2.1: プログラム名 INP

INP Ver 2.1 for fx-5800P 

注1) 下から10行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から7行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個


プログラム - IN Ver 2.1: プログラム名 IN

IN Ver 2.1 for fx-5800P  高機能テキストエディタ

注1) 下から11行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から7行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-5800PCasioBasicプログラムライブラリプログラム関数電卓

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


関連記事

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

コメントの投稿

非公開コメント

最新記事
検索フォーム
最新コメント
カテゴリ
C# (3)
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

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


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

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR