BODMAS とは何ですか? なぜプログラミングに役立つのですか?
7 に答える
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)rder (D)ivision (M)ultiplication (A)addition (S)subtraction
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;
私はまだ最初のバリアントを使用すると思います-より多くのブラケットですが、そのようにすると、さらに別のルールを学ぶ必要がなくなり、それを忘れて奇妙なデバッグエラーを引き起こすリスクが少なくなりますか?
ただ、その部分を推測するだけです。
Mike Stone 編集: Gaius が指摘するように数学を修正
これの別のバージョン(中学生)は、「私の親愛なる叔母サリーを許してください」でした.
- 括弧
- 指数
- 乗算
- 分割
- 添加
- 減算
ニーモニック デバイスは学校で役に立ち、今日でもプログラミングに役立ちます。
@Michael Stumの答えを編集する力はありませんが、それは完全には正しくありません。彼は減少します
(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;
次のような式での演算の順序:
foo * (bar + baz^2 / foo)
- 最初にブラケット
- オーダー(つまり、累乗と平方根など)
- 除算と乗算(左から右)
- 加算と減算(左から右)
私がカナダの小学校でこれを学んだとき、それは BEDMAS と呼ばれていました。
括弧指数割り算
掛け算足し算
引き算_
_
_ _
_ _
この世界から来た人だけに...
とにかく、古いBODMASニーモニックがプログラミングにどの程度適用できるかはよくわかりません。言語間で操作の順序が保証されているわけではありません。多くの言語では標準的な操作がその順序で維持されていますが、すべてがそうしているわけではありません。また、操作の順序があまり意味を持たない言語もいくつかあります (Lisp 方言など)。ある意味では、標準的な順序を忘れて、すべてに括弧を使用するか (例: (a*b) + c)、または使用する言語ごとに順序を具体的に学習した方が、おそらくプログラミングに向いているでしょう。
特にC/C ++では、式を小さなステートメントに分割する方が最適化に適していることをどこかで読みました。したがって、非常に複雑な式を1行で記述する代わりに、パーツを変数にキャッシュし、それぞれを段階的に実行してから、作業を進めながらそれらを構築します。
最適化ルーチンは、変数がある場所でレジスターを使用するため、スペースに影響を与えることはありませんが、コンパイラーには少し役立ちます。