見出し画像

逆ポーランド記法と中置記法

基本情報技術者試験などで出題される用語の勉強です


逆ポーランド記法とは

【逆ポーランド記法】
計算式を表現するための方式の一つで、四則演算子(+、-、*、/)をオペランド(操作される数)の後ろに置く方法です。
たとえば、「3 + 2」を逆ポーランド記法で表すと「3 2 +」のようになります。
この方法の利点は、計算順序を明確にするためのカッコが不要になることです。

中置記法とは

【中置記法】 私たちが普段使っている計算式の表現方法のことで、四則演算子を2つのオペランドの間に置く形をとります。
例えば「3 + 2」のような表現がそれに当たります。
これが逆ポーランド記法と異なる点は、計算順序を明示するためにカッコを用いることが多いことです。

それぞれで表記するとどうなるか

  1. 逆ポーランド記法: "3 5 +"→ 中置記法: "(3+5)"

  2.  逆ポーランド記法: "4 2 * 7 +" → 中置記法: "((42)+7)"

  3. 逆ポーランド記法: "6 8 2 / * 5 -" → 中置記法: "((6(8/2))-5)"

  4. 逆ポーランド記法: "9 2 / 7 * 8 -" → 中置記法: "(((9/2)*7)-8)"

逆ポーランド記法から中置記法に変換する基本的な方法は、演算子が来るたびに直近の2つの数値または計算結果を取り出し、括弧を付けた上で演算子で結ぶことです。これらの手続きをスタック(後入れ先出しのデータ構造)を用いて順次行っていきます。
上の例で"6 8 2 / * 5 -"を見てみると、以下のようになります。
(1)6を認識
(2)8を認識
(3)2を認識
(4)演算子/(一般的に書くと÷)を認識
(5)演算子を認識したので、直近の2つの数値の8と2を取り出し()をつけて演算子で結ぶ → (8/2)
(6)演算子*(一般的に書くと×)を認識
(7)演算子を認識したので、直近の数値と(5)の計算結果を取り出し()をつけて演算子で結ぶ → (6(8/2)) ※演算子*は表記上省略される
(8)5を認識
(9)演算子-を認識
(10)演算子を認識したので、直近の数値と(7)の計算結果を取り出し()をつけて演算子で結ぶ → ((6(8/2))-5)

以上で終わりです。
参考になったと思ったらスキをお願いします。


いいなと思ったら応援しよう!