Hatena::ブログ(Diary)

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

2008-03-26

スタック電卓 calcr ver1.00 → ver1.01 スタック電卓 calcr ver1.00 → ver1.01を含むブックマーク

※2010年11月 HYBRID W-ZERO3に対応させました(ver1.01)。

WindowsMobileプログラミング徹底理解のおかげで、昨日までいじっておりました。

何とか形になりました。

感謝です。

Windows Mobileプログラミング徹底理解

Windows Mobileプログラミング徹底理解

というわけで正式版となります。

変更内容

  • 画面回転にさくっと追従。さくっときりかわります。(タイマーを使わなくてもよくなった。)
  • SIPの表示にさくっと追従。さくっと表示されます。
  • 文字列を扱う際、バッファオーバーフロー対策されたものに変更。
  • 数値表示ルーチン(なつかしい響き>ルーチン)の不具合修正。

以下

再掲示。

ちょっとディープな電卓

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

きっかけ

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

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

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

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

ないなら作ろう!

できる範囲でorz

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

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

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

超簡素。

通常モード。実数が扱えます。

f:id:ujip:20170205184316j:image

小さな画面モード。

裏側に隠れたウィンドウを表示させながら計算できます。Xレジスタのみ表示の「漢モード」です。

f:id:ujip:20170205184533j:image

16進数の計算もできます。

16進数計算モード時は、テンキーの1〜6でA〜Fを入力できるよう、[*]キー( "-iI"オプションを指定しているときは[#]キー)でトグルします。

メニューは左ソフトキー [f] からたどります。

右ソフトメニュー [CustomKEY]は通常は [R↓] として機能しますが、起動オプション "-k" でカスタマイズできます。

f:id:ujip:20170205184732j:image

プログラムショートカットへ"-p"オプションで指定してください。

例はBMIを計算するプログラムです。[f]-[RUN]で実行。(画面は0.16)

f:id:ujip:20170205184917j:image

動作

プログラムの呼称

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

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

インストール

  1. http://ujip.ninja-web.net/wzero3/calcr/index.htmlからCABファイルをダウンロード
  2. アドエスで実行してインストール
  3. 普通はこれでおしまい。

使い方

例を使いながら。

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を直接入力できるモードとトグルするキーになります。

キー

キー入力参考
数字キー数字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]キーフルキーボードから
Qキー画面切り替えフルキーボードから。「漢」のQuanより(うそ)
Rキー[R↓]キーフルキーボードから
Sキー[X^2]キーフルキーボードから
Tキー[√]キーフルキーボードから
WキーXレジスタクリップボードにコピーフルキーボードから,Ctrl+Cは使えません、Wでコピーしてください。
Xキー[X⇔Y]キーフルキーボードから
Yキー[Y^X]キーフルキーボードから
Zキー10-16 基数の10進数と16進数トグルフルキーボードから
[OK]キーアプリケーション終了最小化じゃないです。

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

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

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

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

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

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

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

プログラムコマンド

-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実行
Q画面切り替え、「漢」のQuanより(うそ)
RR↓実行
SX^2実行
T√実行
WXレジスタクリップボードにコピー
XX⇔Y実行
YY ^ X
Z10進数と16進数の基数切り替え
PPAUSE レジスタと現在のプログラムの状態表示 デバッグに使ってね
Bプログラム途中で終了 Break
上以外の文字プログラム終了 Breakに同じ

例:ショートカットオプション "-p"

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

f:id:ujip:20170205184917j:image

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

例:ショートカットオプションに "-iIK15FC" を指定したときの挙動

とーたく様よりの要望にお応えし以前用意した "-ck" "-f" オプションは廃止し、ver0.16より -i オプションに統合しています。

同様の挙動をするショートカットオプションの記述は "-iIK30FC" となります。(わかりにくいなぁ)

f:id:ujip:20170205190703j:image

※画面では "-iIK15FC" ですが、ver0.18より "-iIK30FC" にしてください。(ぺこり)

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

"-k"について

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

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

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

  • "-kM"とした場合、Mは[CHS]ですので、右ソフトキーは[CHS]として働きます。
  • "-k000"とした場合、右ソフトキーは"000"を一度に入力するキーとなります。

というわけで

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

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

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

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

HP12C日本語マニュアル

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

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

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

ソース

ソース後悔

もうほんとうにみなさんのおかげです。

全ソース

全部後悔

  1. eVC4++
  2. SP4
  3. PocketPC2003SDK

を入れれば見れます。

注意事項

  • "-iQ" オプションでいきなり小さい画面にして起動できますが、一瞬大きな画面が表示されます。びっくりしないでください。
  • [f]メニューを閉じる際、左カーソルキーで閉じると、もれなく演算×が行われてしまいます。いろいろ手を尽くしましたが回避方法がわかりませんでした。[f]メニューはソフトキーで閉じてください。申し訳ないです。
  • WithATOKで半角数字をOFFにしている場合は数字入力できません。今後対応できるか自信がありません。申し訳ないです。

とーたくとーたく 2008/03/27 00:56 1.00おめでとうございます。
日々計算に使わせていただいてます。RPNのある生活はやはりよいですなぁ。うんうん。

yasuhoyasuho 2008/03/27 11:00 正式版リリースおめでとうございます!
後ほどダウンロードして使わせていただきますね。

ujipujip 2008/03/27 21:58 利用していただけるだけでうれしい私です。

watanabewatanabe 2010/06/14 16:39 ご連絡先が見当たらず、コメント欄から失礼いたします。
星羽様のご推薦でご連絡させていただきました。
弊社はただ今、フリーアプリのマーケット申請無料代行を行っております。
ご興味あればご連絡いただけましたら、詳細をお送りさせていただきます。
ご連絡をお待ちしております