逆引き Casio Basic について

逆引き Casio Basic
<目次>

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

2015/04/28



これまで、Casio Basic でプログラムを作っていて、繰り返し同じようなロジックを使うようになっています。よく使うロジックを知っているだけで、実際にプログラムを作る時に役立ちます。

そこで、Casio Basic でやりたいことに対して、その方法を紹介するために、逆引き Casio Basic の連載を始めます。

対応機種は、Casio fx-5800P, fx-9860GII, fx-CG20 です。



e-Gadget では、新世代 Casio Basic でのプログラミングについて、3通りの異なる方法で情報提供しています。


Casio Basic でプログラムを作る時、やりたいことを実現するロジックを知りたい
 ⇒ 逆引き Casio Basic - 目次


Casio Basic をじっくりと勉強したい
 ⇒ Casio Basic 入門 - 目次


Casio Basic のコマンドを詳しく知りたい
 ⇒ Casio Basic コマンドリファレンス - 目次









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

人気ブログランキングへ


FC2ブログランキングへ



   



keywords: CasioBasic、プログラミング入門プログラム関数電卓

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



関連記事

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

矢印キーで項目選択(2) - 逆引き Casio Basic

逆引き Casio Basic
<目次>

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

更新 2015/04/29

[fx-5800P / fx-9860GII / fx-CG20]

矢印キーを使って項目を選択する。
矢印キーで項目選択(1) - 逆引き Casio Basic とは異なるロジックを紹介する。


関連記事: fx-5800P:矢印キーの活用


fx-5800P の矢印キー(下図の右上の4つのキー)
Keys-2 

fx-9860GII の矢印キー(下図右下の丸いキー)
TC10-9860GII 

fx-CG20 の矢印キー(下図右下の丸いキー)
fx-CG20_Func_Keys 


矢印キーのキーコード

キーfx-5800Pfx-9860GII / fx-CG20
[▲]8428
[▼]8537
[▶]8627
[◀]8338



項目選択

以下のように矢印キーの [▲] か [▼] を押して、⇒ マークを移動させ、4行目に ⇒マークのある項目番号を表示する。

menu_1 
menu_2 
menu_3 

[▼][▲] キーを押した時、⇒マークを移動させ、項目番号を表示する。

項目番号は1~3で、[▼] を押した時は⇒マークを下へ1つ移動する。項目3から移動するときは、項目1へ移動する。
[▲] を押した時は、逆方向、つまり⇒マークを上へ1つ移動する。項目1から移動する時は、項目3へ移動する。


⇒マークの移動は、
 ・移動する前に、⇒マークをスペースで上書きして消去: Locate コマンド利用
 ・移動先の位置で ⇒マークを表示: Locate コマンド利用

⇒マークの消去および表示位置は、項目番号 M を使って 1桁目、M 行目とすると
 ・消去: Locate 1,M," "
 ・表示: Locate 1,M,"⇒"

但し、⇒マークの消去時(移動前)の M と 表示時(移動後)の M の値は異なることに注意!

ここでは、移動前の M の値から、移動後の M の値を計算で求める。


⇒マークの移動前と移動後を表で示す;

[▼] キー を押したとき
移動前の項目番号 M移動後の項目番号 M求め方
31計算で求める
23
12

[▲] キー を押したとき
移動前の項目番号 M移動後の項目番号 M求め方
13計算で求める
21
32


なお、⇒マークが移動後の項目番号の表示は、 Locate 4,1,M で良い。



⇒マークの移動先の項目番号を計算する方法

⇒マークの移動先を計算で求める場合、[▼] を押した時は移動前の M を3で割った余りに1を加えた結果が移動先の M になる。同様に、[▲] を押した時は、移動前の M に対して M+1 を3で割った余りに1を加えた結果が、移動先の  M になる。

[▼] キー を押した時、計算で ⇒マークの移動先 M を求める方法
移動前の MM を3で割った余り左に1を加える移動先の M
3011
2233
1122

[▲] キー を押した時、計算で ⇒マークの移動先 M を求める方法
移動前の MM+1M+1 を3で割った余り左に1を加える移動先の M
12233
34122
23011

それぞれの計算結果⇒マークの移動先の M が一致していることが分かる。

ところで、整数 A を3で割った余りは、以下のようにして計算できる。

整数 A を3で割った余り = A - 3× Int(A÷3) 

これが、基本になる式だ。項目数が4個あれば、4で割った余りを基本に据えて、計算式を作れば良い。

・ ⇒マークの移動前の M を、そのまま使うか、1を加減いずれかして加工し、
・ それを項目数(今回は3)で割った時の余りを求め
・ これをそのまま使うか、1を加減いずれかして加工して、移動後の M を求める式を作る

項目数で割り算した時の余りの計算を中核とし、細かいところは微調整して、最終的に式を作れば良い。
今回のサンプルプログラムでは、上の表に示した計算方法で良く、式にすると以下のようになる。

 [▼] を押した後の M = M - 3×Int(M÷3) +1 = 1+M-3Int(M÷3)

 [▲] を押した後の M = (M+1) - 3×Int((M+1)÷3) +1 = 2+M-3Int((M+1)÷3)



ところで、fx-9860GII や fx-CG20 の Casio Basic には、余りを求める関数 Mod( ) が備わっていて、整数 A を3で割った余りは、

Mod(A,3)

で求められる。しかし fx-5800P には Mod( ) 関数が無いので、共通して使える上記の計算法を紹介した。


今回の方法は、「全ての整数 A は、それを整数 N で割った余りでグループ分けできる」と言う、理屈に基づいている。
例えば3で割った余りは、0、1、2 のいずれかで、全ての整数は、余り0のグループ、余り1のグループ、余り2のグループのどれかに必ず属する。そして、連続した整数は、これらのグループを順に循環する。

0123456789
余り0余り1余り2余り0余り1余り2余り0余り1余り2余り0



プログラムは以下のようになる。

[▼] [▲] で項目選択 (fx-5800P)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=
85
Then
1+M-3Int(M÷3)→M
Else If K=
84
Then
2+M-3Int((M+1)÷3)→M
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd



[▼] [▲] で項目選択 (fx-9860GII / fx-CG20)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=
37
Then
1+M-3Int(M÷3)→M
Else If K=
28
Then
2+M-3Int((M+1)÷3)→M
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd




上のプログラムは、処理がシンプルなので、矢印キーを軽く1回押しても、複数回押したようなキーリピートが発生する。そこで、茶色文字で示した2行(※)を追加してキーリピートを抑制する。

[▼] [▲] で項目選択 (fx-5800P)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=
85
Then
1+M-3Int(M÷3)→M
Else If K=
84
Then
2+M-3Int((M+1)÷3)→M
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd




[▼] [▲] で項目選択 (fx-9860GII / fx-Cg20)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=
37
Then
1+M-3Int(M÷3)→M
Else If K=
28
Then
2+M-3Int((M+1)÷3)→M
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd



この例では、処理がシンプルで高速動作するので、キーリピート抑制をした方が良い。但し fx-5800P は処理速度が遅いので、処理が複雑になれば実行が遅くなり、キーリピートを抑制しない方が良い場合が多い。一方、fx-9860GII は処理速度が速いので、キーリピート抑制はほぼ必要だろう。

 ⇒ キーリピート抑制 - 逆引き Casio Basic




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


人気ブログランキングへ


FC2ブログランキングへ



   



keywords: CasioBasic、プログラミング入門プログラム関数電卓

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



関連記事

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

矢印キーで項目選択(1) - 逆引き Casio Basic

逆引き Casio Basic
<目次>

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

更新 2015/04/29

[fx-5800P/ fx-9860GII / fx-CG20]

矢印キーを使って、項目を選択する。



fx-5800P の矢印キー(下図の右上の4つのキー)
Keys-2 

fx-9860GII の矢印キー(下図右下の丸いキー)
TC10-9860GII 

fx-CG20 の矢印キー(下図右下の丸いキー)
fx-CG20_Func_Keys 


矢印キーのキーコード

キーfx-5800Pfx-9860GII / fx-CG20
[▲]8428
[▼]8537
[▶]8627
[◀]8338



項目選択

以下のように矢印キーの [▲] か [▼] を押して、⇒ マークを移動させ、4行目に ⇒マークのある項目番号を表示する。

menu_1 
menu_2 
menu_3 

[▼][▲] キーを押した時、⇒マークを移動させ、項目番号を表示する。

項目番号は1~3で、[▼] を押した時は⇒マークを下へ1つ移動する。項目3からは、項目1へ戻す。
[▲] を押した時は、逆方向、つまり⇒マークを上へ1つ移動する。項目1からは、項目3へ戻す。


⇒マークの移動は、
 ・移動する前に、⇒マークをスペースで上書きして消去: Locate コマンド利用
 ・移動先の位置で ⇒マークを表示: Locate コマンド利用

⇒マークの消去および表示位置は、項目番号 M を使って 1桁目、M 行目とすると
 ・消去: Locate 1,M," "
 ・表示: Locate 1,M,"⇒"

但し、消去時の M と 表示時の M の値は異なることに注意!


⇒マークの移動前と移動後を表で示す;

[▼] キーを押したとき
移動前の項目番号 M移動後の項目番号 M求め方
31移動前が3の時は 1→M とする
23移動前が3以外の時は M+1→M とする
12

[▲] キーを押したとき
移動前の項目番号 M移動後の項目番号 M求め方
13移動前が1の時は 3→M とする
21移動前が1以外の時は M-1→M とする
32

なお、⇒マークが移動後の項目番号の表示は、 Locate 4,1,M で良い。


以上をまとめると、プログラムは以下のようになる。

サンプルプログラム
[▼] [▲] キーで項目選択 (fx-5800P)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=85
Then
If M=3
Then 1→M
Else M+1→M
IfEnd

Else If K=84
Then
If M=1
Then 3→M
Else M-1→M
IfEnd
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd

青文字は項目番号の更新、赤文字は表示と、それぞれまとまって記述できたので、さらにプログラムが分かりやすくなる。


fx-9860GII では、キーコードが異なるだけで、他は同じで良い。

サンプルプログラム
[▼] [▲] で項目選択 (fx-9860GII / fx-CG20)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=37
Then
If M=3
Then 1→M
Else M+1→M
IfEnd

Else If K=28
Then
If M=1
Then 3→M
Else M-1→M
IfEnd
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd


 ⇒ Casio Basic コマンドリファレンス - Do ループ
 ⇒ Casio Basic コマンドリファレンス - While ループ
 ⇒ Casio Basic コマンドリファレンス - Getkey



上のサンプルプログラムは、処理内容がシンプルなため、矢印キーを軽く押しても複数回押したようなキーリピートが発生する。そこで、以下の茶色文字で示した2行(※)を追加してキーリピートを抑制する。

サンプルプログラム
[▼] [▲] キーで項目選択 (fx-5800P)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=85
Then
If M=3
Then 1→M
Else M+1→M
IfEnd

Else If K=84
Then
If M=1
Then 3→M
Else M-1→M
IfEnd
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd



サンプルプログラム
[▼] [▲] で項目選択 (fx-9860GII / fx-CG20)
Locate 1,1,"⇒1:"
Locate 2,2,"2:"
Locate 2,3,"3:"
1→M

While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

Locate 1,M," "
If K=37
Then
If M=3
Then 1→M
Else M+1→M
IfEnd

Else If K=28
Then
If M=1
Then 3→M
Else M-1→M
IfEnd
IfEnd:IfEnd
Locate 1,M,"⇒"
Locate 1,4,M


WhileEnd



fx-5800P は処理速度が遅いため、処理内容が複雑になればキーリポート抑制が不要なこともある。一方 fx-9860GIIは処理速度が速いので、キーリピート抑制はほぼ必要だろう。

 ⇒ キーリピート抑制 - 逆引き Casio Basic



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

人気ブログランキングへ


FC2ブログランキングへ



   



keywords: CasioBasic、プログラミング入門プログラム関数電卓

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



関連記事

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

矢印キーの判別 - 逆引き Casio Basic

逆引き Casio Basic
<目次>

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

更新 2015/04/29

[fx-5800P / fx-9860GII / fx-CG20]

4つの矢印キーのうち、どれが押されたかを判別する。


fx-5800P の矢印キー(下図の右上の4つのキー)
Keys-2 

fx-9860GII の矢印キー(下図右下の丸いキー)
TC10-9860GII 

fx-CG20 の矢印キー(下図右下の丸いキー)
fx-CG20_Func_Keys 


矢印キーの判別

何かキーが押された時、[▲] [▼] [▶] [◀] それぞれに割り振られているキーコードかどうかを調べることで、4つの矢印キーの判別を行えば良い。

矢印キーのキーコード
キーfx-5800Pfx-9860GII / fx-CG20
[▲]8428
[▼]8537
[▶]8627
[◀]8338


サンプルプログラム
矢印キーの判別方法 (fx-5800P)
While 1

Do
Getkey→K
LpWhile K=0

If K=84
Then "UP"
Else If K=85
Then "DOWN"
Else If K=86
Then "RIGHT"
Else If K=83
Then "LEFT"
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd




サンプルプログラム
矢印キーの判別方法 (fx-9860GII / fx-CG20)
While 1

Do
Getkey→K
LpWhile K=0

If K=28
Then "UP"
Else If K=37
Then "DOWN"
Else If K=27
Then "RIGHT"
Else If K=38
Then "LEFT"
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd


何かキーが押されるまで Do ループが継続し、何かキーが押されれば Do ループが終わる。押したキーが矢印キーの場合は、If 文の記述に従って4種類の矢印キーを判別して、 UP (上), DOWN (下), RIGHT (右), LEFT (左) のいずれかを表示する。

 ⇒ Casio Basic コマンドリファレンス - Do ループ
 ⇒ Casio Basic コマンドリファレンス - Getkey



上のサンプルプログラムでは、矢印キーを軽く押しても複数回押されたような、キーリピート動作をする。
そこで、茶色文字で示した2行(※)を追加してキーリピートを抑制を行う。

サンプルプログラム
矢印キーの判別方法 (fx-5800P)
While 1

While Getkey
  ()
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

If K=84
Then "UP"
Else If K=85
Then "DOWN"
Else If K=86
Then "RIGHT"
Else If K=83
Then "LEFT"
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd




サンプルプログラム
矢印キーの判別方法 (fx-9860GII / fx-CG20)
While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

If K=28
Then "UP"
Else If K=37
Then "DOWN"
Else If K=27
Then "RIGHT"
Else If K=38
Then "LEFT"
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd



上記のプログラムは、処理内容がシンプルなので、キーリピート抑制をした方が良い。しかし、fx-5800P は処理速度が遅いので、処理内用が複雑になると、キーリピート抑制が不要なこともある。一方、fx-9860GII は処理速度が速いので、キーリピート抑制は必要だろう。

 ⇒ キーリピートの抑制 - 逆引き Casio Basic





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

人気ブログランキングへ


FC2ブログランキングへ



   



keywords: CasioBasic、プログラミング入門プログラム関数電卓

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



関連記事

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

キーリピート抑制 - 逆引き Casio Basic

逆引き Casio Basic
<目次>

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

更新 2016/10/12

[fx-5800P / fx-9860GII / fx-CG20]

キーリピートを抑制する。


先ず、キーリピートするプログラムとして「キー判別プログラム」を作り、軽く素早くキーを叩いても、複数回キーが押されたような動作、つまりキーリピート動作することを確認する。その後、このキーリピートを抑制する。

最初に、[1] キーが押されたことを判別し、[1] HIT と表示するプログラムを、fx-5800P 用と fx-9860GII 用を、それぞれを作る。

[1] キーのキーコード
キーfx-5800Pfx-9860GII / fx-CG20
[1]3572


キーリピートするプログラム (fx-5800P)
While 1

Do
Getkey→K
LpWhile K=0

If K=35
Then "[1] HIT"
IfEnd

WhileEnd



キーリピートするプログラム (fx-9860GII / fx-CG20)
While 1

Do
Getkey→K
LpWhile K=0

If K=72
Then
"[1] HIT"
IfEnd

WhileEnd



何かキーが押されるまで Do ループが継続し、何かキーが押されれば Do ループが終わる。押したキーが [1] キーの場合は、If 文の記述に従って、 [1] HIT と表示する。



上のサンプルプログラムでは、[1] キーを素早く叩いても、複数回押されたような、キーリピート動作をする。
このキーリピートを抑制するために、茶色文字で示した2行(※)を追加する。


キーリピート抑制したプログラム (fx-5800P)
While 1

While Getkey
  ()
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

If K=35
Then "[1] IS HIT"
IfEnd

WhileEnd




キーリピート抑制したプログラム (fx-9860GII / fx-CG20)
While 1

While Getkey
  (※)
WhileEnd
     (※)
Do
Getkey→K
LpWhile K=0

If K=72
Then "[1] IS HIT"
IfEnd

WhileEnd




While Getkey
WhileEnd


の2行はループ構造であり、Getkey0 でない時ループを継続する。Getkey0 の時、ループを抜ける。

※ 「Getkey0 でない」とは、Getkey が実行され、そこで得られたキーコードが 0 でない、という意味.

この2行は、以下のように書いても同じことになる。これを理解するには2つの重要ポイントがある。

While Getkey≠0
WhleEnd

ループ継続条件の判定について
While [ループ継続条件]
WhileEnd

の書式の [ループ継続条件] は、それが「」か「」かを判定するのが本質となる。
Getkey≠0 は、「Getkeyの実行結果が0でないこと」が、「」であるか?「」であるか?が判定される。

判定における「真」と「偽」
判定結果が、「真」か「偽」かは、Casio Basicの処理の内部では、それが「0でない=真」か「0である=偽」として処理されている。
この内部処理は、While だけでなく、Do ループで使う LpWhile や If 、⇒ 命令などの全ての条件判定で通用する本質的なもので、重要なポイントだ。この考え方は、Casio Basic独自のものではなく、プログラミング言語で広く受け入れられ採用されているものである。Casio Basic はプログラミング言語の標準仕様を取り入れている、と言える。


つまり、Getkey≠0 を判定条件として使う場合、Getkey≠0 が 成り立てば「」、成り立たないと「」となる。
一方判定条件として、Getkey とだけ記述する場合、Getkey が実行された結果が 0 でなければ「」、0 ならば「」と判定される。

これらの2つの記述は、全く異なった判定方法であり、それは上の2つの重要ポイントから理解できる。

While Getkey は、While Getkey≠0 の省略形ではない。

上のサンプルプログラムでは、While 1 / WhileEnd と言う記述があるが、While 1 の 「1」 は、判定条件として常に「」であることを意味している。だから、この表記は無限ループになるわけだ。

==========

以上を正しく理解した上で、改めてプログラムの動作を詳しくみてゆく。
Getkey は、これが実行された時に、何かキーが押されているかどうかを判定し、キーコードを調べる。従って押されたキーの判定を Getkey で行うには、ループの中に Getkey を記述し、何かキーが押された時に必ず Getkey が実行されるようにしなければならない。つまりGetkey はループ処理の中で使う必要がある。

そして、何か1つのキーが押されている時に Getkey が実行されると、Getkey0 以外の2桁のキーコードを得る。何もキーが押されていない時に Getkey が実行されると Getkey0 を得る。

そして、ループの継続条件として、Getkey とだけ記述しているので、Getkey0 でない (=真)か 0 である (=偽) かで判定される。その結果、このループは、以下の動作をする。

1) 何かキーが押されている時はこのループが継続し、プログラムが先に進まない。

2) ループが回っている時にキーが押されていないと、ループを抜けて、プログラムが先へ進む。

3) キーが押されていない時にこの While Getkey が実行されると、ループに入らず、プログラムは先へ進む。



 ⇒ Casio Basic コマンドリファレンス - Do ループ
 ⇒ Casio Basic コマンドリファレンス - While ループ
 ⇒ Casio Basic コマンドリファレンス - Getkey





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

人気ブログランキングへ


FC2ブログランキングへ



   



keywords: CasioBasic、プログラミング入門プログラム関数電卓

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



関連記事

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

Casio Basic入門50

Casio Basic入門
<目次>

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

2015/04/24


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

Chapter 8 - 初級

前回: Casio Basic入門49 を見る


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

前回は、fx-5800P Casio Basic プログラムを、fx-9860GII で動作するようにプログラムを移植しました。以下にそのソースコードを示します。

fx-9860GII:温度換算プログラム TEMPCONV
0→A
While 1


ClrText
"1:      °C" (スペース11個)
"2:      °F" (スペース11個)
"3:      K"  (スペース12個)
If A:Then
Locate 4,1,C
Locate 4,2,F
Locate 4,3,K
IfEnd
Locate 13,1,"°C"
Locate 13,2,"°F"
Locate 13,3," K"
Locate 1,4,"<EXIT>"
Locate 11,4,"<VARS>"

-1→M
Do
Getkey→L
LpWhile L=0
L=72⇒1→M
L=62⇒2→M
L=52⇒3→M
L=58⇒4→M
K=47⇒Break

Locate 1,4,"        " (スペース16個)
If M=1:Then
4→X:1→Y:9→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:2→Y:9→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:3→Y:9→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
ClrText
Locate 2,1,"C = 5(F-32)÷9"

Locate 2,2,"F = (9÷5)C+32"
Locate 2,3,"K = C+273.15"

Locate 11,4,"<EXIT>"
While Getkey≠47
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd
Cls
Locate 7,2,"BYE!"



プログラムが正しく動作することは、前回確認しています。但し、表示が以下のようになります。

プログラム起動時の画面;

TC10-Main 

換算結果表示の画面;

TC10-Converted 

[VARS] キーを押して計算式の表示;

TC10-Dormula_1 

プログラムが正常終了した時の画面;

TC10-Quit_Bye 

入力ボックス以外の画面設計は、fx-5800P に合わせて作ったままなので、全体に左上へ偏っていて、fx-9860GII の広い画面を活かしきれていません。



Chapter 8-9
fx-9860GII 用に表示を最適化する

今回は、この間が抜けた感じの表示を修正して、fx-9860GII 用に最適化します。

fx-9860GII 用の画面をどのようにするかは、それぞれ好みがあると思いますが、ここでは以下のような画面にしようと思います。

TC10-Main_2 

[VARS] キーと [EXIT] キーの配置は以下のようになっているので、これに合わせて <VARS>:FMLA の表示を左に、<EXIT> の表示を右になるように変更します。

TC10-9860GII 

TC10-Formula\2 

TC10-Quit_Bye_2 


fx-5800P のディスプレイは 16桁x4行に対して、fx-9860GII は 21桁x7行と広いので、それに合わせた表示を行います。具体的には Locate コマンドを使えば簡単です。以下のように修正します。修正した部分を赤文字で示します。


fx-9860GII:温度換算プログラム TEMPCONV
0→A
While 1


ClrText
"===Temp Converter==="
""

"1:      °C" (スペース11個)
"2:      °F" (スペース11個)
"3:      K"  (スペース12個)
If A:Then
Locate 4,3,C
Locate 4,4,F
Locate 4,5,K
IfEnd
Locate 14,3,"°C"
Locate 14,4,"°F"
Locate 14,5," K"
Locate 1,7,"<VARS>:FMLA"
Locate 16,7,"<EXIT>"

-1→M
Do
Getkey→L
LpWhile L=0
L=72⇒1→M
L=62⇒2→M
L=52⇒3→M
L=58⇒4→M
K=47⇒Break

Locate 1,7,"           " (スペース21個)
If M=1:Then
4→X:3→Y:10→D:2→E
Prog "IN":Z→C
C(9÷5)+32→F
C+273.15→K
1→A
Else If M=2
Then
4→X:4→Y:10→D:2→E
Prog "IN":Z→F
5(F-32)÷9→C
C+273.15→K
1→A
Else If M=3
Then
4→X:5→Y:10→D:2→E
Prog "IN":Z→K
K-273.15→C
C(9÷5)+32→F
1→A
Else If M=4
Then
ClrText
"=Converting Fomula="
Locate 2,3,"C = 5(F-32)÷9"

Locate 2,4,"F = (9÷5)C+32"
Locate 2,5,"K = C+273.15"

Locate 16,7,"<EXIT>"
While Getkey≠47
WhileEnd
While Getkey
WileEnd
IfEnd:IfEnd
IfEnd:IfEnd

WhileEnd
Cls
Locate 9,5,"Bye!"



Locate コマンドでの表示位置の変更の他に、出力命令 " " による表示を追加しました。さらに、入力ボックスの表示位置と桁数も変更しています。

入力ボックスの桁数については、10桁に変更しています。但し、この桁数は10桁が最大です。これを超える設定を行うと指数表示になるので、入力ボックスの表示が異常になるからです。



fx-5800P から fx-9860GII への Casio basic プログラムの移植は、基本的には以下を考慮すれば簡単で、移植性が高いことが分かりました。
 ・ Getkey で使うキーコードの変更
 ・ 使えるキーの変更に合わせた Getkeyで使うキーコードの変更
 ・ Locate で指定する座標(表示位置)の変更の変更、使えるキーに合わせた変更
 ・ より広い画面に対応して、表示の追加の有無

但し、旧来の命令、?" " の移植には注意が必要です。





つづく...

Casio Basic入門51Casio Basic入門G01 / 目次




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

人気ブログランキングへ


FC2ブログランキングへ



 



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

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




関連記事

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

電卓技術開発の歴史

電卓とは、電子式卓上計算機の略です。

私が子供の頃、「答え一発!カシオミニ」なんてテレビCMが流れていました。

今でも、歌詞を覚えています(・ω・)
とかくこの世は計算さ~
数と数との絡み合い
答え、一発! カシオミニ


高度成長の象徴の1つが電卓だと思います。

今のパソコンの心臓部であるCPUも、最初の発明には日本人が深く関わっています。
当時、これを考えついたものの、日本ではどこも製造できず、アメリカのインテルと共同開発の末、4004と言う型式の汎用ICが出来ました。このあたりは私も知っていました。

電卓の進歩にも日本が大きく関わっています。

高校の時、矢野健太郎と言う有名な数学者の書いた「数学モノグラフ」と言う、B6版くらいの小さくて薄い本を、たまたま買って読んでいたところ、電卓の論理回路の事が書いてありました。私が読んでも内容が分かったので、確か高校性向けの本だったと思います。

これで、電卓の計算方法と、電子計算機の計算方法が違うと言うことを、知りました。この事は、最近でも知らない人が意外に多いようです。「2進化10進数」と言うものを使っていて、各桁ごとに2進数を使うが、全体を2進数では計算しないと言うものです。

電卓の爆発的な進歩は、日本の高度経済成長の象徴と言えます。それに比べて、最近元気のない日本に生きている私たちですが、1960~1970年代に一気に花開き、多くの派生技術を生んだ、日本の電卓の歴史を読むと、なんだか元気が出てきます。子供ではありながら、リアルタイムで当時の空気を吸っていたので、本当に元気を貰えます。

元気のあった時代の貴重な資料が、あります。

電子式卓上計算機技術発展の系統化調査


かなり、読み応えがあります。技術に興味のある方には、お勧めです。






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

人気ブログランキングへ


FC2ブログランキングへ

 

keywords: fx-5800Pプログラミングプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

プログラム電卓の選び方

カシオのホームページで、電卓の選び方 と言うページを見つけました。

是非とも、プログラム電卓バージョンも作って欲しいと思うのですが、多分出来ないでしょう。そこで、オリジナルを元にしてプログラム電卓バージョンを作ってみました。


先ず初めに、ホームページ掲載のオリジナルバージョン


| 電卓選びは機能に注目

1たす1 こんな計算をしたいとき、文字通り「1+1=」と入力するだけで答えを出してくれるのが電卓。誰でも簡単に使えるものですから、マニュアルや取扱説明書を読むことも少ないですよね。

だから電卓を選ぶときは、値段や大きさだけで漠然と決めてしまいがち。だけどそれは、とてももったいない!お店に行ったら、電卓ならではの便利な計算機能に注目した上で選んでほしいのです。


| 電卓一つで仕事の効率アップ!

たとえば、M+やGTなどのキー。あなたは使ったことがありますか?これらのキーは「メモリーキー」「グランドトータルキー」と呼ばれるもので、使いこなすとメモを取らずに複数の計算結果を合計することができます。

また数字の並んだスライドスイッチも、とても便利な機能のひとつ。これは「ラウンドセレクター」「小数点セレクター」というものですが、小数点以下の計算結果を、桁を指定した上で四捨五入することができるのです。使い方を知っている人は意外と少ないですよね。

何を隠そう私も、かつては触ったことのない「謎のキー」でした。会社の先輩から教えてもらったときは、まさに目からウロコ!メモリー計算や定数計算を駆使して、仕事を正確に素早く行えるようになったのです。使い方は、1度覚えてしまえば決して難しくありません。今はピンとこなくても、ぜひこれらのキーがあるものを選んでほしいものです。


| ものを大事に使うのはいいことだけれど・・・

愛用の電卓があって、かなり長い間使われている方にアドバイスを。電卓は知らない間に進化して、昔の電卓では考えられなかった機能を持つものもあります。時には買い替えを検討してみるのもおすすめですよ。

伝票の集計作業が多い方に便利な「検算機能」や、時給計算も簡単な「時間計算」。パソコンでUSBに接続でき、テンキーとしても使える便利な電卓もあります。そのほかにも辞書機能やレシート発行機能が搭載されていたり、今の電卓は本当にバリエーションが広いのです。電卓はどれも同じじゃない!あなたにぴったりの1台を、じっくり探してみつけてくださいね。



それでは、プログラム電卓バージョン!


| プログラム電卓選びは機能に注目

Norm 2
"TAX(%)"?T
"PRICE"?→P
P(1+T÷100)◢


税率を変えて消費税計算をしたいとき、こんな簡単なプログラムを組むだけで答えを出してくれるのがプログラム電卓。誰でも簡単に使えるものですから、マニュアルや取扱説明書を読むことも少ないですよね。

だからプログラム電卓を選ぶときは、値段や大きさだけで漠然と決めてしまいがち。だけどそれは、とてももったいない!お店に行ったら、プログラム電卓ならではの便利な Casio Basic に注目した上で選んでほしいのです。


| プログラム電卓一つで仕事の効率アップ!

たとえば、GetkeyLocate などのコマンド。あなたは使ったことがありますか?これらのコマンドは「リアルタイムのキーコード取得」「任意の位置への表示」が可能なコマンドで、使いこなすと自在なプログラムを作ることができます。

また [FILE] キーも、とても便利な機能のひとつ。これは「プログラムリスト呼び出し機能」「COMPモードでのプログラム呼び出し機能」というものですが、プログラムモードに入らずに、普通の電卓画面からすぐにプログラムを呼びだして実行できるのです。使い方を知っている人は意外と少ないですよね。

何を隠そう私も、かつては触ったことのない「謎のキー」でした。会社の先輩から教えてもらったときは、まさに目からウロコ!必要な時に必要なプログラムを駆使して、仕事を正確に素早く行えるようになったのです。使い方は、1度覚えてしまえば決して難しくありません。今はピンとこなくても、ぜひこれらの機能があるものを選んでほしいものです。


| ものを大事に使うのはいいことだけれど・・・

愛用のプログラム電卓があって、かなり長い間使われている方にアドバイスを。プログラム電卓は知らない間に進化して、昔の電卓では考えられなかったコマンドを持つものもあります。時には買い替えを検討してみるのもおすすめですよ。

繰り返し計算作業が多い方に便利な「旧来の命令」や、ゲームも作れてしまう「新世代 Casio Basic」。パソコンでプログラムを作るよりも遙かに簡単で、高速動作する便利なグラフ関数電卓もあります。そのほかにも行列機能やリスト機能が Casio Basicで使えたり、、今のプログラム電卓は本当にバリエーションが広いのです。プログラム電卓はどれも同じじゃない!あなたにぴったりの1台を、じっくり探してみつけてくださいね。



結構流用できるものですね(^^;)




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

人気ブログランキングへ


FC2ブログランキングへ

 

keywords: fx-5800Pプログラミングプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

プログラミングリンク集

[2017/11/06] ここで取り上げた「プログラミングリンク集」は、サイトが無くなっています。

 当ブログへのアクセスルートの1つで、最近増えているのが、「プログラミングリンク集」からの訪問者です。

結構面白そうなキーワードでリンクが収集されていて、思わず見入ってしまいます。

全てを確認するわけにゆかないくらい膨大なリンク集ですが、「fx-5800Pプログラミング」や「電卓」をキーワードとしたところで、当ブログが登場します。

「hp50gプログラミング」と言うキーワードがあるのは、さすがhpですね。

「文系」で出てくるリンクを思わず読んでしまいました(^^;)

キリが無いのですが、「7行プログラミング」は、、ハマりそうです。79文字7行以内でテトリスが出来たと言う記事。

たった7行で書かれたテトリスのプログラム

ちょっと感動モンですね。
実際に遊び方が紹介されていて、さっそく遊んでみました。 





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

人気ブログランキングへ


FC2ブログランキングへ

 

keywords: fx-5800Pプログラミングプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

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

やす (Krtyski)

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


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

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

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


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR