7 時半起床.
数学を少しやる.
それからプールに行って泳ぐ. スポーツセンターがオープンする朝一番の時間に合わせて行くと, まだ人が少なくてそれほど緊張をせずに入れる.
一方で, その日最初に使うためかシャワーのお湯がいつも冷たい. 暑くなってきたので快適とも言えるがやはり少し冷たい.
帰宅して数学の続きをやっていたが, プールで泳いだためなのか, 強い眠気が襲ってきて堪えられずに横になった.
たちまち寝入ってしまい, 起きたら午後 4 時である. 昼寝とかのレベルではない. どうしてこんなに眠ってしまうのだろう. 理由不明.
しかも気持ちが沈んで鬱状態になっている. けっこう辛い.
やりかけの数学をやってみたが, 鬱のときはいつもそうだが, 考えることがとても難しく苦しい.
たとえば式を一段階変形させるのもなぜそういう変形が行えるのか, そのような変形をなぜ行っているのかがわからない.
実際には, 頭の中ではわかっているからそうしようとしているのだが, その頭の中にある自分がわかっていると思っているイメージがぼんやりとしていて結局わからないという状態.
これだと全然進まない.
しかし大事な計算なので踏ん張って続けた.
こんな踏ん張りがきくようになったのはやはり鬱から少しずつ回復してきているからだと思う.
以前ならとっくに寝込んでいた.
残念ながら計算そのものは全然進まなかったので夕食をとって休むことにした.
冷奴と納豆とご飯. 鬱が苦しいので頓服を飲んでおく.
2017年06月04日
HP-42S: Alpha レジスター, フラグ, スタック
HP-42S を使ったプログラミングの勉強.
数の取り扱いは, 現時点での自分には難し過ぎるのでひとまず棚上げにして先に進むことにした.
とりあえず, 全桁表示の数と指数表示の数があることだけ念頭に置いておく. 有限の空間で数をどのように取り扱っているのかを理解したかったが簡単に済む問題ではなかった.
この問題を考えることは続けるが, プログラミングを HP-42S のマニュアルで勉強することを先に進めようと思う.
新しい章に入ったら, プログラミングらしい話題になってきた.
● Alpha レジスター
・ HP-42S には Alpha レジスターという特別なレジスターがある.
・ Alpha レジスターには英数字文字列を保存する.
・ なぜ Alpha レジスターが特別かと言うと, このレジスターがプログラムのラベルや変数名や命令文を入力するために使われるからである. つまり Alpha レジスターを使用してプログラムの入力を行う.
● フラグ
・ HP-42S には 100 個のフラグが用意されている. それぞれ 00, 01,..., 99 という名前が付いている.
・ フラグは "セット (set)" と "クリア (clear)" の 2 つの状態を持っている.
・ フラグにはユーザーフラグと制御フラグの 2 種類が存在する.
- ユーザーフラグ : 00,..., 10 および 81,..., 99 の計 30 個. ユーザーがプログラムの制御をするために自由に使用できる.
- 制御フラグ : 11,..., 80 の計 70 個. HP-42S のシステムとしての動作を制御するためのフラグ. ユーザーは状態 (セット / クリア) をテストことはできるが変更はできない.
・ フラグに対して 6 つの操作が用意されている:
(1) SF : フラグをセットする.
(2) CF : フラグをクリアする.
(3) FS? : フラグがセットかどうかをテストする.
(4) FC? : フラグがクリアかどうかをテストする.
(5) FS?C : フラグがセットされているかどうかをテストしてからクリアする.
(6) FS?C : フラグがクリアされているかどうかをテストしてからクリアする.
● スタック
・ HP-42S には予めメモリー上にスタック (Automatic RPN Memory Stack) を持っている (RPN は "逆ポーランド記法 (Reverse Polish Notation)" を表わす).
・ HP-42S のスタックは 4 つのレジスターによって構成されている. これらにはそれぞれ X, Y, Z, T という名前が付いている.
・ X, Y, Z, T いずれのレジスターにも任意のデータ (実数, 英数字文字列, 複素数, 行列) を格納できる.
・ X レジスターに最新のデータが格納されている. 次が Y レジスター. その次が Z レジスター. 最上段が T レジスター, つまり T レジスターに最も古いデータが格納されている.
・ スタックを有効に活用して, つまり RPN 方式の計算方式に基いてプログラミングを行う.
このマニュアルでは第 2 章でから直ちにここに示したようなプログラミングの準備〜導入の説明が始まる. 最初に読んだときはびっくりした.
その理由は多分それが HP-42S という電卓の設計思想だからだと思っている.
それは, HP-42S を操作するということは, 小さなことであってもそれ自体は本質的には小さなプログラミングであり, その小さなプログラミングを表示画面ではなく Alpha レジスターに入力したものを集めてメモリー上に保存すれば実際に動くプログラムになるという考え方.
ここには, 直方体の体積を求めたり家計簿を付けたりといった「ちょっとした電卓操作」と, Newton 法や 3 次元コンピューターグラフィックスでの行列計算などの「プログラムによる処理」が自然な連続性を保つ世界がある.
ちょっと思い入れが入り過ぎたかも. でもそれほど外していないと思う.
再びプログラミングができるようになれば, 自分の世界は少し広がるだろう.
数の取り扱いは, 現時点での自分には難し過ぎるのでひとまず棚上げにして先に進むことにした.
とりあえず, 全桁表示の数と指数表示の数があることだけ念頭に置いておく. 有限の空間で数をどのように取り扱っているのかを理解したかったが簡単に済む問題ではなかった.
この問題を考えることは続けるが, プログラミングを HP-42S のマニュアルで勉強することを先に進めようと思う.
新しい章に入ったら, プログラミングらしい話題になってきた.
● Alpha レジスター
・ HP-42S には Alpha レジスターという特別なレジスターがある.
・ Alpha レジスターには英数字文字列を保存する.
・ なぜ Alpha レジスターが特別かと言うと, このレジスターがプログラムのラベルや変数名や命令文を入力するために使われるからである. つまり Alpha レジスターを使用してプログラムの入力を行う.
● フラグ
・ HP-42S には 100 個のフラグが用意されている. それぞれ 00, 01,..., 99 という名前が付いている.
・ フラグは "セット (set)" と "クリア (clear)" の 2 つの状態を持っている.
・ フラグにはユーザーフラグと制御フラグの 2 種類が存在する.
- ユーザーフラグ : 00,..., 10 および 81,..., 99 の計 30 個. ユーザーがプログラムの制御をするために自由に使用できる.
- 制御フラグ : 11,..., 80 の計 70 個. HP-42S のシステムとしての動作を制御するためのフラグ. ユーザーは状態 (セット / クリア) をテストことはできるが変更はできない.
・ フラグに対して 6 つの操作が用意されている:
(1) SF : フラグをセットする.
(2) CF : フラグをクリアする.
(3) FS? : フラグがセットかどうかをテストする.
(4) FC? : フラグがクリアかどうかをテストする.
(5) FS?C : フラグがセットされているかどうかをテストしてからクリアする.
(6) FS?C : フラグがクリアされているかどうかをテストしてからクリアする.
● スタック
・ HP-42S には予めメモリー上にスタック (Automatic RPN Memory Stack) を持っている (RPN は "逆ポーランド記法 (Reverse Polish Notation)" を表わす).
・ HP-42S のスタックは 4 つのレジスターによって構成されている. これらにはそれぞれ X, Y, Z, T という名前が付いている.
・ X, Y, Z, T いずれのレジスターにも任意のデータ (実数, 英数字文字列, 複素数, 行列) を格納できる.
・ X レジスターに最新のデータが格納されている. 次が Y レジスター. その次が Z レジスター. 最上段が T レジスター, つまり T レジスターに最も古いデータが格納されている.
・ スタックを有効に活用して, つまり RPN 方式の計算方式に基いてプログラミングを行う.
このマニュアルでは第 2 章でから直ちにここに示したようなプログラミングの準備〜導入の説明が始まる. 最初に読んだときはびっくりした.
その理由は多分それが HP-42S という電卓の設計思想だからだと思っている.
それは, HP-42S を操作するということは, 小さなことであってもそれ自体は本質的には小さなプログラミングであり, その小さなプログラミングを表示画面ではなく Alpha レジスターに入力したものを集めてメモリー上に保存すれば実際に動くプログラムになるという考え方.
ここには, 直方体の体積を求めたり家計簿を付けたりといった「ちょっとした電卓操作」と, Newton 法や 3 次元コンピューターグラフィックスでの行列計算などの「プログラムによる処理」が自然な連続性を保つ世界がある.
ちょっと思い入れが入り過ぎたかも. でもそれほど外していないと思う.
再びプログラミングができるようになれば, 自分の世界は少し広がるだろう.