アフィリエイト広告を利用しています

2017年07月03日

HP-42S: スタック

2017, 7.25 付記:
以下の記述は間違っている. 修正した内容は HP-42S: スタック (修正版) を参照のこと.



HP-42S という電卓は, あらゆる計算をスタックを利用した逆ポーランド記法による操作によって行なう.
だから, スタック構造を理解することは HP-42S によるプログラミングを修得するために避けて通れない一歩だ.

ずっとスタックという構造とそれによるデータの取り扱いがわからないでいる.
教科書などに出てくる, スタックのデータを積む都度に伸びていく縦に積み上がった矩形の箱のイメージを頭の中に描くことがとても難しい.
伸びたり縮んだりして動く, その動きに頭が追いつかない.
以前にも書いたが, 何らかの概念を幾何学的なイメージ (例えば「図」)として把握して考える能力がどこか失われている, もしくは著しく低下している.

HP-42S のマニュアルのスタックの説明を読み返し, 寝込んでいるときに考えたりしていたら今日, 一つ前に進めた気がした.

つまりこうである.
12 + 7 を計算するとき, HP-42S では次のような操作を行う.

12 ENTER 7 +

ここで, 12, 7 は数字ボタンを使って入力する. ENTER は "Enter" ボタンを押すことを意味する. + は "+" ボタンを押すことを意味する.

このとき HP-42S はスタック X, Y, Z, T (下から順) を使って次の処理を行う.
(0) 最初のスタックの内容が次のようになっていると仮定する (任意でよい).

T: 8128
Z: 496
Y: 28
X: 6

(1) "12" が入力された時点で X レジスター (スタックの最下段) の内容が 12 となる.

T: 8128
Z: 496
Y: 28
X: 12

(2) ENTER が押されると X レジスターの内容 12 が Y レジスター (X レジスターの 1 つ上のレジスター) の内容にコピーされる. このときのスタックの内容は以下の通り.

T: 496
Z: 28
Y: 12
X: 12

T レジスターの元の内容 8128 が Z レジスターの内容 496 に新たに書き換えられて失われ, Z レジスターの元の内容 496 が T レジスターにコピーされた後に Y レジスターの元の内容 28 に書き換えられ, Y レジスターの元の内容 28 が Z レジスターにコピーされた後に X レジスターの元の内容 12 に書き換えられる, というのがスタックに対して実際に行われた操作である.
(3) "7" を入力した時点で X レジスターの内容が 7 に書き換えられる. このときのスタックの内容は以下の通り.

T: 496
Z: 28
Y: 12
X: 7

(4) + が押されると Y レジスターの内容 12 が X レジスターの内容 7 に加算されて, 結果の 19 が X レジスターの内容になる. このときのスタックの内容は以下の通り.

T: 496
Z: 496
Y: 28
X: 19

Y レジスターの内容 12 が X レジスターの内容に加算された後に Z レジスターの元の内容 28 が Y レジスターの内容にコピーされる. その後, T レジスターの内容 496 が Z レジスターの内容にコピーされる, というのがスタック全体に対して行われた操作.

(2) の像が頭の中に描けたとき, 目の前が大きく広がった気がした.
もしかしたらまだ誤った理解があるかも知れない.
しかし, スタックを理解できるかも, と漸く思えた. 嬉しい.
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/6435242

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1441)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1403)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村