HP 35s

機種の説明

HP35s

2007年発売.「式通り入力」ができない 機種なので情報系の学生には推奨できない機種になります. 外観と機種名は HP による世界初の関数電卓 HP35 を模したもので レトロでカッコいい.機能上の特徴はなんといっても HP 伝統の RPN (逆ポーランド記法)電卓ということです.通常の 2 項演算では 演算子を被演算数の間に書きます(中置記法)が,RPN では 被演算数を並べた後に書きます.

例:(1+2)×(4+5)   (中置記法)

  1 2+4 5+×  (RPN)

中置記法の電卓で数値を得るには最後に[=] キーを押します. あたりまえだろう,と言わないで下さい. RPN では演算キーを押した時に演算が行われるため [=] キーが不要になります. 電卓に [=] キーが無いので初めて見た人は驚くでしょう.

RPN で書かれた式はスタックと呼ばれるデータ構造で自然に処理できます. スタックは本を机に積み上げるように後に入れたものから先に出す データ構造です.最も新しく置かれた本の場所を top といい, 次の本が新しく top に積まれると今まで top にあった本は top の一個後ろという位置づけになります.top の本が取り出されると 後ろになっていた本が再び top に戻ります.

本機ではスタックの top (やその一つ奥) のデータに対して演算が行われるので RPN では演算子よりも被演算数を先に入力して スタックに積んでおいてから演算キーを押すわけです. 演算に使われたデータはスタックから取り除かれ, 演算結果がスタックの top に積まれます. 「データ構造とアルゴリズム」という授業を担当している者としては 非常に興味をそそられる仕組みです.

本機ではスタックの top にあたる 場所を X レジスタと呼びます.スタックに新しい 数値が積まれると X にあった値が一つ奥に移動します. これを Y レジスタと呼び,Y の奥が Z レジスタ,その奥を T レジスタと呼びます.本機ではスタックはここまでです. T のデータは新たにスタックに値が積まれると こぼれて消えてしまいます.

先ほどの例を本機で実際に計算する手順とスタックの様子を 説明します. X の値はいつでも書き込みができるのですが, まず最初の被演算数として [1] のキーを打ちます. 数字キーを押している間は入力した数値が確定しないのは どの電卓でも同じです. (2桁以上の数値を入力している途中かもしれないからです) 数値を確定するために [ENTER] キーを押します.ここで X の値が確定してスタックが一段押し込まれます. このためデータは Y に移動しますが,X にも同じデータが残ります.[ENTER] キーはデータをスタックに 積むためのキーですが,コピーする作用もあるのです. スタックすべてが空だった状態から操作を始めたとすると, この状態でスタックは以下のようになっています.

T0
Z0
Y1
X1

次に 2 番目の被演算数である [2] をキーインします.スタックの状況はこうなります.

T0
Z0
Y1
X2

これで 2 つの被演算数がスタックに乗ったので演算キー [+] を押します. Y, X の値が取り除かれて,計算結果が X に積まれるのでこの時点の スタックは以下のようになります.中値記法での最初の括弧の計算結果が スタックに保存されているわけですね.

T0
Z0
Y0
X3

次に 4 と 5 の和を求めるために同じように 4, 5 をスタックに 積みます.キーストロークは [4][ENTER][5] です.

T0
Z3
Y4
X5

4 と 5 を取り出して和を求め,結果を積むために [+] を押します.スタックはこうなります.

T0
Z0
Y3
X9

最後に [×] を押して計算終了です.X の値が計算結果になります.

T0
Z0
Y0
X27

ここまでの打鍵数は 9 回でした. 一般的な関数電卓で括弧つきの中値記法で入力すると最後の = まで入れて 12 回打鍵することになります. このようにRPN は括弧が不要で打鍵数が少ないことが特長です.

それでは例題を計算してみましょう. ここまでに紹介した機種と異なり本機はプログラム電卓なので 事前にプログラムを組めば複雑な計算が速くできるのは当たり前です. まずはプログラムを使わないで操作します. しかしこの電卓には log の底が e と 10 しかありません. 底が 2 の log を得るには毎回 log2 で割らなければならず,大変です. こういう場合はプログラム電卓なんだからプログラムを組めという 設計思想なのでしょう.簡単なプログラムなので 底が2のlogを求めるプログラムを作成し, それを使ったストローク数も調べてみました.

以下のキーストローク表記では黄色の 左シフトファンクションキーは [黄], 青色の右シフトファンクションキーは [青] と表記します. ところで,そもそもなぜ左と右なのか理解できません. 黄色のファンクションと青色のファンクションはそれぞれキーの 上と下に印刷してあるので「上シフト」,「下シフト」ならわかるんですがね. [黄] や [青] キーの後に表記されるキーの名前は キーの中央に書いてある文字ではなくその機能名で表記します. つまり [黄] の後ならキーの上に黄色で印刷されている文字, [青] の後ならキーの下側に青色で印刷されている文字を表記します. 例えば [LOG] は yx が中央に印刷されている キーの上に黄色で印刷されている左シフト(黄)ファンクションなので, LOG のキー入力は [黄] [LOG] と表記します.

log を使用する例題

本機の場合,[ENTER] キーで同じ値をコピーできるので, 例えば (2/3)log23/2 という逆数を使った式を 入力するより 2/3 を入力して [ENTER] を押して値を Y, X に入れ,X のほうのlog をとる,という元の式 -(2/3)log22/3 に従った入力のほうが効率的です. 正負の反転のために最後に [+/-] キーを押します. また,本機の特長として [.] [2] [.] [3] で 2/3 が入力できる, 分数の入力法があるのでそれを使うとスタックの使用を節約できます. (帯分数ならストロークも減らせます) まず,手順 1 の,

-((1/3)log21/3 + (2/3)log22/3)

を求め,メモリ A にストアする操作を始めます. まずはプログラムを使わないで入力する場合の入力です.

[.] [1] [.] [3] [ENTER]

この [ENTER] で 1/3 を Y と X に置きます.次に X の方に log を適用するのですが,log2 の関数を持たないため, 底の変換公式を利用して logeX を求めてから loge2 で割ることで求めます.

[青] [LN] [2] [青] [LN] [÷]

これでスタックには Y:1/3, X:log21/3 が入った状態なので乗算を 行い,その結果が X に入った状態にします.

[×]

次に X をスタックの奥に押し込みながら同様に 2/3 のほうの処理を行います.

[.] [2] [.] [3] [ENTER] [青] [LN] [2] [青] [LN][÷] [×]

これでスタックにも求められた 2 つの値の和を取り, 正負を反転させてメモリ A に記憶 すれば前半終了です.

[+] [+/-] [青] [STO] [A]

ここまでのキーストロークは 29 でした. 手順 2. はこれと同様なのでキーストロークは省略します.

A の値に 3/4 を乗じたものと B の値に 1/4 を乗じたもの の和を取れば完成です.

[RCL] [A] [.] [3] [.] [4] [×] [RCL] [B] [.] [1] [.] [4] [×] [+]

全部で 73 ストロークになりました. こうして見るとわかる通り,底の変換の為に毎回 loge2 で割るのは激しくウザいですよね. 本機の場合,底が 2 の log を求めるプログラムを使えっていう ことなのでしょう.本機ではプログラムメモリの先頭のプログラムは特等席で, なんと 1 キーで呼び出せてしまいます.自分の電卓では先頭に 底が 2 の log のプログラム(といっても X の log10 をとって log102 で割るだけ)を置いているので 最初からキーに割り当てられている loge や log10 より少ないストロークで log2 が計算できます.この状態なら手順 1, 2 それぞれを 19 ストロークで 行えるので総ストロークは 53 になります.HP すげぇ.

2 元エントロピー関数のプログラムを入れておけばさらに 簡単になりますが,プログラム電卓だからキリがないですね. でも 2 元エントロピー関数のプログラムぐらいは 入れておくとこの分野では便利です.

2進,論理演算を使用する例題

通常の10進モードで 170 を入力し,次に 2 進で 1111 を入力し, 論理演算の OR を行います.キーストロークは以下のようになります.

[1] [7] [0] [ENTER] [1] [1] [1] [1] [青] [BASE] [8] [黄] [LOGIC] [3]

合計 14 ストロークになりました.

2 進表示モードにしたら入力は 2 進として扱われるのか と思いきや,数値だけを入れると 10 進として扱われます.(10 と入力すると 1010b になる) 2 進として数値を入力したければ,何進の表示モードで あっても数値の後に [青] [BASE] [8] を打って 2 進であることを明示しなければ いけません.最初は使いにくい仕様だと思ったのですが, 表示モードによってデフォルトの基数が変わると, 例えば 2 進表示モードで 10 と打った状態で 10 進表示モードに移行して値を確定する場合, どちらの意図で打った数値として処理するべきか, 選択の余地があるように思います. だからデフォルトは 10 進と固定したのでしょう. プログラムのソースコードと同じと考えるとしっくりきます. これはこれで慣れると明解です. 通常モードから即 10 進,2 進混在の論理演算ができるというのは fx-375ES にも EL-509J にも無い利点です. 論理演算子の選択,表示基数の選択,入力した数字の基数の指定は いずれもメニューからたどらなければいけないので 覚えにくいです.

統計機能を利用する例題

1変数統計演算の例題

まず統計データをクリアします.

[青] [CLEAR] [4]

入力データの後に [Σ+] を押す事でデータを入力していきます.

[0] [Σ+] [3] [Σ+] [4] [Σ+] [4] [Σ+] [4] [Σ+] [4] [Σ+] [5] [Σ+] [5] [Σ+] [5] [Σ+] [5] [Σ+] [5] [Σ+] [5] [Σ+] [6] [Σ+] [6] [Σ+] [6] [Σ+] [6] [Σ+] [6] [Σ+] [7] [Σ+] [7] [Σ+] [9] [Σ+] [1] [0] [Σ+] [1] [0] [Σ+] [1] [0] [Σ+]

x の平均値を表示します.

[黄] [x, y]

合計 54 ストロークでした.同じ値を連続して入力する 簡単な方法が無いのが問題です.本機では 同じ数値が多く含まれるこのようなデータに対して平均をとる 方法として (x, y) = (値, 個数) という形の 2 変数のデータとして入力し, 加重平均をとるという方法があります.この方法なら 40 ストロークとなります.

2変数統計演算の例題

まず統計データをクリアします.

[青] [CLEAR] [4]

データを入力していきます.yの値, xの値,[Σ+] キーの順に押します.

[1] [.] [2] [ENTER] [1] [.] [5] [Σ+] [1] [.] [9] [ENTER] [2] [.] [1] [Σ+] [8] [.] [7] [ENTER] [9] [.] [3] [Σ+] [1] [.] [2] [ENTER] [0] [.] [9] [Σ+] [6] [.] [1] [ENTER] [5] [.] [5] [Σ+] [3] [.] [8] [ENTER] [4] [.] [2] [Σ+] [6] [.] [7] [ENTER] [7] [.] [1] [Σ+] [0] [.] [9] [ENTER] [1] [.] [1] [Σ+]

相関係数を表示させます.

[黄] [L.R.] [>] [>]

合計 71 ストロークでした.

総評

RPN 関数電卓に興味があるならお勧めです.

ただ,品質に疑問はあります.自分の購入したものはいきなり電池ボックス内の 接点金具が折れ曲がっていました.ピンセットで直したので問題はありませんが 見えない内部にも不安がよぎります.キータッチは評判通り快適です. 自分はチョークまみれの環境で使うのである種の耐久試験になりそうです. 問題が起こればここで報告します.

この機種をいきなり買うのは敷居が高いですが,Mac に標準で 入っている電卓に RPN モードがあるので試してみるといいです. スマホにも HP 15C などの往年の RPN 名機のエミュレータがあるそうです. 試験では使えませんが RPN を試すのにはいいでしょう.

忘れていましたが,本機は RPN 専用機ではなく, 普通のライン表示形式モードも選べます.RPN を使わないなら ほかにもっと安価でいい電卓がありますが, デザインに惹かれたのならそういう使い方もアリだと思います.


Updated in June 2, 2017, Yamamoto Hiroshi Web