質問

BODMAS とは何ですか? なぜプログラミングに役立つのでしょうか?

役に立ちましたか?

解決

http://www.easymaths.com/What_on_earth_is_Bodmas.htm:

2 + 3 x 5 の答えは何だと思いますか?

(2 + 3) x 5 = 5 x 5 = 25 ですか?

または 2 + (3 x 5) = 2 + 15 = 17 ?

BODMAS は助けとなって、常に正しい答えが得られるように従うべきルールを与えてくれます。

(B) ラケット (O) 順序 (D) 分割 (M) 乗算 (A) 加算 (S) 減算

BODMAS によれば、乗算は常に加算の前に行う必要があるため、BODMAS によれば 17 が実際の正しい答えであり、 2 + 3 x 5 と入力した場合に電卓が表示する答えでもあります。

なぜプログラミングに役立つのでしょうか?わかりませんが、括弧をいくつか取り除くことができるためだと思いますか?私はかなり防御的なプログラマーなので、行は次のようになります。

result = (((i + 4) - (a + b)) * MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;

BODMAS を使用すると、これをもう少し明確にすることができます。

result = (i + 4 - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

私はまだ最初のバリアント、つまり括弧を追加したものを使用すると思いますが、その方法ではさらに別のルールを学ぶ必要がなく、ルールを忘れてデバッグが難しい奇妙なエラーが発生するリスクが少なくなります。

その部分は推測にすぎませんが。

マイク・ストーン 編集:Gaius が指摘した数学を修正しました

他のヒント

これの別のバージョン(中学生のとき)は、「Please Excuse My Dear Aunt Sally」でした。

  • 括弧
  • 指数
  • 乗算
  • 分割
  • 追加
  • 引き算

この記憶装置は学校で役に立ちましたが、今でもプログラミングに役立ちます。

式内の演算の順序。次のようなものです。

foo * (bar + baz^2 / foo) 
  • Bまずはラケット
  • 順序 (つまり、べき乗と平方根など)
  • Dアイビジョンと M乗算 (左から右)
  • さらに、そして S抽出 (左から右)

ソース: http://www.mathsisfun.com/operation-order-bodmas.html

編集する権限がない @マイケル・スタムの答え, しかし、それは完全に正しいわけではありません。彼は減らす

(i + 4) - (a + b)

(i + 4 - a + b)

これらは同等ではありません。式全体に対して得られる最良の削減は次のとおりです。

((i + 4) - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

または

(i + 4 - a - b) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

私がこれを(カナダの)小学校で習ったとき、それは BEDMAS と呼ばれていました。

Bラケット
Eパートナー
Dアイビジョン
M累乗
さらに
S抽出

世界のこの地域から来た人たちだけに...

とにかく、古い BODMAS ニーモニックがプログラミングにどの程度適用できるかはよくわかりません。言語間の操作の順序については保証がありません。多くの言語では標準操作がその順序で保たれていますが、すべての言語でその順序が保たれているわけではありません。また、操作の順序があまり意味のない言語もいくつかあります (たとえば、Lisp 方言)。ある意味では、標準的な順序を忘れてすべてに括弧を使用するか (例: (a*b) + c)、作業する言語ごとに順序を具体的に学習した方が、プログラミングに適していると考えられます。

特に C/C++ では、式を小さなステートメントに分割する方が最適化に適しているとどこかで読みました。そのため、非常に複雑な式を 1 行で記述する代わりに、各部分を変数にキャッシュし、それぞれを段階的に実行し、作業を進めながら構築していきます。

最適化ルーチンは変数が存在する場所でレジスタを使用するため、領域に影響を与えることはありませんが、コンパイラに多少の影響を与える可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top