プログラムの気持ちを理解したいから逆ポーランド表記法

勉強のきっかけになった問題

式A+B×Cの逆ポーランド表記法による表現として,適切なものはどれか。
ア. +×CBA イ.×+ABC ウ. ABC×+ エ.CBA+×
http://www.sc-siken.com/kakomon/23_aki/am1_1.html

f:id:ponsuke_tarou:20180219230542j:plain

逆ポーランド表記法とは、コンピュータが理解しやすい記述方法です。

  • 別名 : Reverse Polish Notation / 後置記法
  • 数式やプログラムを記述する方法の一種。
  • コンピュータで処理するのに都合のいい形の、数式の書き方。

ポーランド記法をコンピュータでの利用に適した形に改変したものである。
逆ポーランド記法 - Wikipedia

コンピュータのプログラミングにおいて、算術式を表記する手法の一つである。
逆ポーランド記法とは何? Weblio辞書

コンピュータで数式を計算する時、逆ポーランド法が都合が良い方法ため利用します
数式を逆ポーランド法に変換するための事柄

逆ポーランド記法で記述された数式x 1 2 - 3 + =は、「xに1から2を引いた(-)ものに3を足して(+)代入する(=)」と読むことができます。 より機械的な表現にすれば「xに、1に2を-して、それに3を+して、それを=する」と読むこともできます。 つまり、この表記においては、演算対象と演算処理が処理順に記述されることになります。 プログラミングなどではx = 1 - 2 + 3;といった式を書きますが、実は実行時にはスタックというものを使って逆ポーランド記法的に計算しています。
二分木を使った数式の逆ポーランド記法化と計算 - Programming/Tips - 総武ソフトウェア推進所

演算子を被演算子の後に記述します。

逆ポーランド記法の利点

  • カッコが不要
  • 左から順に処理していけば計算結果が得られる

ここでは、Y=(A+B)×(C-(D÷E))という式をポーランド表記法で表現する例を説明します。 木で表現し、節から上に出るときにそこの記号を書いていくと以下のようになります。
https://www.zealseeds.com/img/ITSkilStandard/BasicTheoryOfInformation/PolishNotation/H18Abasic10-1.gif
ポーランド表記法―逆ポーランド記法の利点や欠点、例など

https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F36744%2F3325f4b2-e857-3176-6046-cdf53431edda.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=1ba7aa7e8994b9794bc5715afdb8f587
逆ポーランド記法と木構造の絵 - Qiita

問題を逆ポーランド表記法で書くと「ABC×+」です。

演算子を被演算子後に記述するので
A + B × C = A + (B × C) = A + BC× = ABC×+

小学校で習いましたが「+-」より「×÷」を先に計算します。

A + B × C = AB+ × C = ABC+×は間違いです。
f:id:ponsuke_tarou:20180219230633j:plain

「逆」じゃないポーランド表記法とは、演算子を数値の前に置く記法です。

  • 別名 : Polish notation / 前置記法

ポーランド記法とは、数式表現の表記法の一つで、演算子を数値の前に置く記法のことである。考案者がポーランド人の論理学者であったことからこのように呼ばれる。
ポーランドきほうとは何? Weblio辞書

問題をポーランド表記法で書くと「+A×BC」です。

演算子を被演算子前に記述するので
A + B × C = A + (B × C) = A + ×BC = +A×BC

人がよく使うのは、中置記法です。

問題を中置記法で書くと「A+(B×C)」です。

A + B × C = A + (B × C)
f:id:ponsuke_tarou:20180219230726j:plain