後置記法とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 情報 > 記法 > 記法 > 後置記法の意味・解説 

こうち‐きほう〔‐キハフ〕【後置記法】

読み方:こうちきほう

逆ポーランド記法


逆ポーランド記法

(後置記法 から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/21 10:14 UTC 版)

ポーランド記法
中置記法
逆ポーランド記法
HP-32SIIの8×6の計算で押すキー

逆ポーランド記法(ぎゃくポーランドきほう、英語: Reverse Polish Notation, RPN)は、数式やプログラムの記法の一種。演算子被演算子の後にすることから、後置記法 (Postfix Notation) とも言う。

その他の記法として、演算子を被演算子の中間に記述する中置記法、前に記述する前置記法(ポーランド記法)がある。 名称の由来は、演算子と被演算子の順序がポーランド記法の逆になっていることによる。

概要

例えば、「3 と 4 を加算する」という演算を、一般的に数式の表記に用いられる中置記法で記述すると、以下のようになる。

3 + 4

一方、逆ポーランド記法では、加算を表す演算子 + を、被演算子である 3 と 4 の後(右)に置いて、以下のよう記述する。

3 4 +

逆ポーランド記法による表現は日本語などSOV型の言語の語順とある程度似ており、上式程度であれば「3 と 4 を加算する」とそのままの順序で読み下せる。逆ポーランド記法を使うForthの影響を受けているプログラミング言語Mindでは、「3と 4とを 足す」と書く。

もう少し複雑な例として、中置記法による以下の式は、

(3 + 4) * (1 - 2)

逆ポーランド記法で記述すると以下の通りとなる。

3 4 + 1 2 - *

つまり、逆ポーランド記法では後で使われる演算子ほど、右に位置することになる(ポーランド記法では逆になり、左に位置する演算子ほど後で使われる)。ちなみに上式を日本語で読み下すと「3 と 4 を足したものに 1 から 2 を引いたものをかけ合わせる」となる。

その他、逆ポーランド記法の特徴として区切り文字の必要性などがあるが、これらについてはポーランド記法と同様のため、そちらの項を参照のこと。

コンピュータへの応用

逆ポーランド記法を使えば、式の計算をする(評価)には、先頭からひとつずつ順番に記号を読み込み、その記号が演算子以外であればスタックに値を積み、演算子であればスタックから値を取り出して演算し結果をスタックに積む、という簡単な操作の繰り返しだけでよい。そのため、プログラミング初心者の練習課題として、逆ポーランド記法の電卓を作ることがよく行われる。

前述の手順であれば、スタックに積むのは値(たとえば後述する例では整数値)だけである。もしこれが他の順序だったとしたら、演算子に相当するものを記憶するか、順番に読むだけでは済まず行きつ戻りつするか、などしなければならない。

プログラミング言語ForthPostScriptなどのこの記法を採用したものがある。

ヒューレット・パッカード社の電卓HP-35など)が有名で、他いくつかの電卓(特に関数電卓に採用がある)にもあるが、逆ポーランド記法による入力方法を採用している電卓がある(近年の関数電卓のような数式入力ではなく、計算機械としてスタックモデルであり、それを直接操作しているという形なので、厳密なことを言うと逆ポーランド記法「順」ということになる)。

計算動作の例

(このような動作をベースとしている計算モデルやコンピュータを、スタックマシンと言う)

例題として以下の式を考える。スタックの他に1個のアキュムレータを持つ計算機だとする。

3 4 + 1 2 - *

[]スタックの内容。左から右に積む。最初は空である。

  1. 3をスタックに積む [3]
  2. 4をスタックに積む [3 4]
  3. +が押されたら、
    1. スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← 4) [3]
    2. スタックからデータを下ろしアキュムレータを足してアキュムレータに入れる(アキュムレータ ← POPした値 + アキュムレータ) []
    3. アキュムレータの内容は 7 になる (3 + 4 = 7)
    4. アキュムレータの内容をスタックに積む [7]
  4. 1をスタックに積む [7 1]
  5. 2をスタックに積む [7 1 2]
  6. -が押されたら、
    1. スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← 2) [7 1]
    2. スタックからデータを下ろしアキュムレータを引いてアキュムレータに入れる(アキュムレータ ← POPした値 - アキュムレーター) [7]
    3. アキュムレータの内容は -1 になる (1 - 2 = -1)
    4. アキュムレータの内容をスタックに積む [7 -1]
  7. *が押されたら、
    1. スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← -1) [7]
    2. スタックからデータを下ろしアキュムレータを掛けてアキュムレータに入れる(アキュムレータ ← POPした値 * アキュムレーター) []
    3. アキュムレータの内容は -7 になる (7 * -1 = -7)
    4. アキュムレータの内容をスタックに積む [-7]

このように

  • スタックにデータを積む (PUSH) 操作
  • スタックからデータを下ろす (POP) 操作
  • 二つのオペランド間の演算

だけで計算動作が可能である。

スタックトップの直接演算が可能な構造ならば、例えば最初の部分は

  1. 3をスタックに積む [3]
  2. 4をスタックに積む [3 4]
  3. +が押されたら、
    1. スタックからデータを下ろしレジスタに入れる(レジスタ←4) [3]
    2. スタックトップにレジスタの値を加算する [7]

と簡略化される。

文献

関連項目

外部リンク




後置記法と同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「後置記法」の関連用語

後置記法のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



後置記法のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの逆ポーランド記法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS