テンキーの数字からキーコードへの変換(2)

テンキーの数字からキーコードへの変換 について、続報です。

計算式に拘っていたのがよくありませんでした。数行のコードで高速変換する方法が見つかったので、記録として書いておきます。



これまで、色々とプログラムを作っている際、押したテンキーの数字から、そのキーのキーコードを導き出す簡単な計算式があれば良いと思いつつも、そのようなものは考えついていませんでした。

そこで、配列変数を使って、以下のように対応を付ける方法を使っています。
10→DimZ
35→Z[1]:36→Z[2]
37→Z[3]:21→Z[4]
22→Z[5]:23→Z[6]
31→Z[7]:32→Z[8]
33→Z[9]:25→Z[0]


この場合は、テンキーの数字を N とすると、キーコードは Z[N] で得られます。


fx-5800P では、配列変数へのアクセスは20ms 程度の時間がかかるので、上のように10個の配列変数を初期化するのに 200ms (0.2秒) かかります。それだけでなく、プログラム中で Z[N] を使えば、そのたびに 20ms の時間がかかります。実際はこの程度の時間を許容するしかないと思っています。

テンキーの数字からキーコードを簡潔かつ高速に変換する方法が思いつかなかったのですが、高速な方法がありました。

基本的なアイディアは、前回と同じで、以下の変換表をそのまま使います。

テンキー Nキーコードキーコード計算AB共通の計算式
135= 17+N+171117+N+10A+7B
236= 17+N+171117+N+10A+7B
337= 17+N+171117+N+10A+7B
421= 17+N+0 0017+N+10A+7B
522= 17+N+0 0017+N+10A+7B
623= 17+N+0 0017+N+10A+7B
731= 17+N+7 0117+N+10A+7B
832= 17+N+7 0117+N+10A+7B
933= 17+N+7 0117+N+10A+7B

このように、3色で区別したグループ内では、それぞれ共通点があり、上の表に示したように、AB が 01 になれば、17+N+10A+7B でキーコードが計算できることが分かりました。

従って、AB を高速に求める計算方法が見つかれば、今後のプログラムで利用できます



今回は、A と B を高速に求める方法が、意外に簡単に見つかりました。式1つで変換する方法に拘っていたのがいけません。

いきなりコードを示します。

0→A:0→B
4-N>0⇒1→A
Abs(N-5)>1⇒1→B
17+N+10A+7B→K


テンキーの数字は N、換算して得るキーコードは K です。

A と B を高速に求めるのは最初の3行で、4行目の加算と乗算の式まで加えも十分高速です。

ついでに、テンキーの [0] からキーコード 25 を得る部分を追加すると、

0→A:0→B
4-N>0⇒1→A
Abs(N-5)>1⇒1→B
17+N+10A+7B→K
N=0⇒25→K


でOKです。


これを検証するプログラムは以下です。

ファイル名:N2KC
Lbl 0
Cls
"Ten Key"?→N
0→A:0→B
4-N>0⇒1→A
Abs(N-5)>1⇒1→B
17+N+10A+7B→K
N=0⇒25→K
K◢
Goto 0




テンキー以外のキーを押すとエラーになりますが、これについては必要に応じて考えようと思います。

上の変換表を利用して、キーコードからテンキーの数字を求める際は、テンキー以外を押した時の対処を考えると、配列変数を使うメリットがあります。と言うのも、配列変数の領域確保を行うと、確保した全ての配列変数が0で初期化されるため、それが0でないことを条件に簡単にエラーを排除できるからです。

さて、今回の変換表を生かして、逆方向の変換、つまりキーコードからテンキーの数字を得る方法も、別途考えようと思います。




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

人気ブログランキングへ


FC2ブログランキングへ

 

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

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

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

おもしろい・役に立つならクリックしてください。励みになります。

人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR