math - Que signifie le terme "BODMAS"?

Translate

Qu'est-ce que BODMAS et pourquoi est-il utile en programmation?

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

Toutes les réponses

Translate

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

Selon vous, quelle est la réponse à 2 + 3 x 5?

Est-ce (2 + 3) x 5 = 5 x 5 = 25?

ou 2 + (3 x 5) = 2 + 15 = 17?

BODMAS peut venir à la rescousse et nous donner des règles à suivre pour que nous ayons toujours la bonne réponse:

(B) raquettes (O) rder (D) ivision (M) ultiplication (A) addition (S) ubtraction

Selon BODMAS, la multiplication doit toujours être faite avant l'addition, donc 17 est en fait la bonne réponse selon BODMAS et sera également la réponse que votre calculatrice donnera si vous tapez 2 + 3 x 5.

Pourquoi est-ce utile en programmation? Aucune idée, mais je suppose que c'est parce que vous pouvez vous débarrasser de certains supports? Je suis un programmeur assez défensif, donc mes lignes peuvent ressembler à ceci:

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

avec BODMAS, vous pouvez rendre cela un peu plus clair:

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

Je pense que j'utiliserais toujours la première variante - plus de crochets, mais de cette façon, je n'ai pas à apprendre encore une autre règle et je risque moins de l'oublier et de provoquer ces erreurs étranges difficiles à déboguer?

Juste deviner cette partie cependant.

Mike Stone EDIT: Correction des mathématiques comme le souligne Gaius

La source
Translate

Une autre version de ceci (au collège) était "Veuillez excuser ma chère tante Sally".

  • Parenthèses
  • Exposants
  • Multiplication
  • Division
  • Une addition
  • Soustraction

Le dispositif mnémotechnique était utile à l'école et toujours utile dans la programmation aujourd'hui.

La source
Translate

Ordre des opérations dans une expression, par exemple:

foo * (bar + baz^2 / foo) 
  • Braquettes d'abord
  • Orders (c.-à-d. pouvoirs et racines carrées, etc.)
  • Division etMultiplication (de gauche à droite)
  • Addition etSubtraction (de gauche à droite)

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

La source
Translate

Je n'ai pas le pouvoir de modifierRéponse de @Michael Stum, mais ce n'est pas tout à fait correct. Il réduit

(i + 4) - (a + b)

to

(i + 4 - a + b)

Ils ne sont pas équivalents. La meilleure réduction que je puisse obtenir pour toute l'expression est

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

or

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

Quand j'ai appris cela à l'école primaire (au Canada), cela s'appelait BEDMAS:

Braquettes
Exponents
Division
Multiplication
Aaddition
Subtraction

Juste pour ceux de cette partie du monde ...

La source
Translate

De toute façon, je ne suis pas vraiment sûr de l'applicabilité à la programmation de l'ancien mnémonique BODMAS. Il n'y a aucune garantie sur l'ordre des opérations entre les langues, et bien que beaucoup maintiennent les opérations standard dans cet ordre, tous ne le font pas. Et puis il y a des langages où l'ordre des opérations n'est pas vraiment significatif (dialectes Lisp, par exemple). D'une certaine manière, vous êtes probablement mieux placé pour la programmation si vous oubliez l'ordre standard et utilisez des parenthèses pour tout (par exemple (a * b) + c) ou apprenez spécifiquement l'ordre pour chaque langue dans laquelle vous travaillez.

La source
Translate

J'ai lu quelque part que, en particulier en C / C ++, diviser vos expressions en petites instructions était préférable pour l'optimisation; Ainsi, au lieu d'écrire des expressions extrêmement complexes sur une seule ligne, vous mettez en cache les parties dans des variables et faites chacune d'elles par étapes, puis les construisez au fur et à mesure.

Les routines d'optimisation utiliseront des registres dans les endroits où vous aviez des variables donc cela ne devrait pas affecter l'espace mais cela peut aider un peu le compilateur.

La source