math - Was bedeutet der Begriff "BODMAS"?

Translate

Was ist BODMAS und warum ist es beim Programmieren nützlich?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

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

Was denkst du ist die Antwort auf 2 + 3 x 5?

Ist es (2 + 3) x 5 = 5 x 5 = 25?

oder 2 + (3 × 5) = 2 + 15 = 17?

BODMAS kann zur Rettung kommen und uns Regeln geben, die wir befolgen müssen, damit wir immer die richtige Antwort erhalten:

(B) Schläger (O) rder (D) ivision (M) ultiplication (A) ddition (S) ubtraction

Laut BODMAS sollte die Multiplikation immer vor der Addition erfolgen, daher ist 17 laut BODMAS tatsächlich die richtige Antwort und auch die Antwort, die Ihr Rechner gibt, wenn Sie 2 + 3 x 5 eingeben.

Warum ist es beim Programmieren nützlich? Keine Ahnung, aber ich nehme an, es liegt daran, dass Sie einige Klammern loswerden können? Ich bin ein ziemlich defensiver Programmierer, daher können meine Zeilen folgendermaßen aussehen:

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

Mit BODMAS können Sie dies etwas klarer machen:

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

Ich denke, ich würde immer noch die erste Variante verwenden - mehr Klammern, aber auf diese Weise muss ich keine weitere Regel lernen und ich habe ein geringeres Risiko, sie zu vergessen und diese seltsamen, schwer zu debuggenden Fehler zu verursachen?

Ich rate nur diesen Teil.

Mike Stone EDIT: Die Mathematik wurde korrigiert, wie Gaius betont

Quelle
Translate

Eine andere Version davon (in der Mittelschule) war "Bitte entschuldigen Sie meine liebe Tante Sally".

  • Klammern
  • Exponenten
  • Multiplikation
  • Teilung
  • Zusatz
  • Subtraktion

Das Gedächtnisgerät war in der Schule hilfreich und auch heute noch beim Programmieren nützlich.

Quelle
Translate

Reihenfolge der Operationen in einem Ausdruck, wie z.

foo * (bar + baz^2 / foo) 
  • BSchläger zuerst
  • Orders (dh Kräfte und Quadratwurzeln usw.)
  • Division undMUltiplikation (von links nach rechts)
  • Addition undSUbtraktion (von links nach rechts)

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

Quelle
Translate

Ich kann nicht bearbeiten@ Michael Stums Antwort, aber es ist nicht ganz richtig. Er reduziert

(i + 4) - (a + b)

to

(i + 4 - a + b)

Sie sind nicht gleichwertig. Die beste Reduktion, die ich für den gesamten Ausdruck bekommen kann, ist

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

or

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

Als ich dies in der Grundschule (in Kanada) lernte, wurde es als BEDMAS bezeichnet:

BSchläger
Exponents
Division
MUltiplikation
ABedingung
SSubtraktion

Nur für diejenigen aus diesem Teil der Welt ...

Quelle
Translate

Ich bin mir nicht sicher, wie die Programmierung der alten BODMAS-Mnemonik überhaupt funktioniert. Es gibt keine Garantie für die Reihenfolge der Operationen zwischen Sprachen, und während viele die Standardoperationen in dieser Reihenfolge beibehalten, tun dies nicht alle. Und dann gibt es einige Sprachen, in denen die Reihenfolge der Operationen nicht wirklich so aussagekräftig ist (z. B. Lisp-Dialekte). In gewisser Weise sind Sie beim Programmieren wahrscheinlich besser dran, wenn Sie die Standardreihenfolge vergessen und entweder Klammern für alles verwenden (z. B. (a * b) + c) oder die Reihenfolge für jede Sprache, in der Sie arbeiten, speziell lernen.

Quelle
Translate

Ich habe irgendwo gelesen, dass es besonders in C / C ++ besser ist, Ihre Ausdrücke in kleine Anweisungen aufzuteilen, um sie zu optimieren. Anstatt äußerst komplexe Ausdrücke in eine Zeile zu schreiben, werden die Teile in Variablen zwischengespeichert und in Schritten ausgeführt. Anschließend werden sie im Laufe der Zeit aufgebaut.

Die Optimierungsroutinen verwenden Register an Stellen, an denen Sie Variablen hatten, sodass dies keinen Einfluss auf den Speicherplatz haben sollte, aber dem Compiler ein wenig helfen kann.

Quelle