K-3 for Engineering

[back]

逆ポーランド表記について

逆ポーランド表記の概要

 普通、1+2×3という計算は、
 1に2と3を掛けたものを足して答えを出しますよね。

 つまり、1というのは、とりあえずおいといて、2と3を掛ける。で、そこで得られた値6をとっといた1と足して答えは7。

 この「掛けた(×)ものを足して(+)」という順番で式を表記するのが逆ポーランド表記(Reverse porland notation:つづりは間違ってるかも)と呼ばれるものです。この例の場合だと、「1 2 3 × +」と表現します。

 こういう表記を用いると、スタックという仕組みを使って、計算を機械的に行うのが簡単になるんです。スタックというのは、最後に入れたものから順に取り出せる(先切れ後出ともいう)データの保管場所でのことです。

 この例の計算だと、「1」はとりあえずおいておくので、スタックに入れてしまう。
 そうするとスタックの状態は、[1]になります。

 次に、「2」も「3」もスタックに入れちゃうと、スタックは[1,2,3]になります。

 ここで、「×」をするので、スタックから、3,2を取り出して、掛算の結果の6をもう一度スタックに入れる。
 そうすると、スタックの状態は、[1,6]になります。

 最後に、「+」をするので、6,1を取り出して、足し算をすると答えは7。それをスタックに戻して、スタックの状態は、[7]。

 答えは7。という結果になります。

 このやり方だと、頭から順に処理していくだけで、優先順位なんかを考えなくてよいので、速く、簡単に処理ができるので、極初期の計算機ではけっこう使われたものでした。

 K-3でも、この表記を使っているので、「1+2×3」を計算するときには、

と、計算します。

 やっぱ、めんどくさいって。
 そりゃそうですね。計算機が簡単に処理できるように、ユーザの方が考えてやらなきゃならないんですから。普通に計算できる方がいいよって思うのも当然でしょう。

 作者が楽をしたいから、手間をユーザに押し付けてるといわれてもしょうがないかもしれませんが、それだけじゃないんです(いや、ほんとはそれだけって面もあるんだけど)。

逆ポーランド表記の利点

 実際、四則演算で足りるようなわかりきった計算をするだけなら、普通の計算機の方が断然楽なんですよ。この逆ポーランド表記が活躍するのは、計算方法自体を試行錯誤するような時です。

 最初にあげた例の「1に2と3を掛けたものを足して」というのが、示しているように、逆ポーランド表記ってのは、日本語の語順と似てるんですね。そのため、「あれをこうして、ああして」と考えながら、計算するときには、思考そのものを式に置き換えやすいんです。
 計算の途中結果も、スタックに残っているので、確認しながら計算を進めることもできるしね。

 しかも、逆ポーランド表記だと、ユーザ定義関数を解釈・実行する仕組み(インタープリタと言う)も、作りやすいので、「うだうだ考えながら、ユーザ定義関数を書く」→「実行してみる」を繰り返すことで、それまで、計算方法がわからなかった問題を効率よく解けるし、なにより、その計算方法をノウハウとして残せるわけです。

 いまだに、プログラマブルなRPN電卓が、主にエンジニア系に根強い人気がある理由は、この辺りにあるんでしょうね(でも、最近は、Excelでうだうだの方が効率よいけど)。

[top]


Copyright (C) 1998-2000 ABplus Inc. kazhida.
All rights reserved.