南山の先生

学部別インデックス

理工学部・ソフトウェア工学科

蜂巣 吉成

職名 教授
専攻分野 ソフトウェア工学
主要著書・論文 "データ型を考慮した軽量なXML文書処理系の自動生成", コンピュータソフトウェア, Vol.19, No.5, 2002, pp.334-344
担当の授業科目 「プログラミング基礎」「オブジェクト指向プログラミング」

かっこのいらない計算式

コンピュータに仕事をさせるには、BasicやJavaなどの「プログラミング言語」を使って命令を与えます。プログラミング言語を解析する方法の簡単な例を紹介しましょう。

逆ポーランド記法による計算を知っていますか? 少し複雑な計算をするときは

(5 + 2) * 3

のように括弧を使って計算の順番を指定しますね。"*"は"×"(かける)です。
逆ポーランド記法では括弧を使わずに足し算やかけ算の順番を自由に指定して計算できます。例えば上の式は、逆ポーランド記法では

5 2 + 3 *

となります。普通の式では"+"や"*"は計算したい数字の間に書きますが、逆ポーランド記法では数字の後に書きます。逆ポーランド記法の式は、動詞("+"や"*")が最後に来るので、日本語の語順と似ています。 つまり、"5 2 + 3 *"は、「5と2を足して、3をかける」と読むことができます。

逆ポーランド記法で計算を行うには、数字をいれる箱が必要です。式を左から順番に見て行き、数字の場合は箱にいれます。"+"や"*"の場合は箱の中から数字を2コ取り出して計算して、結果を箱にいれます。

もう少し複雑な式はどうなるでしょうか。

273_01.jpg

12 + (5 + 2) * 3

は逆ポーランド記法では

12 5 2 + 3 * +

となります。この計算は皆さんにお任せします。

式がどのようにして構成されているかを考えて、これを「構文」として定義します。構文にしたがって普通の式を逆ポーランド記法に直したり、逆ポーランド記法の式を普通の式に直したりする方法を授業で学びます。また、逆ポーランド記法の計算には数字をいれる箱が必要でした。この箱は最後に入れたものが最初に出て来るという性質を持っています。この性質をLIFO(Last In First Out)と言い、このような箱をスタック(stack)と呼びます。コンピュータのプログラムでどのようにしてスタックを作るかといったことも学習します。