2008-08-06 69 views
16

BODMASとは何ですか?プログラミングにはなぜ便利ですか?「BODMAS」という用語は何を意味しますか?

+0

[CとC++での演算子の優先順位](http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence) – foxy

+0

私は通常、4つの+/- *演算は次のようになります:a + b * c他のすべての演算子では、演算の順序を明確にするために括弧を使います。 –

+0

私は今日までにBODMASを見たことがありません。私はPEMDAS(括弧、指数関数、掛け算、除算、加算、減算)を学びました。 – FishBasketGordo

答えて

21

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

あなたは2 + 3×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)ddition( S)ubtraction

BODMASによると、乗算は常に加算前に実行する必要があります。したがって、実際にBODMASによる正解は17であり、2 + 3 x 5で入力すると電卓の答えとなります。

なぜプログラミングに役立つのですか?あなたはいくつかの括弧を取り除くことができるので、私はそれは仮定していないアイデアは、? BODMASと

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

あなたは、これは少しより明確にすることができます:私は私の行はこのようになりますので、非常に守備のプログラマだ

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

私はまだ最初のバリアントを使用したいと思います - より多くの括弧は、しかし、私はまだ別のルールを学ぶ必要はありませんし、私はそれを忘れて、それらの奇妙なハードエラーをデバッグする原因となるリスクを少なく実行する?

しかし、その部分でちょうど推測します。

マイク・ストーンEDIT:固定数学ガイウスは(中学)

+1

正直言って、私はおそらく最適化されたバージョンではなく、あなたの "ブラケット"スタイルです。おそらくそれは私のものですが、結果>(((i + 4) - (a + b))* MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;精神的に解析するのが簡単です... – ZombieSheep

8

にこの別のバージョンを指摘するように「私の親愛なるおばさんサリーを許しなさい」でした。

  • 括弧
  • 指数精度
  • 乗算
  • 追加
  • 減算

ニーモニックデバイスは、今日学校で役立つ、およびプログラミングにまだ有用でした。

5

ような発現の操作の順序:

foo * (bar + baz^2/foo) 
  • Bラケット第
  • O rders(すなわちパワーズと平方根、等)
  • D ivisionとM ultiplication(左から右)
  • dditionとS ubtraction(左から右)

源:http://www.mathsisfun.com/operation-order-bodmas.html

4
私は(カナダ)小学校でこれを学んだ

は、それはBEDMASと呼ばれていました:

本の

Bラケット
E xponents
D ivision
M ultiplication
ddition
Sただ、世界のこの部分からのもののために ubtraction

。 ..

+0

ニュージーランドでも同様です。 「指数」は一般的に「注文」という名前よりも私にとって理にかなっています –

1

私は、古いBODMASニーモニックをどのようにプログラミングすることにどのように当てはまるのかは分かりません。言語間での操作の順序は保証されていませんが、多くは標準操作をその順序で保持していますが、すべてではありません。そして、操作の順序が本当に意味のあるものではない言語がいくつかあります(例えば、Lispの方言)。ある意味では、標準の注文を忘れて、カッコをすべて(例:(a * b)+ c))使用するか、作業する各言語の順序を具体的に学習する方がプログラミングの方がよいでしょう。

5

私は@Michael Stum's answerを編集する権限がありませんが、それは正しくありません。彼は、彼らは同じではありません

(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; 
0

私は特に小さな文にあなたの表現を分割すると、最適化のために良好であったC/C++でどこかで読んあります。そのため、複雑な式を1行に書くのではなく、変数を変数にキャッシュして、それぞれをステップごとに実行した後に、それらをビルドします。

最適化ルーチンは、変数がある場所にレジスタを使用します。そのため、スペースに影響しないはずですが、コンパイラを少し助けることができます。

関連する問題