第93回 99.03.28くらい 団子分析(情報処理試験受験者必見)
 今日のみや千代日記は、情報処理教育の教材としてもらいたいのだ。

 そうそう。4月には情報処理技術者試験があるのだ。読者の中には受験される方も相当数いるだろう。わたしは、今回受けないけどね。なんだか一種まで取ったらもういいやって感じがして、受ける気にならないのだ。そんなわけで自分の勉強はどうでもいいのだが、ここは受験される読者の為に一肌脱ごうと思うのだ。セミヌードである。
 今日は、そのひとつとして、キューとスタックについて話をしようと思うのだ。キューとスタックについて抑えておけば、5点は確実に取れるだろう。当落上にいる方々にとって5点は大きい。うん。みや千代日記を読んでいて良かったね。さて、まずは下の図を見て欲しい。

図−1 スタック図−2 キュー

 両者は、データ処理の種類である。スタックは、1番目、2番目、3番目……という順番で格納されたデータを、……3番目、2番目、1番目と処理していくのだ。先に入れたモノが後に出て行くFILO(First In Last Out)ということだ。具体的に言うと、サブルーチンの戻り先アドレスを格納する時の処理方法がそうである。
 ちなみに、スタックとは「積み重ねる」の意味である。テーブルの上にカードを手にした順に重ねていき、上から順番にめくっていくという感じである。マジシャン以外の人ならば、後で重ねたトランプから先にめくっていくことになるだろう。

 一方キューは、1番目、2番目、3番目……という順番で格納されたデータをそのまま1番目、2番目、3番目……と処理していくのだ。先に入れたモノが先に出て行くFIFO(First In First Out)ということだ。具体的にいうと、プリンタの出力待ち処理などがそうである。
 キューとは、「列に並ばせる」の意味である。パイプにその内径よりちょっと小さめのボールを順々に入れて、反対側から取り出して行くイメージである。マジシャン以外の人ならば、入れた順番でボールが出てくることになるだろう。

 さて、ここで思い出すのは、だんご3兄弟である。下の図をみてもらいたい。


図−3 だんご3兄弟


 だんご3兄弟では、上から長男、次男、三男の順であると言われている。しかしながら、これには皆さん疑問があるようだ。シュウ君もこの間の日記に書いていたし、大西科学の掲示板でも論議を呼んでいた。なるほど、そうだろう。一般的に団子を串に刺す時は、串のお尻の方から刺さないのだ。そちらの方は尖っていないので、刺しにくいからである。
 ところでこの状態を見ると、上記の説明が思い出されないだろうか? つまり、串団子とはスタック処理なのである。一番最後に刺されたモノから食べられていくということである。
 ちなみに、串のお尻から刺していくとキュー処理ということになる。串の尖った方から刺していくということは、一番下にあるのが先に刺さったということになる。つまり長男が一番下ではないかという意見なのだ。

 ふむふむ。なるほど、そう言われるとそうである。しかしながら、兄弟の定義は違うのだ。兄弟とは先に生れたのが兄で、後に生れたのが弟である。一番先に刺さったからといって、一番先に生れたと考えるのは早計ではなかろうか。後に作られたモノが一番先に刺されているのかもしれないのだ。
 団子を作る手順を考えよう。団子を整形する端から串に刺していくという手順と、まず大量の団子を整形し、その後串に刺して行くという手順が考えられるのだ。つまり、だんご3兄弟の場合、後者ということだ。整形と串刺しの工程は、別々であるということだ。

 この手順を踏むためには、整形したものを蓄える処理が必要である。この蓄える処理とは、どのような処理なのだろうか? そう。この処理もスタック処理なのだ。スタック処理を2段階踏むとキュー処理になるのである。ただし、第1スタックの処理が終了する前に第2スタックの処理に以降した場合、この限りではない。

 さて、だんご3兄弟といえばもうひとつ疑問がある。「団子は整形された時点で生れたといえるのだろうか?」ということだ。団子は、大きな塊をいくにも切り分けて整形されるはずなのだ。ということは、団子1個1個、全て集まってひとつの生命体と考えられるのだ。
 このことは、吉田戦車のマンガで描いていた主張に関連する。まこさんも同様のことを考えていたようだ。どういうことかというと、「串に刺さった3個1セットでひとつの生命体と考えるべきではないか?」というものだ。

 ふむふむ。たしかに一理ある。ところで、団子を生命体と考えると、生れるということはどの時点のことだろうか? 製品として体を為した時点で生れたと考えることもできる。それならば、吉田戦車やまこさんの主張が正しいだろう。
 わたしのように大きな塊を一個の生命体と考えると、また話は異なる。同時期に生れた団子は、組成的にみてもまったく同質のはずである。全ての団子で一個の生命体と考えるべきなのではなかろうか。串に刺さった3個1セットでも、まだバラバラにされた一個の生命体なのである。

 しかし、それでは話が進まない。やはりここは、だんご3兄弟のコンセプトに沿って、切り分けられた時点で考えることにしよう。だんごは、プラナリアみたいなものと考えるのだ。切り分けられた時点で、別個の意志を持つ生命体が発生する考えるのだ。しかし、プラナリアのような下等生物に喩えるのも、団子にとっては不名誉なことだろう。
 ちょっと考え方を変えて、大きな塊を受精卵と考えることはできないだろうか? 受精卵が細胞分裂している途中でバラバラにするのだ。所謂受精卵クローンである。ホントは核を除去した別の未受精卵に融合しないとならないのだが、まあ団子だからいいとしよう。しかし、クローンでも兄弟と言えるのだろうか? まあ、双子の類でいいのかな。

 となると、だんご3兄弟の場合、三つ子ということになる。いや、ホントはもっと兄弟がいるのだが、生き別れになってしまい、確認できる兄弟は3人しかいないという状態なのだ。これで万事解決である。
 ところで歌詞を聞くと、三つ子であっても、長男は長男として、次男は次男として、三男は三男として、それぞれ性格においての役割分担があるようだ。それを考えると、年齢にほとんど違いがあるわけでないのに先に生れたか否かを意識するというのは、なんかイヤな兄弟だなあと思うのだ。ねえ。双子の皆様?

 それはともかく、団子と言えば串団子しかないのだろうか? 否である。月見団子や団子汁などがあるではないか。それを考慮すると、やはり団子は1つの丸いもので一人と考えたいところなのだ。
 団子汁の場合、団子の数は不定である。つまり、だんごn兄弟なのだ。nは自然数である。月見団子の場合、12+22+32+42なので、だんご30兄弟である。こうなると、なかなか壮観である。それぞれ、下の図のようになる。

図−4 団子汁n兄弟図−5 月見団子30兄弟


 さて、話は逸れてしまったが、キューとスタックについては頭の中に入っただろうか? キューとスタックについての問題が出された時、この話を思い出してもらいたい。だんご3兄弟がスタックと関係があることが思い出せたら、この手の問題はバッチリだろう。
 何かを思い出そうという時は、おぼえた時どんなことを話していたかを思い出せれば、簡単に思い出すことができるのだ。別に直接関連がある話でなくても良いのだ。学校の教師が授業を脱線して雑談するのも理由があるのだ。今日のみや千代日記を情報処理教育の教材として活用されたら本望である。

 ええと、今日のみや千代日記を読んだら、「キュー」、「スタック」という言葉を聞くと、だんご3兄弟のメロディーが頭の中でグルグル回って試験に集中できなくなるって? ああ、そう言われるとそうかもしれない。そうか。あのメロディーは、頭に残るからなあ。ああ、スマンです。これは、みやちょの誤算であった。大誤算であった。これでは、教材として失敗作なのだ。

 うーん。大誤算教材。ちゃんちゃん。♪

 というワケで、今日の分はおしまいだ。では、また会う日まで。


 ↑これは日記猿人のなんたらボタンである。

99年目次