プログラムライブラリ - 入力ボックス 2.1G

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

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

2015/01/23
2015/08/05 記述修正
2016/12/24 追記修正

入力ボックス 2.1G - fx-9860GII & fx-CG20 専用
INPI、INP、IN 2.1G - 汎用サブルーチン

※  g1mファイルのダウンロード・リンクを追加 [2015/02/28]

※ g3mファイルのダウンロード・リンクを追加 [2016/04/17]



対応機種

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


プログラムの説明

INPI / INP / IN 2.1G (fx-9860GII & fx-CG20 専用) は、fx-9860GII や fx-CG20 Casio Basic プログラミングで、好みの位置に好みの桁数で数値を入力させる機能を実装する、汎用サブルーチンです。

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

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

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

以下の3種類の入力ボックスを用意しました。

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

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

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


INPI、INP、IN 2.1G (fx-9860GII & fx-CG20 専用) の詳しい説明は、Casio Basic入門37 を参照。



入力ボックスの概要

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 を使えば、間違いないと思います。



プログラムの使い方

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

→X:→Y:→D:→E
Prog "INPI"
Z→■


□ は任意の数、■ は任意の変数、但し使用機種の画面範囲内に収まるように設定する。
  参考 fx-9860GII、fx-CG20: 1≦X≦21、1≦Y≦7、X+D≦21

- X: 入力ボックス表示開始桁
- Y: 入力ボックス表示開始行
- D: 入力ボックス桁数
- E: 入力ボックスインジケータの選択
   E=2: 画面右下に <EXE>:ENTER と表示
   E=1: 画面右下に ▶E と表示
   E=(上記以外): インジケータ非表示
- Z: 入力ボックスで確定した数値が代入される

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


使用例

呼び出しルーチンのプログラム例を掲載します。
・ 予約変数は 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

※ 仕様例プログラムファイル (INTEST) のダウンロード
 - input_test.g1m (fx-9860GII用)
 - input_Test.g3m (fx-CG20 用) 


プログラムファイル

ファイル一式のダウンロード

fx-9860GII用プログラムファイル一式 (ZIPファイル)
  INPI.g1m, INP.g1m, IN.g1m, INTEST.g1m を含む

fx-CG20用プログラムファイル一式 (ZIPファイル)
  INPI.g3m, INP.g3m, IN.g3m, INTEST.g3m を含む


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

プログラムファイル INPI.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル INPI.g3m (fx-CG20用)のダウンロード [2016/04/17 追記]
fx-9860GIIへの転送方法の簡単な説明

INPI Ver2.1G for fx-9860GII 

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


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

プログラムファイル INP.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル INP.g3m (fx-CG20用)のダウンロード [2016/04/17 追記]

 INP Ver2.1G for fx-9860GII 

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


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

プログラムファイル IN.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル IN.g3m (fx-CG20用)のダウンロード [2016/04/17 追記]

IN Ver2.1G for fx-9860GII 

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





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



  



keywords: fx-9860GIICasioBasic、プログラムライブラリ入力ボックスプログラム関数電卓

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


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

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

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

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

最終更新:
2016/12/24

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


対応機種

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


プログラムの説明

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 を使えば、間違いないと思います。


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 よりも大幅に応答性を向上させ、速いキー入力でも取りこぼしがないと思います。


プログラム - 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 については、僅かですが応答性の低下が体感されます。

プログラム - 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プログラムライブラリプログラム関数電卓

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


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

fx-5800P プログラムライブラリ - Time Zone

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

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

最終更新:
2016/12/05

Time Zone (2017年版)

※ 2017年のヨーロッパ・北米夏時間に対応 [2016/12/03]

対応機種

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


プログラムの説明

Time Zone は、日本、ヨーロッパ、北米での同じ時間を表示します。その際、タイムゾーンや夏時間を考慮した時間を計算します。

具体的には、3カ所のうち、どこか一カ所の時間を入力すると、時差を計算して他の二カ所の時間を表示するプログラムです。

例えば、日本、ドイツ、モントリオールの3カ所から接続して電話会議を行う時に、それぞれが夜中にならないように時間を決める時などに役立ちます。

以下のタイムゾーンや夏時間の設定が行えます。

- 日本
 JST: 日本標準時間

- ヨーロッパ
 WET: 西ヨーロッパ標準時間
 CET: 中央ヨーロッパ標準時間
 EET: 東ヨーロッパ標準時間
 FET: 極東ヨーロッパ時間

 WEST: 西ヨーロッパ夏時間
 CEST: 中央ヨーロッパ夏時間
 EEST: 東ヨーロッパ夏時間
 FEST: 極東ヨーロッパ夏時間
EU-TZ 

- 北米(アメリカ、カナダ)
 PST: 太平洋標準時間
 MST: 山岳部標準時間
 CST: 中部標準時間
 EST: 東部標準時間

 PDT: 太平洋夏時間
 MDT: 山岳部夏時間
 CDT: 中部夏時間
 EDT: 東部夏時間

US-TZ 



プログラムの使い方

0:JST - 日本時間 の入力と表示
       [0] キー: 日本時間入力

1:CET - ヨーロッパ時間の入力と表示
       [1] キー:    ヨーロッパ時間入力
       [1] キー長押し: ヨーロッパ内のタイムゾーン設定
       [3] キー:    ヨーロッパの夏時間ON/OFF
       [3] キー長押し: 夏時間の期間を表示
     
2:EDT
- 北米時間の入力と表示
       [2] キー:    北米時間入力
       [2] キー長押し: 北米内のタイムゾーン設定
       [4] キー:    北米の夏時間ON/OFF 
       [4] キー長押し: 夏時間の時間を表示

[3] キー、[4] キー長押しで表示される夏時間について:
ヨーロッパ北米とも、夏時間の開始と終了は、午前2時とされています。本プログラムでは、夏時間終了日を実際の設定日の前日を表示するようにしています。終了設定日の午前0時から午前2時までの時間帯は、本来まだ夏時間のままですが、寝静まっている時間帯なので無視しています。現実的には問題ないと思いますが、留意してください。



プログラムの構成

メインプログラム: TIMEZONE
サブルーチン: TZCTZDTZMTZS
入力ボックス: INPI



ソースコード - TIMEZONE

※ fx-5800P で動作します。
fx-5800P 用入力ボックス INPI が必要です。

ソースコード(pdfファイル)のダウンロード

jpegファイル(1453 x 1523 ピクセル) を縮小表示しています 
TimeZone_SrcCode2017




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

人気ブログランキングへ


FC2ブログランキングへ


 


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

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


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

プログラムライブラリ - TimeZone

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

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

最終更新:
2016/12/05

Time Zone (2017年版)

※ 2017年のヨーロッパ・北米夏時間に対応 [2016/12/03]



対応機種

Casio fx-9860GII - 純正Casio Basic および C.Basic で動作
Casio fx-CG20 - 純正 Casio Basic

Casio fx-5800P 用は こちら



プログラムの説明

TimeZone は、日本、ヨーロッパ、北米での同じ時間を表示します。その際、タイムゾーンや夏時間を考慮した時間を計算します。

具体的には、3カ所のうち、どこか一カ所の時間を入力すると、時差を計算して他の二カ所の時間を表示するプログラムです。

例えば、日本、ドイツ、モントリオールの3カ所から接続して電話会議を行う時に、それぞれが夜中にならないように時間を決める時などに役立ちます。

本プログラムでは、以下のタイムゾーンや夏時間の設定が行えます。

- 日本
 JST: 日本標準時間

- ヨーロッパ
 WET: 西ヨーロッパ標準時間
 CET: 中央ヨーロッパ標準時間
 EET: 東ヨーロッパ標準時間
 FET: 極東ヨーロッパ時間

 WEST: 西ヨーロッパ夏時間
 CEST: 中央ヨーロッパ夏時間
 EEST: 東ヨーロッパ夏時間
 FEST: 極東ヨーロッパ夏時間
EU-TZ 

- 北米(アメリカ、カナダ)
 PST: 太平洋標準時間
 MST: 山岳部標準時間
 CST: 中部標準時間
 EST: 東部標準時間

 PDT: 太平洋夏時間
 MDT: 山岳部夏時間
 CDT: 中部夏時間
 EDT: 東部夏時間

US-TZ 



プログラムの使い方

0:JST - 
日本時間 の入力と表示
       [0] キー: 日本時間入力

1:CET - ヨーロッパ時間の入力と表示
       [1] キー:    ヨーロッパ時間入力
       [1] キー長押し: ヨーロッパ内のタイムゾーン設定
       [3] キー:    ヨーロッパの夏時間ON/OFF
       [3] キー長押し: 夏時間の期間を表示
     
2:EDT
- 北米時間の入力と表示
       [2] キー:    北米時間入力
       [2] キー長押し: 北米内のタイムゾーン設定
       [4] キー:    北米の夏時間ON/OFF 
       [4] キー長押し: 夏時間の時間を表示

[3] キー、[4] キー長押しで表示される夏時間について:
ヨーロッパ北米とも、夏時間の開始と終了は、午前2時とされています。本プログラムでは、夏時間終了日を実際の設定日の前日を表示するようにしています。終了設定日の午前0時から午前2時までの時間帯は、本来まだ夏時間のままですが、寝静まっている時間帯なので無視しています。現実的には問題ないと思いますが、留意してください。



プログラムの構成

メインプログラム: TIMEZONE
サブルーチン: TZCTZDTZMTZS、TZL
入力ボックス: INPI



プログラムファイル & ソースコード - TIMEZONE

※ fx-9860GII と fx-CG20 で動作します。

プログラムファイルとソースコードのダウンロード
fx-9860GII と fx-CG20 専用入力ボックス INPI が必要です。

  • TIMEZONE には、入力ボックス INPI が必要です(ダウンロードファイルに含まれています)。
  • 同梱されている g1m ファイルは fx-9860GII 向けですが、変更せずそのまま fx-CG20 に転送すると正常動作します。但し fx-CG20 に転送後 fx-CG20用の g3m ファイルに変換されます。
  • ダウンロードファイルに含まれる Text_files フォルダ内に、ソースコード(テキストファイル)があります。これらテキストファイルは C.Basic で g1m ファイルから変換したものです。
  • サブルーチン TZL は、C.Basic で使用するものです。但し純正Casio Basic では実行が無視されるので転送しても問題ありません。
  • メインルーチン TIMEZONE の1行目の 300→L はキー長押し時間を決める。長押しと認識するまでの時間を短くするにはこの数値を通作する。長くするには数値を大きくする。
  • C.Basic では 現在設定されているオーバークロックの速度に対応して サブルーチン TZL で長押し時間を自動調整しているので、1行目での長押し時間の設定は動作に影響しない。
  • ヨーロッパと北米の夏時間期間表示は、サブルーチン TZS にある。2017年の夏時間に対応した変更を行っている。 






    人気ブログランキングへ


    FC2ブログランキングへ


     


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

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


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

プログラムライブラリ - 目次 -

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
最終: 2016/12/04


fx-5800P に付属している取扱説明書には、関数電卓機能の一通りの説明はあるが、プログラミングに関する説明は必要最低限の記述しかなく、プログラム例は皆無です。

そこで、fx-5800P コマンドリファレンスCasio Basic 入門 とともに、fx-5800P プラグラムライブラリを公開してゆきます。

本ブログで掲載している種々のプログラムを、まだ全て収録してはいませんが、徐々に拡充してゆきます。

ブログ内マップ



1. ハードウェア関係

  ⇒ キーコード取得


2. 数学

  ⇒ ピタゴラス数

  ⇒ 素因数分解

  ⇒ モンテカルロ法による円周率の計算


3. 科学技術

  ⇒ 圧力換算


4. 役立ちプログラム

  ⇒ 世界の時差換算 - TIMEZONE (fx-5800P 用)

  ⇒ 世界の時座換算 - TIMEZONE (fx-9860GII 用)


5. ゲーム

  ⇒ もぐら叩き

  ⇒ Hit & Blow

  ⇒ 反射ゲーム


6. サブルーチン・ロジック

  ⇒ 入力ボックス 2.0 / 2.1 - fx-5800P専用

  ⇒入力ボックス 2.1G - fx-9860GII & fx-CG20専用

  ⇒ キー長押しによる機能呼び出し

  ⇒ 桁数の求め方







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


  

カシオプログラム関数電卓 FX-5800P-Nカシオプログラム関数電卓 FX-5800P-N
(2006/09/22)
CASIO(カシオ)

商品詳細を見る



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

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

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

プログラムライブラリ - Hit & Blow

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

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

最終更新:
2016/12/04

Hit & Blow



対応機種

Casio fx-5800P、fx-9860GII、fx-CG20


プログラムの説明

Hit & Blow  は、古典的な数当てゲームで、Casio FX-502P / 6602P / 603P のプログラムライブラリに収録されていたものです。フジテレビ系列で放映されていたゲームバラエティー 「戦略的推理ゲーム Numer0n」 が Hit & Blow をベースにしたものです。

0 ~ 9 までの数字から重複無しに選んで所定の桁数にしたものを当てるゲームです。本プログラムでは、桁数を3桁、4桁、5桁のいすれかを初に決めます(デフォルトで3桁です)。

乱数機能を用いてプログラムが出題した数をユーザーが当ててゆきます。
ユーザーが推理した数を入力すると、数字と桁の両方が合っていると HIT 、数字は合っているが桁が合っていないと BLOW とプログラムが判定します。HIT が1個、BLOW が2個の場合は、1HIT、2 BLOW とプログラムが表示します。完全に正解すると 3 HIT、0 BLOW と表示します。

プログラムが返す HIT 数と BLOW 数を手がかりにして、出来るだけ早く正解を導くゲームです。


ゲーム開始画面
1.ゲーム開始時に、数字の桁数を、3、4、5から選択・設定する
2.開始画面には、以下を表示する
  ・HIT And BLOW のゲームタイトル
  ・3~5の桁数の選択機能
  ・
<EXE>:START
  ・< ? >:ANSWER (fx-5800P のみでこの秘密のキー入力が有効)
  ・<(-)>:Answer (fx-9860GII、fx-CG20 の場合)
    ※ これは fx-5800P のみで有効です。開始画面で、秘密のキー(キーの同時押し)で正解を表示する
     詳しくは fx-5800P:同時にキーを押してみる を参照

hb_Start4hb_Start5hb_Start3 
※ 桁数の選定は、矢印キー [▲] と [▼] で3~5が順次変化するようにする。
※ fx-5800P の16桁X4桁画面をフルに活かした画面設計にする。

ゲーム進行画面
 3.電卓が出題する正解数を、1HIT、2BLOW と言ったヒントを元に当ててゆく
 4.正解数は、各桁0~9各の異なる数字とし、一番左の桁は0であっても良い
 5.入力する数字の桁に同じ数字があると、エラーを表示して正しい入力を促す
 6.入力する数字の桁が、最初に指定した桁より多いと、エラーを表示して正しい入力を促す
 7.何回目の回答かを、表示する
 8.10回以内に正解すると、EXCELLENT と表示する
 9.10回を超えても正解しない時は、QUIT? と表示する。
10.10回を超えて正解すると、GOOD と表示する。

hb_3d_3hb_4d_4hb_3d_bingo  

ゲーム終了画面
11.正解すると、終了画面で YOU WIN IN xx TRIES と正解するまでの回答数を表示する
12.正解できず、QUIT? の表示で[DEL]キーを押すと、終了画面で正解を示す
13.正解できずに終了すると、終了画面で YOU GAVE UP   ANSWER = xxxxx と表示する
14.終了画面では、
:QUIT、<0>:TRY AGAIN とメニューも併せて表示する

hb_FInish_win 


プログラムの構成

メインプログラム: HITBLOW
サブルーチン: S1HB345S2HB345S3HB345S3HB345



ソースコード & プログラムファイル

fx-5800P 用ソースコード

※ 
ソースコード(pdfファイル)のダウンロード

jpegファイル(1453 x 981 ピクセル) を縮小表示しています 
HitBlow_5800P_Src




fx-9860GII 用プログラムファイルとソースコード

プログラムファイルとソースコードのダウンロード
  • ダインロードファイル (HitBlow_g1m_files.zip) を解凍すると、プログラムファイル (g1m ファイル) 5個、Test_files フォルダ、PDF_file フォルダが得られます。
  • ダウンロードファイル (HitBlow_g1m_files.zip) に含まれるプログラムファイル(HITBLOW.g1m、S1HB345.g1m、S2HB345.g1m、S3HB345.g1m。S4HB345.g1m)全てを fx-9860GII に転送(FA-124A、PCリンクソフト使用)して、メインプログラム HITBLOW を起動してください。
  • ダウロードしたプログラムファイル (g1m ファイル) は、純正 Casio Basic および C.Basic で動作します。
  • fx-9860GII の Main (メイン)メモリに、PCリンクソフト FA-124A を使って転送すると、純正 Casio Basic で動作します。
  • fx-9860GII の Storage (ストレージ)メモリに、PCリンクソフト FA-124A を使って転送すると、C.Basic で動作します。
  • ダウンロードファイル (HitBlow_g1m_files.zip) に含まれる Text_files フォルダにあるテキストファイルは、C.Basic で g1m ファイルからテキストファイルに変換したもので、これらテキストファイルを fx-9860GII の Storage (ストレージ)メモリに転送すると、C.Basic でそのまま実行可能です。これらテキストファイルはPCでも見られますが、一部の特殊コードの表示が fx-9860GII 上の本来の表示と異なります。但し、プログラム全体をPCで確認するのに役立ちます。
  • ダウンロードファイル (HitBlow_g1m_files.zip) に含まれる PDF_file フォルダにあるPDFファイルは、fx-9860GII でプログラムコードを入力する際に役立ちます。またPDF ファイルは、fx-9860GII の編集画面の表示にできるだけ近づけた表示になっています。
※ 本プログラムは、fx-5800P 用に作成したものを、fx-9860GII 用に移植したものです。移植の際には旧来の命令の動作が fx-5800P と fx-9860GII では異なるため、同等に動作しない旧来の命令を Casio Basic の Basic コマンドに置き換えて動作の互換性を確保しています。具体的には、それぞれのソースコードを示した PDF ファイルを見比べて参考にしてください。併せて fx-9860GII の広い画面に併せて、画面表示を追加しています。



fx-CG20 用プログラムファイルととソースコード

fx-9860GII 用のプログラムファイルがそのまま使用できます。ダウンドーロした5個の g1m ファイルを fx-CG20 へ転送するだけで、使用できます。なお fx-CG20 に g1m ファイルを転送すると、fx-CG20 専用の g3m ファイルに変換されます。






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

人気ブログランキングへ


FC2ブログランキングへ


 


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

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


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

プログラムライブラリ - キーコード取得

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

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2014/12/19 更新: fx-9860GII 専用プログラム追加
2015/02/28 更新: g1mファイルのダウンロード追加
2016/04/26 更新: g3mファイルのダウンロード追加


キーコード取得: GET KEYCODE / KEYCODE

※ fx-9860GII 用 g1mファイルのダウンロード・リンク追加 [2015/02/28]
※ fx-CG20 用 g3mファイルのダウンロード・リンク追加 [2016/04/26]

対応機種

Casio fx-5800P、fx-9860GII、fx-CG20 (そしておそらく fx-FD10 Proも対応すると思われます)

GET KEYCODE は、fx-5800P、fx-9860GII および fx-CG20 で100%互換性があります。fx-FD10 Pro でも動作すると思われます。

KEYCODE は、fx-9860GII 専用プログラムで、C言語用 Casio SDK で使う Bkey_GetKeyWait( ) 関数の code1 と code2 を併せて表示する機能を追加したもの。fx-9860GII の広い画面に合わせて表示も変更しています。fx-CG20 へも100%互換で移植できます。


プログラム GET KEYCODE の説明

fx-5800P や fx-9860GII (および fx-CG20/10、fx-FD10 Pro など)搭載の Casio Basic には、どのキーが押されたかを知るための Getkey コマンドが用意されています。数字以外のキーが押されたことも分かるので、プログラミングの幅が広がります。Casio Basic を優れたものにしている1つが Getkey です。

Getkey コマンドを使えば、[AC] キーを除く全てのキーに対して個別に割り当てられたキーコードが得られます。

このキーコードは取扱説明書に記載されていますが、手元に取扱説明書が無い場合は、すぐにキーコードを調べられる本プログラムが役立ちます。

本プログラム作成方法の詳細については、Casio Basic 入門3 ~ 8 を参照。

 ・ Casio Basic入門3


プログラムの使い方

プログラムを起動すると、キー入力待ちになります。ここで、[AC] キーを除くいずれかのキーを押すと、対応するキーコードが表示されます。[AC] キーはプログラム終了に使います。


動作画面

起動時およびキー入力待ちの状態
GK_5800_1 GK_9860_1  


[DEL] キーを押した時
 GK_5800_2 GK_9860_2  

同じキーでも機種が違うとキーコードが異なる。


ソースコード (GET KEYCODE / GETKEY)

※ fx-5800P用に作っていますが, fx-9860GII や fx-CG20 でも動作します。
注)fx-5800Pはファイル名に12文字まで使えますが、
  fx-9860GII や fx-CG20 では最大8文字です。
  そこで、fx-9860GII や fx-CG20 では、私はファイル名を GETKEY としています。

  GetKeycode_src 

注1) 一番上の行の "  GET KEYCODE" の冒頭はスペース2個
注2) 下から3行目の Locate 1,1,"KEYCODE =     " の = の後ろはスペース4個


ソースコード (KEYCODE) fx-9860GII 専用 [fx-CG20 でも動作]

プログラムファイル keycode.g1m のダウンロード
プログラムファイル keycode.g3m のダウンロード

Casio Basic のキーコード表示と共に、C言語用 Casio SDK の Bkey_GetKeyWait( )関数の code1 と code2 を併せて表示。

KeyCode_src for fx-9860GII 

注3)下から6行目の "KeyCode ="の = 以降はスペース12個
注4) 下から3行明の Locate 15,3,"  " はスペース2個

起動した直後
KeyCode for 9860 Start 

分数キーを押した時
KeyCode for 9860 KeyCode 




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

人気ブログランキングへ


FC2ブログランキングへ


  


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

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


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

プログラムライブラリ - ピタゴラス数

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

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
デバッグ: 2014/12/03
追加:2014/12/06 fx-9860GII プログラム
修正:2015/07/04 fx-9860GII プログラムTypo
追記修正:2016/04/15


ピタゴラス数探索プログラム: PYTHAGORAS

対応機種

・Casio fx-5800P
・Casio fx-9860GII & fx-CG20 (キーコードおよびLocateで設定する座標の変更が必要)

※ Casio fx-CG20/10, fx-FD10 pro でもキーコードおよびLocateで設定する座標を変更すれば、同様に動作すると思われる


プログラムの説明

a2 + b2 = c2 となる自然数の組 (a, b, c) をピタゴラス数という。なかでも a, b, c の最大公約数が 1 の時原始ピタゴラス数という。本プログラムはピタゴラス数の以下の性質を利用して、原始ピタゴラス数を探索して表示する。

ピタゴラス数の性質 

関連記事は以下を参照。

 ・ fx-5800P でピタゴラス数
 ・ fx-9860GII への移植 - ピタゴラス数


プログラムの使い方

・プログラム終了には、[AC] キーを押す。

・動作モード: 「ステップモード」と「連続モード」がある。
ステップモードで [EXE] キーを長押しすると連続モードに切り替わる。
連続モードで [(-)] キーを押すとステップモードに切り替わる。

・プログラム起動時は「ステップモード」である。

・ステップモード
[EXE] キーを押すたびに、次の原始ピタゴラス数を表示する。

・連続モード
次々と原始ピタゴラス数を探索して表示する。


動作画面

プログラム起動時(ステップモード)

Pytha1 

最初に見つかった原始ピタゴラス数を表示している。
起動時はステップモードなので、[EXE] キーを押すと次の原始ピタゴラス数を探索する。

Pytha2 

さらに [EXE] キーを押すと、3つめの原始ピタゴラス数が探索される。

Pytha3 

ここで、[EXE] キーを長押しすると、連続モードに切り替わり、原始ピタゴラス数を次々に探索して表示を続ける。



連続モードでは、[(-)] キーを押すとステップモードに切り替わる。再び [EXE] キーを長押しすると連続モードになる。
連続モードのまま置いておくと、以下のようになる。





プログラムファイル

fx-5800P 用 PYTHAGORAS

Pythagoras_Source 
※ 13行目、15行目、17行目の Locate の空白はスペース14個


▶ fx-9860GII & fx-CG20用 PYTHA

※ プログラムファイル・ダウンロード:
  - fx-9860GII用 PYTHA.g1m
  - fx-CG20用 PYTHA.g3m
 
このソースコードは、fx-9860GII、fx-CG20共通
fx-9860GII PYTHA CB Source 
※ fx-5800P と異なる部分を赤文字で示す。
※ 13行目、15行目、17行目の Locate の空白は、スペース19個

9860_Pytha1 fx-CG20_Pytha 

9860_Pytha2 fx-CG20_Pytha2 







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

人気ブログランキングへ


FC2ブログランキングへ



  

カシオプログラム関数電卓 FX-5800P-N カシオプログラム関数電卓 FX-5800P-N
(2006/09/22)
CASIO(カシオ)

商品詳細を見る



keywords: fx-5800P、 fx-9860GIICasioBasic、プログラムライブラリプログラム関数電卓

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


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

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

やす (Krtyski)

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


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

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

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


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR