Hatena::ブログ(Diary)

氏家備忘録/非実用日記群 このページをアンテナに追加 RSSフィード Twitter

2008-03-02

スタック電卓 calcr ver0.16b スタック電卓 calcr ver0.16bを含むブックマーク

仕様とは思えない不具合があったので力ずくでねじ伏せました。

3桁カンマ区切りも欲しかったので。

変更内容

  • 3桁カンマ区切り表示できるようになりました(デフォルト)。桁区切りなしの表示にすることもできます。
  • 小数点以下0を入力し続けても表示されない不具合を修正。
  • -f -ck オプション廃止。-iオプションに統合。

-f -ckオプション廃止に伴い、-iオプションを次のように利用してください。

-iはcalcr実行前に処理されるプログラムです。

例を用いて。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/imageshokika.jpg

"-iIK15FC"について

  1. "I"で*キーと#キーを入れ替えます。
  2. "K"で桁区切りをトグル。デフォルトでは3桁区切り表示されますが、Kを指定することで桁区切り表示をなくします。
  3. "15"でXレジスタに15がセットされます。
  4. "F"はXレジスタにセットされた値にフォントサイズを変更します。デフォルトは20ですが、先に15がXレジスタに設定されていますので、フォントサイズは15と小さめになります。
  5. "C"でXレジスタをクリアします。

"-k"について(ついでに)

右ソフトキーはユーザがカスタマイズできるキーです。

"-k"オプションで右ソフトキーに何をさせるか設定できます。

デフォルトでは[R↓]です。

上の例では

"-kM"とあります。Mは[CHS]ですので、右ソフトキーは[CHS]として働きます。

"-i" "-k" "-p"オプション以下に続く文字列は共通

後述のプログラムコマンドの羅列です。

"-i" ではcalcr実行開始時に処理されるプログラムを記述します。

"-k" では右ソフトキーを押した時に処理されるプログラムを記述します。

"-p" では "RUN" メニューを選択した時に処理されるプログラムを記述します。

処理される内容は同じです。

以下

再掲示。

軽いけどディープな電卓

かなり自分好みと言うか自己満足電卓。

きっかけ

WinodowsMobile用の電卓ソフトはすでにいっぱいあります。

一方、個人的にはhp 12C platinumを愛用していると言うこともあって、どうしてもスタック電卓の操作が体に馴染んでいます。

しかしながら、HP電卓エミュレータは海外にたくさんあるものの、

スタック電卓ってないんですよね。

ないなら作ろう!

できる範囲でorz

ということで、作って見たしだい。

eVC++のHelloWorldスケルトンをいじりました。

というわけで画面は簡素。

超簡素。

10進数モード。実数が扱えます。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/image10.jpg

16進数モード。整数のみ。*キー(-iIオプションつきのときは#キー)で前面テンキーから直接A-Fが入力できるモードと数字入力モードがトグルします。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/image16.jpg

メニュー構成。少し変わりました。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/imagemenu.jpg

プログラムショートカットへ"-p"オプションで指定してください。例はBMIを計算するプログラムです。RUNで実行。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/imageprogram.jpg

※3月5日追記

とーたく様からコメントをいただき、とりいそぎ、0入力後小数点以下表示されない不具合を修正し、ver 0.16bにしました。

上画面、左上隅に"0.16"とありますが、修正版では"0.16b"と表示されます。

ご了承願います。

動作確認

プログラムの呼称

calcrの"r"は、RPN電卓のRをもじってます。

「カルクアール」と呼んでください。

インストール

  1. calcr.CABからCABファイルをダウンロード
  2. アドエスで実行してインストール
  3. 普通はこれでおしまい。
  4. もし、"."を"#"キーで入力したい方はcalcr.exeのショートカットオプションに"-iI"を追加してください。
  5. もし、最初から16進モードにしたい方は、calcr.exeのショートカットオプションに"-iZ"を追加してください。
  6. もし、[CustomKEY]でたとえば[CHS]をしたい方は、calcr.exeのショートカットオプションに"-kM"を追加してください。
  7. もし、最初からある程度計算した状態で起動したいときは、calcr.exeのショートカットオプションに"-i・・・"を追加してください。・・・は計算するためのプログラムコマンドです。
  8. なお、"-i・・・"、 "-p・・・"、"-k・・・"は共存します。"・・・"の部分は後述する共通のプログラムコマンドです。

キー

  • 数字キー:数字 16進数モード時に[1⇔A]キーで1〜6キーから直接A〜Fが入力できます。
  • A〜Fキー:数字(0xA〜0xZ)横画面にした時に便利。
  • カーソルキー上:+
  • カーソルキー↓:−
  • カーソルキー←:×
  • カーソルキー→:÷
  • アクションキー:エンター
  • *キー:小数点.16進数モードでは前面テンキーのトグル[1⇔A](-iIオプションを付けた場合はX⇔Y (レジスターXとYを交換))
  • #キー:X⇔Y (レジスターXとYを交換)(-iIオプションを付けた場合は小数点.16進数モードでは前面テンキーのトグル[1⇔A])
  • クリアキー:レジスターXをクリア([CLx]キーですね)
  • ソフトキー左:fメニュー 10-16(基数の10進数と16進数トグル)、RUN(プログラム実行)、COPY X(Xレジスタクリップボードへのコピー)、カンマ区切りトグル、フォントサイズ変更(Xレジスタにあらかじめフォントサイズをテキトウに数字で入力しておいて下さい。デフォルトは20です。)、*#キー入れ替え、Y^X、√、1/X、R↓(スタックロールダウン)、LSTx(計算直前のXレジスタ呼び出し)、CHS
  • ソフトキー右:CustomKEYメニュー "-k"オプションで指定されたプログラムコマンドを即時実行します。例:"-kM"で[CustomKEY]は[CHS]キーとして利用できます。
  • .キー:フルキー側で小数点を入力できます。
  • Gキー:[1/X]キー
  • Iキー:#*キーを入れ替えます。
  • Lキー:[LSTx]キー
  • Mキー:[CHS]キー
  • Rキー:[R↓]キー
  • Sキー:[X^2]キー
  • Tキー:[√]キー
  • Wキー:Xレジスタクリップボードにコピー(Ctrl+Cは使えません、Wでコピーしてください。)
  • Xキー:[X⇔Y]キー
  • Yキー:[Y^X]キー
  • Zキー:10-16 基数の10進数と16進数トグル
  • [OK]キー:アプリケーション終了(最小化じゃないです。)

ショートカットオプション

使い方

例を使いながら。

12+24=

を計算します。

12

アクションキー(エンター)

34

+(カーソル上)

こんな感じ。

  1. スタックに数字を載せて行きます。
  2. 入力された数字はまずXレジスタにエンターキーで登録され、確定し、YレジスタにPUSHされます。
  3. 次に数字を入力すると、Xレジスタに登録されます。
  4. 次に演算キーを押すと、XレジスタとYレジスタ演算され、演算結果がXレジスタに格納されます。

こんな感じ。

使い方

じゃZレジスタとかTレジスタとか、使わないでいいじゃんと思うかもしれませんが、次の例を。

(12+34)/(56+78)*(89+12)=

この場合は

12

アクションキー

34

+ (12と34をたして)

56

アクションキー

78

+ (56と78をたして)

÷ (12と34をたした結果を56と78をたした結果で割って)・・・A

89

アクションキー

12

+ (89と12をたして)

× (Aの値と89と12をたした結果をかける)

Zレジスタまで使い、結果がXレジスタに残りました。

場合によってはTレジスタまでいくこともあります。

使い方

クリアキーを押すとXレジスタのみ消えます。

全部のレジスタを消したかったら

  1. クリアキーでXレジスタをクリアし
  2. アクションキー連打

アクションキーを押すと、すでに確定されたXレジスタの値がPUSHされていきます。

よって全部のレジスタが0になります。

使い方

逆に計算した結果POPされると、Tレジスタの値がZレジスタにコピーされます。

よって

  1. Xレジスタに定数を入力
  2. アクションキー連打 Tレジスタまでいっぱいにすると。
  3. この定数を煮るもよし、焼くも良し。Tレジスタからどんどんコピーされてきます。

使い方

10進と16進は基数を切り替えることになります。

16進時は基数が16になります。

だからHEXで"X=10"と表示されているとき、10進に表示を切り替えると"X=16"になりますよ。

基数が10進のときは小数点以下表示されますが、基数が16進のときは整数限定です。

基数が16進のとき、前面の小数点キーは[1⇔A]キーとなります。このキーは、1〜6キーがA〜Fを直接入力できるモードとトグルするキーになります。

プログラムコマンド

-p、-i、-kオプションプログラムコマンドです。共通です。

大文字小文字区別します。

00キー入力
11キー入力
22キー入力
33キー入力
44キー入力
55キー入力
66キー入力
77キー入力
88キー入力
99キー入力
..キー入力
aAキー入力
bBキー入力
cCキー入力
dDキー入力
eEキー入力
fFキー入力
EEnterキー入力
++実行
-−実行
*×実行
/÷実行
CXクリア
FXレジスタの値にフォントサイズを変更
G逆数1/X
I#*キー入れ替え
K桁区切り表示のトグル
LLSTx実行
MCHS実行
RR↓実行
SX^2実行
T√実行
WXレジスタクリップボードにコピー
XX⇔Y実行
YY ^ X
Z10進数と16進数の基数切り替え
PPAUSE レジスタと現在のプログラムの状態表示 デバッグに使ってね
Bプログラム途中で終了 Break
上以外の文字プログラム終了 Breakに同じ

プログラムコマンドの例

こんな感じでショートカットプログラムしてください。RUNで実行です。

http://www.d2.dion.ne.jp/~ujiie/wzero3/calcr/0.16/imageprogram.jpg

  • BMIを計算する インプット Y:身長(cm) X:体重(kg) → アウトプット X:BMI
    -pX100/E*/
  • 緯度経度を実数にする インプット Z度 Y分 X秒 → アウトプット X:緯度経度の実数値
    -pE3600/X60/++EERRR

というわけで

私にはHP電卓はおもろい存在なのです。

物好きな方は使って見てね。

超絶にわかりやすいマニュアル

YHPのころの日本後マニュアルがあったので確保しておきました。

HP12C日本語マニュアル

非常にわかりやすいです。

スタックの挙動についてマニュアル188ページ(PDFでは190ページ)以降にすばらしい解説がありますので、ぜひお読みください。

スタックの挙動はこれに準拠しています。

ソース

というわけで、ソース後悔

全ソース

全部後悔

  1. eVC4++
  2. SP4
  3. PocketPC2003SDK

を入れれば見れますよ。

注意事項

  • [f]メニューを閉じる際、左カーソルキーで閉じると、もれなく演算×が行われてしまいます。いろいろ手を尽くしましたが回避方法がわかりませんでした。[f]メニューはソフトキーで閉じてください。申し訳ないです。
  • 小数点以下数字を思い切り入力すると思わぬ誤差が表示されます。Cのdoubleとprintfの%gの限界です。表示ルーチンを自作すればいいんでしょうけど今のところ予定はないです。すみません。
  • WithATOKで半角数字をOFFにしている場合は数字入力できません。今後対応できるか自信がありません。申し訳ないです。

アドエスで素早くTodayを表示する アドエスで素早くTodayを表示するを含むブックマーク

Winキー+アクションボタン→Today

とーたくとーたく 2008/03/05 00:02 オプション、マニアックに変えましたね。
>小数点以下0を入力し続けても表示されない不具合を修正。
これですが、0.005 までは表示がまともですが 0.0005とすると後ろに大量にゼロが出て、0.00005とすると表示がゼロで埋まります。あと、整数部分がこの例のように0の場合は小数点以下の0の入力中に文字が出てません。
なお、オプションは例の「-iIK15FC」です。これ私のユースケースですよね。ありがとうございます。

ujipujip 2008/03/05 12:23 オプションは趣味で修正しましたが、分かりにくいでしょうね・・・汎用性を考えたということですみません。
マニアックすぎて誰も使わないんだろうな・・・
0入力後、小数点以下の0が表示されない不具合は0.16bとしてリプレースしました。上のcalcr.CABからダウンロードしてください。
0.0005,0.00005の事象は以前から把握していました・・・ちょっと根が深く手間取りそうなので少し寝かせます。ご了承ください。
とーたく様、コメントいただき本当にありがとうございます。これからもよろしくお願いします(ペコリ)。

とーたくとーたく 2008/03/05 23:02 0が表示される件、確認しました。当方、最近の流行は0.666とか0.333だったので気がついてませんでした。
0.0005のケースは余計な0が表示されるだけで実害はありませんが、0.00005のケースは5が表示されないので数字がわからなくなってしまうのでこちらのほうが手当ての優先順位が高いですね。

こちらのほうこそ、ほとんどピンポイントで何人コレがほしい人間がいるのかという(すいません)ものを公開いただけたのですから、本当にありがたいことなのです。
今後もよろしくです。