メーカー | HP Inc.(発売当時は、Hewlett-Packard) | |
型名 | HP 35s | |
種別 | 関数電卓(プログラミング可能) | |
発売開始 | 2007年 | |
製造終了 | 2021年?(2021年9月1日に確認したところ、HP Inc.社の 電卓ページ に表示されなくなった) | |
寸法 | 奥行 158 mm × 幅 82 mm × 厚さ 18.2 mm(メーカー公表値。実測値と大差なし) | |
重量 | 125g(公表値)、135g(電池なしの実測値)、141g(電池ありの実測値) | |
入力方式 | 4 Level RPN、ALG(ライン表示方式) | |
画面 | 黒色液晶 14文字×2行(1文字=5×7画素)+状態インジケーター24個 | |
CPU | Sunplus(Generalplus) SPLB31A (MOS 8502ベースと言われている) | |
RAM | 32KB(ユーザー利用可能は 30,192 bytes) | |
ROM/Flash | 不明 | |
電源 | CR2032×2個 | |
プログラミング言語 | キーストローク言語 | |
公式ページ | 2021年9月1日に確認したところ、HP Inc.社の製品紹介ページが消滅していた。 | |
説明書URL |
HP 35s scientific calculator user's guide
HP 35s 関数電卓 ユーザーズガイド |
|
著者の購入年 | 2020年5月 | |
著者の購入価格(購入店) | 8,311円(Amazon Japan) |
本レビューを理解するためには、 4 Level RPN の知識が必要です。それと HP-42S と比較することが多くなっています。
HP 35s は、世界初のポケットに入る関数電卓 HP 35 の発売35周年記念電卓として発売されたプログラマブルRPN関数電卓です。
2007年に発売されたとき、HP 35s 自体が記念電卓なのにさらに限定生産モデルまで発売されていました。
しかし、HP 35s は、HP 35 との関連性はありません。HP 35s の実態は、hp 33s の後継機種です。
2021年12月現在、現行製品のRPN関数電卓として唯一のものとなっていますが、
もしかしたら2022年に HP 35 発売50周年として新型が出る可能性があるかもしれません。
(2022年12月31日になっても後継機の情報がないので、どうやらHP 35sがHP最後のRPN関数電卓になるようです)
HP 35s は、HP-32S を祖先としたプログラマブルRPN関数電卓です。 以下のような変遷をたどっています。
※数値微分、総和、総乗の機能はない。
本機 HP 35s は、電源をOFFにしてもプログラムを含めた全データを維持できます。 データの消去をする操作をしない限りデータが消えることはないのです。 ただし、データはRAM上に保持されているので、電池が完全に切れるとデータも消えます。
それがどうしたのかと言われるかもしれません。 しかし、日本の多くの関数電卓の場合、電源をOFFにすると、設定と変数を除いたほとんどのデータが勝手に消えてしまいます。電池が切れていなくてもです。 おそらくは、日本の資格試験(土地家屋調査士試験など)に対応するためと思われます。
日本の関数電卓でもSHARPの場合、電源をOFFにしてもデータが消えない機種があります( EL-5160J , EL-509T など)。 ところが、それらのSHARPの関数電卓でも計算モードを変更すると、一部のデータが勝手に消えてしまいます。 SHARPの関数電卓のデータ維持の仕様は、中途半端な感じです。
アメリカ合衆国だと、本機 HP 35s のような勝手にデータが消えない関数電卓の方が主流です(全部ではない)。 以前紹介した TI-36X Pro も同様です。
本機 HP 35s は、日本の関数電卓と違って計算モードの切替が不要です。
日本の関数電卓の場合、複素数、行列、統計などの計算をするときにそれぞれの計算モードに切替える必要があります。 日本の関数電卓で計算モードの切替をすると、変数を除いたデータが初期化されてしまうことが多いのです。
一方、本機 HP 35s は、日本の関数電卓と違って計算モードの切替が不要です。 全ての機能が統合されているので、そもそも計算モードが必要ないのです。
HP 35s は、プログラム入力モードや式リスト(後述)へ切替わることはありますが、それらは計算モードではないのです。 しかもそれらのモードから通常の計算画面に戻ってもデータが消えることはないのです。
HP 35s のキーボードは、2つのシフトキー(左シフトと右シフト)を搭載することによって、メニュー操作をしなくても呼び出せる機能を増やしています。
HP 35s のキーは、HP の電卓に多くみられる押されたキーが奥側に倒れるキーです(カーソルキー除く)。 このようなキーは、押した時に安定感があり、クリック感を明確に感じることができます。
しかし、カーソルキーは、奥側に倒れるキーではなく、押すと下がるだけの普通のキーです。
カーソルキーを押し込むと、グラグラして安定して押すことができないのです。 しかも押し込んだ時のクリック音が甲高くて筆者には不快な音に感じます。
キーの印字にも問題があります。 黒い金属板に印刷された黄色い文字は見やすいのですが、キーに直接印字された赤と青の文字が見辛いのです。
上の写真だと赤と青の文字が鮮明に写っています。 しかし、かなり明るい光を照射しないとここまで鮮明に見えることはないのです。 実際に肉眼で見た時はかなり見辛く感じます。もっと明るい色で印刷すれば見やすかったことでしょう。 特に!の文字が肉眼だと視認し難いのも気になりました。肉眼だとただの縦線のように見える時があります。
アルファベット入力をするときに[RCL]キーで英字キー(赤い文字が印刷されたキー)を有効にする必要があります。 しかし、[RCL]キーにそれを示す文字が印刷されていないのは問題だと思いました。
HP 35s は、16種類のメニューを搭載しています。下の写真の赤い線で囲った部分がメニューです。
R↓とR↑は、ALGモードのときだけスタックレジスタの内容を表示するメニューになります(RPNモードのときはスタックの回転)。
R↓とR↑は、どちらも同じメニューを表示します(後述)。
見た目だけでメニューかどうかを判別することはできないので、どれがメニューなのか覚えておく必要があります。
HP 32SII までは、文字の背景の色でメニューかどうか区別できたのですが、hp 33s から区別できなくなったのです。
下の写真は、左シフト+[<]と操作して表示した DISPLAY メニューの一例です。
カーソルキーで項目を選択してから[ENTER]キーを押すのが基本です。 あるいは、項目の前にある数値に対応するキーを押しても項目を選択できます。 項目を選択した後の操作は項目によって異なるので、割愛します。
HP 35s の各メニューの構造は比較的単純で HP-42S のような迷路のように複雑な構造になっていません。
HP-42S より機能が少ないことと、2つのシフトキーで呼び出せる機能が多いため、メニューが単純になっていると思われます。
HP 35s の初期設定は、RPNモードという逆ポーランド記法を使った操作になります。
一方でALGモードという中置記法の操作方法を使うこともできます。つまり、他社の非RPN関数電卓に近い操作方法を使うことができます。
ALGモードのとき、[ENTER]キーが[=]キーの代わりになります。
しかし、HP 35s のALGモードには、問題があります。数式単位の履歴が取れないのです。
他社の非RPN関数電卓では数式の履歴が取れることが多いのです(標準入力方式の関数電卓を除く)。
下に TI-36X Pro の計算履歴の様子を示します。履歴中の式を変更して再計算もできます。
ALGモードでもスタックが使えます。
ただし、RPNモードのときと用途が異なっています。計算結果の数値を格納する場所として使われることになります。
ALGモードのときに[R↓]キーあるいは右シフト+[R↓]キー(R↑)を押すと、スタックレジスタの内容を確認できるメニューが表示されます(下写真)。
カーソルの初期位置は、[R↓]キーのときは Y、右シフト+[R↓]キー(R↑)のときは T になります。
最も新しい計算結果がXレジスタに入っています。最も古い計算結果がTレジスタに入っています。
通常の関数電卓だと、数値が液晶の幅の文字数を越えそうになった場合、仮数部を縮小して表示します。 前機種の hp 33s も同様に仮数部を縮小して表示します。
しかし、本機 HP 35s は、数値が液晶の幅を超えても仮数部を縮小しません。
そのため、表示設定によっては、指数が画面外に表示されることがあり、非常に見辛いものとなっています。
特に表示モードをALL(仮数部12桁表示)にしたときにこの問題がよく発生します。
右カーソルキーを押すと、画面外の部分が表示されます。左カーソルキーを押すと元の表示に戻ります。
指数の一部が画面外に表示されている | 右カーソルキーを押すと、画面外を見ることができる |
仮数部を常に全桁見れるという利点があるように見えますが、そのような役目はSHOW機能で行えるので、何故このような仕様になったのかは謎です。
下の写真はSHOW機能で仮数部全桁を表示しているところです。SHOW機能は、位取りをしない仕様になっています。
複素数も同じ問題を抱えています。複素数の実部と虚部の桁数が長いと、下の写真のように画面からはみ出した状態で表示されます。
右カーソルキーを押すと、画面外の部分が表示されます。
複素数の一部が画面外に表示されている | 右カーソルキーを押すと、画面外を見ることができる |
複素数の場合、SHOW機能を使うことができないので、右カーソルキーを押して、画面外の部分を表示するしかありません。
ベクトルでも同様の問題が発生します。
「主な機能」に書いたように関数電卓として十分な機能を持っています。
微分、総和、総乗はないのですが、それらの機能が必要かどうかは人によるでしょう。
この節では、筆者が気になったことを書きます。
HP 35s のスタックは、4 Level RPN の一種ですが、前機種 hp 33s よりも進化したスタックになっています。
下図のように HP 35s は、1個のスタックレジスタに3つの実数を格納できるようになっています。
hp 33s の場合、複素数を表現するためにスタックレジスタを2個使う必要があったのです。
一方、HP 35s は1つのスタックレジスタだけで複素数や2/3次元ベクトルを扱えますので、かなり進歩したといえます。
しかし、スタックで行列と文字列は扱えないので、HP-42S に及ばないのです。
数値範囲は、-9.99999999999 × 10
499
から +9.99999999999 × 10
499
までと日本の関数電卓よりも広くなっています。
日本の関数電卓だと、-9.999999999 × 10
99
から +9.999999999 × 10
99
までのものが多いからです。
数値の精度は12桁です。内部精度は15桁となっていますが、1手順分の計算をしている途中の精度と思われます。
スタックレジスタや変数は12桁精度なので、計算結果は12桁になります。
そのため、手順の多い計算をすると、12桁内に誤差が蓄積されることがあります。
前述のように HP 35s は、hp 33s よりも複素数の扱いが非常に容易になりました。
hp 33s の場合、Yレジスタに虚部、Xレジスタに実部をそれぞれ入れてから複素数計算専用の操作をする必要がありました。 複素数が2つ必要なときは、Tレジスタに虚部、Zレジスタに実部をそれぞれ入れて、もう一つ複素数を作ります。 結果は、YレジスタとXレジスタにそれぞれ虚部と実部が格納されます。 そのため、Yレジスタに虚部が入ることを覚えておかないと、結果を読むことすらできなかったのです。
hp 33s よりも古い HP-42S (1988年) の方が hp 33s よりも複素数の扱いが進んでいました。 HP-42S は、HP 35s と同様に1つのスタックレジスタに複素数を格納することが可能でした。 しかし、入力方法が面倒でした。 Yレジスタに実部、Xレジスタに虚部をそれぞれ入れてから[SHIFT][STO](COMPLEX)と押すと、Xレジスタに複素数が生成されるという方法でした(入力時のレジスタの使い方が hp 33s と逆になっていた)。
HP 35s は、hp 33s や HP-42S よりも複素数の入力方法が改良されていて、実部を入力してから [i]キーを押し、そして虚部を入力するだけで複素数が入力できます。
もちろん、1つのスタックレジスタに複素数を格納することが可能です。
HP 35s は、hp 33s と違って複素数専用の演算操作をしなくても複素数の四則演算や関数計算が可能です。
ただし、HP 35s で複素数を使用できる関数は、べき乗、e指数関数、自然対数、三角関数に限定されます。 常用対数、逆三角関数、双曲線関数、逆双曲線関数、ガンマ関数において複素数は使えません。 HP-42S の場合、ガンマ関数で複素数を使えないものの常用対数、逆三角関数、双曲線関数、逆双曲線関数でも複素数を使えます。 そのため、HP 35s は未だに HP-42S より複素数の対応が遅れていると言えます。 とは言え、HP 35s の複素数対応は、日本の関数電卓(たいてい複素数の四則演算しかできない)よりも進んでいることは間違いないでしょう。
複素数の表示形式を直交座標と極座標から選択できます。ただし、2種類の座標表示を混在させることはできません。
直交座標表示 | 極座標表示 |
ところが、下の写真のようにプログラムにおいてのみ直交座標と極座標を混在させることができます。
HP 35s からベクトルを扱えるようになりました。3次元までのベクトルが使えます。 hp 33s でも複素数を2次元ベクトルの代用として使えたのですが、3次元ベクトルは扱えなかったのです。
利用できるベクトル計算は、加減算、ベクトルにスカラを乗除算する、絶対値、内積です。
外積の計算はできないので、説明書に外積計算をするプログラムが掲載されています。
HP 35s から改悪された機能です。欠陥と言われても仕方がないほど使いにくくなっています。 前機種 hp 33s の基数変換は、普通に使えたのですが。
HP 35s の基数変換は、2/8/10/16進数の変換ができます。2/8/16進数のとき、整数しか計算できません。
通常の関数電卓と同様に何進数で計算するのかをBASEメニュー(下写真)で設定してから計算を始めます。
1: 10進数(通常時)、2: 16進数、3: 8進数、4: 2進数 |
しかし、ここで異常な仕様が使用者に襲いかかります。
何と
2/8/16進数のいずれの設定にしても入力した数値は10進数として解釈される
というトンデモない仕様なのです。
そのため、数値の末尾に何進数なのかを示す記号を付ける必要があります。
2進数、8進数、16進数のそれぞれの数値の末尾に b, o, h を付けるのです(10進数の末尾にdを付けることもできるが、基数変換で使う必要はない)。
数値の末尾に付ける記号 | 16進数の例 |
これではBASEメニューで何進数なのかを設定した意味がないと思われるでしょう。 一応、計算結果が指定した基数(n進数)で表示されるという意味があります。 さらに16進数に設定した時だけ16進数の入力ができます。
しかし、この仕様だと入力が面倒で仕方がありません。どうしてこのような仕様になったのでしょうか? どうやらこの電卓の仕様を決めた人は、HP 35s のプログラミングにおける基数(n進数)の仕様と一緒にしたかったようです。
前機種 hp 33s の場合、プログラム中の数値はBASEメニューで設定した基数(n進数)で表示されるだけでした。
例えば、hp 33s のBASEメニューで16進数を選択した状態でプログラムを表示すると、プログラム中の数値は全て16進数で表示されます。
しかし、その仕様では不便ということで HP 35s のプログラムの場合、数値の末尾に d, h, o, b を付けることによって下の写真のように基数の異なった数値を混在して表示することができるようになったのです(数値の末尾に何も付けない時は10進数)。
このような仕様はプログラムにおいては有益でしょうが、基数変換で同じことをさせられても使いにくいだけです。
他にも奇妙な仕様があります。 HP 35s のキーボードに赤字でアルファベット A〜F が印刷されたキーがあるのですが、16進数を入力するときにこれらのキーは使えないのです(hp 33s のときは使えた)。
16進数を入力するための専用のキー(下写真)を使わないといけないのですが、それらのキーに16進数を入力できることが分かるような印刷は何もないのです。
[SIN]から[1/x]が16進数入力用のキーです。左端の[SIN]は、16進数のAです。右端の[1/x]は、16進数のFです。
しかも各キーに赤字で H, I, J, K, L, M と印刷されているので、それらが16進数の A, B, C, D, E, F の入力に使われるのは、非常に違和感があります。
この仕様も分かりにくくて混乱します。
HP 35s は、RPN(逆ポーランド記法)関数電卓ですが、中置記法の式を扱う機能を持っています。
それが「式リスト」です。前々機種の HP 32SII (1991年) から搭載された機能です。
通常の計算画面で中置記法の式を入力することはできないのですが、式リストとプログラムだけで中置記法の式を入力できます。
この機能に関しては、HP-42Sよりも優れています。
式リストは、[EQN]キーを押すと起動できます(液晶画面のEQNインジケーターが点灯します)。
下写真の式リストは、登録された2つの式を表示しています。2行目に表示した式が操作対象となります。
式中に変数(英大文字1文字)が使えます。さらに複素数、分数、ベクトルも使用できます。
登録した式は以下のことに使えます。操作方法はかなり混乱しています。
1, 2, 3の機能を実行すると以下のような動作をします。
式中に変数があると、自動的にプロンプトが表示されて、表示した変数の値を入力するように促します。値を入力してから[R/S]キーを押します。
変数の数と同じ回数プロンプトが表示されます。入力が全部終わると、計算が始まります。
そのため、プログラムを組む必要がなく式の計算ができます。
1の機能が最もよく使われるでしょう。他社の関数電卓も1と類似の機能を持っています。
CASIOはCALC、SHARPはALGB、TIはexpr-evalという1と類似の機能を持っています。
しかし、HP 35s の方が変数と記憶できる数式の数が圧倒的に多いので、遥かに強力です。
それとCASIOの関数電卓と違って電源を切っても式が消えることはありません。
ちなみに式リストの中に一次連立方程式を解く機能が入っています(下写真)。
奇妙な仕様ですが、他にこの機能を入れる場所がなかったのでしょう。
"2*2 lin. solve"が2元一次連立方程式(2変数)、"3*3 lin. solve"が3元一次連立方程式(3変数)です。
2*2や3*3の表記を見ると、2×2や3×3の行列を利用して一次連立方程式を解いていることが分かりますが、HP 35s に行列計算の機能がないことに注意する必要があります。
この一次連立方程式を解く機能は、使いやすいとは言い難いものです。
本機の場合、一次連立方程式の係数と右辺の値の数だけプロンプトが表示されるからです(
SHARP EL-509T
も同じ問題を抱えている)。
CASIOの自然表示関数電卓だと一次連立方程式の係数と右辺の値を行列形式で入力できるので、分かりやすくなっています。
SOLVE(求解)と数値積分は、式リストから呼び出すのが通常の使い方です。
式リストの中の式だけではなく、プログラムを式の代わりに使うこともできます。 そのときは、左シフト+[R/S] (FN=) という操作をしてプログラムのラベルを登録します。 すると、そのラベルから始まるプログラムが式の代わりになります。 範囲によって式が変化する関数を扱う場合、その式をプログラムで表現するしかないので、この方法が必須になります。
SOLVE は、数式の解を求めます。 数式が等式(X = A + B のような等号のある式)でないときは、その式が0になるときの解を求めます。
SOLVE を実行する前に2つの初期推測値を入れる必要があります。この2つの値は同一でもかまいません。
基本的には、複数の解がある方程式でも解は一つしか求められない仕様になっています。 しかし、2つの初期推測値を変更することによって別解を求めることができる可能性があります。 初期推測値が2つ必要なので、ニュートン法ではなくて二分法なのでしょうか? 説明書にはそこまで書かれていないので何とも言えません。
数値積分は、式を指定された上限と下限で積分して結果を数値として求めます。
数値積分を実行する前にYレジスタに下限、Xレジスタに上限を入れます。 そして、式リストの中に登録されている式を液晶画面の2行目に表示してから左シフト+[EQN]キーで数値積分を起動します。 数値積分の精度は、表示モードによって変化します。表示モードで指定した桁数しか精度を保証しないのです。 つまり、表示桁数を少なくすると、精度は下がります。その反面、計算にかかる時間は短縮できます。
ちなみに SOLVE は、数値積分と違って表示モードによって精度が変化しないという仕様になっています。
この仕様は、HP 32S (1988年) から引き継いだものですが、ちぐはぐな感があります。
統計計算の機能は、各種合計(Σx, Σy, Σx 2 , Σy 2 , Σxy)、母集団の標準偏差、標本の標準偏差、平均、加重平均、回帰分析(線形回帰のみ)です。 最大2変量(xとy)を統計計算に使えます。
母集団の標準偏差があるのは、HP-42S よりも良い点です。 その反面、回帰分析として線形回帰しかないので、4種類の回帰分析を持つ HP-42S に及ばない点もあります。
本機 HP 35s の統計計算機能は、HP-42S (1988年) と同様に時代遅れに感じます。 表形式でデータ入力することができません。 データを入力する毎に統計レジスタ n, Σx, Σy, Σx 2 , Σy 2 , Σxy を更新して、入力されたデータを廃棄する仕様になっているからです。 そのため、データの訂正に制約が多い仕様になっています。
データを入力した直後なら最後の1回分のデータを取消しできます。LAST Xレジスタ(演算前のXレジスタの内容を保存するレジスタ)とYレジスタに最後に入力したデータが残っているからです。
そのため、右シフト+[ENTER]キー(LAST X)と操作して、Xレジスタを復元してから[Σ-]キーを押すと最後の1回分のデータを取り消しできます。
しかし、最後ではないデータ入力を間違えたとき、間違えたデータを覚えていないと修正できないのです。 打ち間違えたデータを覚えていることはマレなので、現実的には最後のデータ以外を修正するのは難しいでしょう。
HP 35s の統計計算機能は、祖先の HP 32S (1988年) からほとんど変わっていないのです。 HP 32SII (1991年) から標本の標準偏差に加えて、母集団の標準偏差が追加されただけです。 それから進化せずに HP 35s に至ったのです。そのため、時代遅れな感は否めないものとなっています。
ここではプログラミング機能の概要を紹介しますが、プログラミングができるようになるほどの説明はしません。
HP 35s のプログラミング言語は、キーストローク言語の一種です。 キー操作の手順を記述するようにプログラミングを行います。 ところが、条件分岐命令やループ命令なども用意されていますので、単純にキー操作を再生するよりも高度なことが可能です。 ただし、リアルタイム動作をするプログラムを作ることはできません。
プログラムを書く前にRPNモードで実行するのか、ALGモードで実行するのかをあらかじめ決定する必要があります。 RPNモードで書いたプログラムは、ALGモードで正常に動作しない可能性があるからです。その逆も同様です。 プログラムがどちらのモードで動くのかを明確にするためにプログラムの先頭にRPN命令あるいはALG命令を書くこともできます。
できれば、角度単位を指定する命令も書いた方がいいでしょう。DEG命令、RAD命令、GRAD命令を使うことができます。
プログラミングにおいて、以下の記憶領域が使えます。
HP 35s において、用途が決まっているものをレジスタ、汎用的なものを変数と呼んでいるようです。
レジスタ、変数、フラグは、静的に存在します。ただし、無名間接変数は、動的に生成されます。
HP-42S のように任意の変数名を付けることはできません。
フラグ0から4は、1bitの記憶領域として使えます。フラグ0から4の状態は、液晶に表示されます。
フラグ0から4のいずれかのフラグがセットされたとき、そのフラグに対応する数値が表示されます。
フラグ5から11は、電卓の一部動作の設定を行います。
HP 35s のプログラミング機能の最大の特徴は、プログラム中に中置記法の式をそのまま記述できることです。 この機能は、HP 32SII (1991年) から採用されています。
式が実行されたときの動作は、フラグ11の状態によって異なります。フラグ11のセットとクリアは、それぞれ"SF 11"と"CF 11"命令で行えます。
上の動作のためにフラグ10がクリアされている必要があります。フラグ10がセットされていると、式がメッセージ(後述)と見なされるからです。
下の写真は、プロンプトの一例です。
このようにプログラムの中に中置記法の式を書けるので、可読性の良いコードが書けます。
HP 35s のプログラミング機能は、HP-42S (1988年) よりも低機能ですが、この点は HP-42S よりも進んでいます。
前機種の hp 33s は、長いプログラムを書くのが困難という欠点がありました。 hp 33s の場合、分岐先として英大文字1文字(つまり26種類)のラベルしか使えなかったので、分岐先が26箇所しか存在できないのです。 そのため、長めのプログラムを書くと、分岐先としてのラベルが不足してしまうのです。
HP 35s は、hp 33s のその欠点が改善されています。 ラベルの種類は、hp 33s と同じ英大文字1文字(26種類)なのですが、ラベルに加えて行番号が使えるようになったのです。
上の写真は、ラベルと行番号の関係を示しています。 "LBL A" は、ラベルAを定義する命令です。 A002は、ラベルAの2行目という意味になります。
行番号が1から999まで使えるので、余程長いプログラムでない限り、一つのラベル内でプログラムを完結させることが可能になったのです。 そのため、1ラベル=1プログラムという使い方ができるようになったのです(ただし、説明書のプログラム例は、そうなっていないものもある)。
理論上、ラベル26種類×999行+ラベルなしプログラム999行=26,973行のプログラムが書けることになります(ラベルなしプログラムからラベルありプログラムへ分岐することが可能。しかし、その逆は不可)。
しかし、プログラムに使えるメモリは 30,192 bytes なので、そのような長いプログラムを書けるかどうか疑問です。
さらにプログラムを外部保存することはできないので、極端に長いプログラムを書くことは現実的ではありません。
HP-42S は、プリントすることができたのですが、本機 HP 35s はそれすらできないのです。
ちなみにラベルは、グローバルラベルしかありません。 つまり、HP-42S のようなローカルラベルがないので、ルーチンの内部に隠蔽されたラベルというものは存在しません。
HP-42S のように任意の名称のラベルを使うことができないので、ラベルについては HP-42S よりもかなり制約があると言えます。
間接アドレッシング (Indirect addressing) は、変数Iと変数Jの値をアドレスとして変数、ラベル、統計レジスタ、そして無名間接変数にアクセスする機能です。 hp 33s までは変数iという間接アドレッシング専用の変数しか使えなかったのですが、HP 35s から変数Iと変数Jの2つを使うようになったのです。
プログラム中で間接アドレッシングは、(I)と(J)で表現されます。(I)は、変数Iをアドレスとして間接アドレッシングを行うという意味です。(J)も同様です。
変数Iあるいは変数Jの値によって、アクセスできる対象が異なります。
上写真のSTO(I)は、(I)で指定された変数・レジスタにXレジスタの値を書き込むという意味です。
SOLVE(J)は、(J)で指定されたラベルのプログラムを数式としてSOLVE(求解)する機能です。
ただし、分岐命令(XEQ, GTO)で分岐先ラベルとして(I)と(J)は使えません。 ループ命令で(I)と(J)を使うことができるのですが、分岐先ラベルとして使えず、ループカウンタ変数として使うことができるだけです。 このように間接アドレッシングを使ってラベルにアクセスする機能は、用途が限定されている感があります。
無名間接変数(Unnamed indirect variables)は、HP 35s から追加された新機能です。 "Unnamed indirect variables"を直訳すると「命名されていない間接変数」となります。 HP 35s の日本語マニュアルだと「名前のない間接変数」と呼ばれているのですが、筆者は「無名間接変数」と呼びます。
無名間接変数は、動的に生成・消滅します。最大801個まで生成できます。 無名間接変数1個毎に 37 bytes のメモリが必要です。 最大数の801個を生成したとき、29,637 bytes のメモリが必要なので、ユーザー利用可能メモリ(30,192 bytes)のほとんどを使います。
無名間接変数の動的な生成・消滅の仕組みは、理解しにくいものです。 そもそも説明書に詳細が記述されていないので、自分で試行錯誤して動作を調査しました。
このように0を書き込んでも必ず無名間接変数が消えるわけではないので、注意が必要です。
ただし、使わなくなった無名間接変数に0を書き込む習慣をつけておけば、無名間接変数が動的に消滅できる可能性が高くなります。
手操作で無名間接変数を削除する場合、CLEARメニューを開いて、「6 CLAERx」を選択します。 3桁のアドレスを入力すると、そのアドレスより大きな無名間接変数が全て消去されます。
存在しない無名間接変数を参照するとエラーになります。
HP 35s は、HP-42S のALPHAレジスタような文字列を格納する変数を持ちません。そのため、文字列の操作はできないのです。
ただし、メッセージ(固定文字列)を表示することができます。 プログラム入力中に[EQN]キーを押すと、式の入力が可能になります。 そのとき、式としてメッセージを書いてもエラーになりません。 プログラム中の式は、入力時に式の文法を検証されないので、メッセージを書いてもエラーにならないのです。 逆にメッセージとして数式を書いても良いのです。数式をメッセージとして表示できます。
下の写真は、プログラム中に書かれたメッセージ"HELLO!"です。
しかし、HP 35s に式なのかメッセージなのかを伝える必要があります。 フラグ10を使って、HP 35s に式なのかメッセージなのかを伝えることができます。 フラグ10がクリアされているときは、式として実行されます。 フラグ10がセットされているときは、メッセージとして表示されます(写真の"SF 10"は、フラグ10をセットする命令です)。 通常、フラグ10はクリアするべきです("CF 10"命令でクリアできます)。
フラグ10がセットされた状態でメッセージが実行されると、メッセージが表示され、プログラムは停止します。[R/S]キーを押すと、続行します。
プログラム中のメッセージの後ろにPSE命令を書くと、1秒間だけメッセージを表示して、自動的にプログラムを続行します。
プログラムから式リストの中にある式を使うことはできません。 そのため、プログラムから SOLVE と数値積分を使うときは、式をプログラムとして書く必要があります。 そのプログラムのラベルをFN=命令で指定してから SOLVE と数値積分を呼び出す必要があります。
電池フタがあるので、交換が比較的容易です。ただし、電池を取り出すための細長い棒が必要です。 筆者は精密ドライバーを使っています。
2個の電池は並列に繋がっているだけです。そのため、電池が切れる前に1個ずつ交換すると、メモリ内容を維持できます。
仕様上は、電池を2個同時に抜いても2分ほどメモリを維持できることになっています。 しかし、自分の HP 35s で試してみると、1分程度しか維持できませんでした。 電池を2個同時に抜くのは避けるべきでしょう。
HPのRPN電卓に総じて言えることですが、HP 35s も「人間が機械に合わせる」という感じの難易度の高い電卓です。
本機 HP 35s (2007年) のことを調べていると、どうして HP-42S (1988年) が今でも名機扱いされるのか分かります。 HP 35s は、式リストやプログラムに中置記法の式を書けるという HP-42S にない魅力的な機能を搭載しています。 しかし、HP-42S の方がプログラミング機能の豊富さ、複素数に対応した関数の数、回帰分析の種類の多さ、そして行列計算が可能と基本的な機能で HP 35s よりも優れたところが多いのです。
HP 35s の祖先である HP-32S (1988年) は HP-42S の下位機種でした。 HP-42S の下位機種 HP 32S に機能を追加して進化したものが HP 35s なので、どうしても基本的な機能が見劣りするのでしょう。
HP 35s は、前機種の hp 33s よりも進化した機能が多くあります。 1つのスタックレジスタで複素数とベクトルが扱え、プログラムで行番号が使えるようになり、一次連立方程式を解くこともできるようになりました。 これだけみると、hp 33s よりもかなり実用性が上がったように思えます。
しかし、HP 35s は、前機種の hp 33s よりも改悪された機能もあります。 数値の一部が画面外に表示されることがあることと、基数変換が致命的に使い難くなったことです。 これらの問題のせいで HP 35s が hp 33s よりも良くなったと断言できない微妙な立ち位置になっている気がします。
今後改良して欲しい点として、電卓内のデータを外部出力できないことと、ALGモードで数式単位の履歴が取れないことがあります(そもそもALGモードが不要な気がするが)。
計算速度が遅いという問題もあります。2007年発売ということを差し引いても遅めです。 以下のベンチマークで最低ランクの速度です。
電卓ベンチマーク01(三角関数を含んだ式の総和)
電卓ベンチマーク02(三角関数を含んだ式の積分)
このように HP 35s は不満点の多い機種でありますが、勝手にデータが消えることはないという利点もあります。 日本の関数電卓にない利点です。