Vă mulțumim pentru susținere

Ce înseamnă termenul "BODMAS"?

Ce este BODMAS și de ce este util în programare?

0
adăugat editat
De obicei, folosesc spațiu alb pentru a afișa ordinea operațiilor pe cele patru + - / * operații, cum ar fi: a + b * c Pentru toți ceilalți operatori, folosesc paranteze pentru a face ordinea operațiunilor clare.
adăugat autor Jeremy Ruten
N-am văzut niciodată BODMAS înainte de azi. Am învățat PEMDAS (Parente, exponenți, multiplicare, diviziune, adăugare, scădere).
adăugat autor FishBasketGordo
adăugat autor foxy

7 răspunsuri

Când am învățat acest lucru în școala de clasă (în Canada) a fost numită BEDMAS:

Brackets
Exponents
Division
Multiplication
Addition
Subtraction

Doar pentru cei din această parte a lumii ...

0
adăugat
De asemenea, aici, în Noua Zeelandă. Exponentii îmi dau mai multă sens decât generic numit "Ordin"
adăugat autor Orion Edwards

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

Ce credeți că este răspunsul la 2 + 3 x 5?

     

Este (2 + 3) x 5 = 5 x 5 = 25?

     

sau 2 + (3 x 5) = 2 + 15 = 17 <

     

BODMAS poate să vină la salvare și să ne dea reguli de urmat pentru a obține întotdeauna răspunsul corect:

     

(B) rachete (O) rder (D) (M) ultiplicare (A) ddition (S) ubtraction

     

În conformitate cu BODMAS, multiplicarea ar trebui făcută întotdeauna înainte de adăugare, prin urmare 17 este de fapt răspunsul corect în conformitate cu BODMAS și va fi, de asemenea, răspunsul pe care îl va da calculatorul dvs. dacă tastați în 2 + 3 x 5.

De ce este util în programare? Nici o idee, dar presupun că este pentru că poți scăpa de câteva paranteze? Sunt un programator destul de defensiv, așa că liniile mele pot arăta astfel:

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

cu BODMAS puteți face acest lucru un pic mai clar:

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

Cred că aș folosi în continuare prima variantă - mai multe paranteze, dar în acest fel nu trebuie să învăț încă o regulă și am riscat mai puțin să o uit și să fac acele ciudate greu de depanare a erorilor?

Doar ghicind în acea parte.

Mike Stone EDIT: Matematică fixă, după cum arată Gaius

0
adăugat
Pentru a fi sincer, eu sunt cu stilul tău "bracketty", mai degrabă decât versiunea presupusă optimizată. Poate că sunt doar eu, dar găsesc> result = (((i + 4) - (a + b)) * MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER; mai ușor de analizat mental ...
adăugat autor ZombieSheep

Nu prea știu cât de aplicabil pentru programarea vechii mnemonice BODMAS este oricum. Nu există nicio garanție privind ordinea de operațiuni între limbi, iar în timp ce mulți păstrează operațiunile standard în această ordine, nu toți fac. Și apoi există câteva limbi în care ordinea operațiunilor nu este cu adevărat tot ceea ce are sens (dialectele Lisp, de exemplu). Într-un fel, probabil că ești mai bine pentru programare dacă uiți comanda standard și folosiți paranteze pentru tot (de exemplu (a * b) + c) sau în mod special pentru a învăța ordinea pentru fiecare limbă în care lucrați.

0
adăugat

Ordinea operațiilor într-o expresie, cum ar fi:

foo * (bar + baz^2 / foo) 
  • Brackets first
  • Orders (ie Powers and Square Roots, etc.)
  • Division and Multiplication (left-to-right)
  • Addition and Subtraction (left-to-right)

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

0
adăugat

O altă versiune a acestei (în școala medie) a fost "Vă rog să-mi scuzați dragă mătușa Sally".

  • Parantezele
  • Exponenții
  • Înmulțire
  • Division
  • Adăugarea
  • Scadere

Dispozitivul mnemonic a fost util în școală și este încă util în programarea de astăzi.

0
adăugat

Nu am puterea de a edita răspunsul lui @Michael Stum , dar nu este csauect. El reduce

(i + 4) - (a + b)

la

(i + 4 - a + b)

Ele nu sunt echivalente. Cea mai bună reducere pe care o pot obține pentru întreaga expresie este

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

sau

(i + 4 - a - b) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
0
adăugat

Am citit undeva că mai ales în C / C ++ divizarea expresiilor tale în declarații mici a fost mai bună pentru optimizare; astfel încât, în loc să scrieți expresii extrem de complexe într-o singură linie, cache-le în variabile și faceți fiecare în pași, apoi construiți-le în timp ce mergeți.

Rutinele de optimizare vor folosi registrele în locurile în care aveați variabile, astfel încât să nu aibă impact asupra spațiului, dar poate ajuta compilatorul puțin.

0
adăugat