Что означает термин «BODMAS» означает?

голоса
15

Что такое BODMAS и почему это полезно в программировании?

Задан 06/08/2008 в 15:54
источник пользователем
На других языках...                            


7 ответов

голоса
20

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

Как вы думаете, что ответ на 2 + 3 х 5 есть?

Это (2 + 3) х 5 = 5 х 5 = 25?

или 2 + (3 х 5) = 2 + 15 = 17?

BODMAS может прийти на помощь и дать нам следовать определенным правилам, так что мы всегда получаем правильный ответ:

(B) ракетки (O) rder (D) IVISION (М) ultiplication (А) ddition (S) ubtraction

Согласно BODMAS, умножение всегда должно быть сделано до того, поэтому 17 на самом деле правильный ответ в соответствии с BODMAS, а также будет ответ, который ваш калькулятор даст, если вы наберете в 2 + 3 х 5.

Почему это полезно в программировании? Понятия не имею, но я не предполагаю, что это потому, что вы можете избавиться от некоторых скобок? Я довольно оборонительный программист, так что мои строки могут выглядеть следующим образом:

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

с BODMAS вы можете сделать это немного яснее:

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

Я думаю, я бы до сих пор использовать первый вариант - более скобки, но таким образом я не должен узнать еще одно правило, и я столкнулся с меньшим риском забыть его и вызывая те странные трудно ошибки отладки?

Просто угадать в этой части, хотя.

Mike Stone EDIT: Исправлено математика, как Гай указует

Ответил 06/08/2008 d 15:57
источник пользователем

голоса
8

Другой вариант этого (в средней школе) был «Пожалуйста, простите мой дорогой тетю Салли».

  • Круглые скобки
  • Экспоненты
  • умножение
  • разделение
  • прибавление
  • вычитание

Мнемоника устройство было полезно в школе, и по-прежнему полезны в программировании сегодня.

Ответил 06/08/2008 d 16:01
источник пользователем

голоса
5

Я не в силах изменить ответ @Michael Штума в , но это не совсем правильно. Он уменьшает

(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;
Ответил 14/08/2008 d 02:29
источник пользователем

голоса
5

Порядок операций в выражении, таких как:

foo * (bar + baz^2 / foo) 
  • B ракетки первые
  • O rders (т.е. Пауэрс и квадратные корни и т.д.)
  • D IVISION и М ultiplication (слева направо)
  • Ddition и S ubtraction (слева направо)

Источник: http://www.mathsisfun.com/operation-order-bodmas.html

Ответил 06/08/2008 d 16:03
источник пользователем

голоса
4

Когда я узнал об этом в начальной школе (в Канаде) она упоминается как BEDMAS:

В Ракетки
E xponents
D IVISION
M ultiplication ddition S ubtraction

Только для тех, кто из этой части мира ...

Ответил 06/08/2008 d 16:11
источник пользователем

голоса
1

Я не совсем уверен, как это применимо к программированию старого BODMAS мнемонические в любом случае. Там нет никакой гарантии на порядок операций между языками, и в то время как многие сохранить стандартные операции в таком порядке, не все делают. И есть некоторые языки, в которых порядок операций не является на самом деле все, что содержательные (Lisp диалектов, например). В некотором смысле, вы, вероятно, лучше для программирования, если вы забыли стандартный заказ и либо использовать скобки для всего (например, (а * Ь) + с) или специально изучить порядок для каждого языка, в котором вы работаете.

Ответил 06/08/2008 d 16:12
источник пользователем

голоса
0

Я где-то читал, что особенно в C / C ++ разделив ваши выражения в небольшие заявления было лучше для оптимизации; поэтому вместо того, чтобы писать чрезвычайно сложные выражения в одной строке, вы кэшировать части в переменные и сделать каждую из них шагов, а затем построить их, как вы идете вперед.

Процедуры оптимизации будут использовать регистры в тех местах, где вы были переменными, так что не должно влиять на пространство, но это может помочь компилятору немного.

Ответил 22/10/2008 d 11:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more