高森太郎の日記。

高森太郎の日記です。

逆ポーランド記法。

 計算の式ってふつう、

10=(90+10)÷10

とかいって書くのが、普通である。で、これをとくときは、普通に90に10を足して、その答え、100を10で割ることによってやるんだけど……これって、いちいち括弧を入力しなければならないし、さらに、コンピュータで扱うことが難しい。

 なぜ難しいかと言うと、入力された式を、すべてみてみて、その中から大括弧の中の中括弧の中の小括弧からはずして、だんだん括弧をはずしていくという作業が必要になる。これって……まぁ理由はあれなんですが、手で計算するときはかんたんですが、コンピュータにそれをさせるのはすごくめんどくさい。また、高度な処理が必要になる。そのため、世の中の計算機では普通、10+10=20、とか、一部の部分の計算にしか対応していない。

 んで、その欠点をカバーするために生まれたのが、逆ポーランド記法(後置記法)だそうである。これは、計算の処理の内容を、計算大賞より後に書く。なので、

10=7+3

を、

7 3+=

と書く。で、先に書いたカッコつきのものは、

90 10 + 10÷=

とかく。

 こうするとコンピュータで処理するときのどういう風になるかと言うと、計算機は、まず最初に、計算用の記号、+とか−とか÷とか×とか出てくるまで、計算対象を読み込みつつ処理をして、そして計算記号にぶつかったら、その記号を判断して、一番最近に記憶した計算対象と、その次の計算対象を計算して、それをまた計算対象として記憶、さらに次を読み込み、計算記号にぶつかったら、同じようにやっていく。これを繰り返すと、計算対象や、記号をひとつずつよんでいくだけで、つまり、全体の計算式を始めに見なくても計算ができる。

 なので、それほど高度な処理を必要とせずに優先順位、つまり()つきの計算が可能になるのだ。すばらしいぃッ!



 と、えらそうに書いてみるけれど……こんなコンピュータやさんでは常識のようなことをぐたぐた書いているか、といえば、本日、学校の課題で出て、どっかに書いておかないと忘れてしまいそうだからなのでした。いやまぁ、忘れることはないといえばないんだけれど。ね。

 課題は、普通に入力された数式を読み込んで、それを逆ポーランド記法の式に直して出力するというものだった。で、それは本来「スタック」というものの概念の演習であるんだけど、それはそれ、できてしまったのでした。というわけで、メモ。


 しかし……こういう逆ポーランド記法を利用できる計算機と言うものを、hpが作っているらしい。へ〜、hpって電卓つくってるんだ。としらじらしく言ってみる。いや、以前スラッシュドットジャパンで「やめるらしい」と言う記事と「さいかいだってよ!やった!」と言う記事を拝見して、その中でアレゲな方々のお話を読むにしたがって、気になっていたのですよ。