문제
BODMAS란 무엇이며 프로그래밍에 왜 유용한가요?
해결책
http://www.easymaths.com/What_on_earth_is_Bodmas.htm:
2 + 3 x 5의 답은 무엇이라고 생각하시나요?
(2 + 3) x 5 = 5 x 5 = 25 인가요?
또는 2 + (3 x 5) = 2 + 15 = 17 ?
BODMAS는 우리를 구출하고 우리가 항상 올바른 답을 얻을 수 있도록 따라야 할 규칙을 제공할 수 있습니다.
(B)라켓 (O)rder (D)ivision (M)곱셈 (A)덧셈 (S)뺄셈
BODMAS에 따르면 곱셈은 항상 더하기 전에 수행되어야 합니다. 따라서 BODMAS에 따르면 실제로 17이 정답이며 2 + 3 x 5를 입력하면 계산기가 제공하는 답이기도 합니다.
프로그래밍에 왜 유용한가요?잘 모르겠지만 일부 대괄호를 제거할 수 있기 때문이라고 생각합니까?나는 상당히 방어적인 프로그래머이므로 내 라인은 다음과 같습니다.
result = (((i + 4) - (a + b)) * MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;
BODMAS를 사용하면 이를 좀 더 명확하게 만들 수 있습니다.
result = (i + 4 - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
나는 여전히 첫 번째 변형인 더 많은 괄호를 사용할 것이라고 생각합니다. 그러나 그렇게 하면 또 다른 규칙을 배울 필요가 없고 그것을 잊어버리고 디버그하기 어려운 이상한 오류를 일으킬 위험이 줄어듭니다.
다만 그 부분은 추측일 뿐입니다.
마이크 스톤 편집:Gaius가 지적한 대로 수학을 수정했습니다.
다른 팁
(중학교 때) 이것의 또 다른 버전은 "사랑하는 샐리 이모님을 실례합니다"였습니다.
- 괄호
- 지수
- 곱셈
- 분할
- 덧셈
- 빼기
니모닉 장치는 학교에서도 도움이 되었고 오늘날에도 프로그래밍에 여전히 유용합니다.
다음과 같은 표현식의 연산 순서:
foo * (bar + baz^2 / foo)
- 비라켓 먼저
- 영형rders(예: 거듭제곱 및 제곱근 등)
- 디아이비전과 중곱셈(왼쪽에서 오른쪽으로)
- ㅏ추가 및 에스빼기(왼쪽에서 오른쪽으로)
편집할 권한이 없어요 @Michael Stum의 답변, 그러나 그것은 정확하지 않습니다.그는 줄인다
(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;
제가 초등학교(캐나다)에서 이것을 배웠을 때는 BEDMAS라고 불렀습니다.
비라켓
이자형지수
디아이비전
중곱셈
ㅏ추가
에스빼기
이 지역 출신의 사람들에게만...
어쨌든 오래된 BODMAS 니모닉을 프로그래밍하는 데 얼마나 적용 가능한지 잘 모르겠습니다.언어 간 작업 순서는 보장되지 않으며, 많은 경우 표준 작업을 해당 순서로 유지하지만 모두가 그렇지는 않습니다.그리고 작업 순서가 그다지 의미가 없는 일부 언어도 있습니다(예: Lisp 방언).어떤 면에서는 표준 순서를 잊어버리고 모든 것에 괄호를 사용하거나(예: (a*b) + c) 작업하는 각 언어의 순서를 구체적으로 배우는 것이 프로그래밍에 더 나을 것입니다.
특히 C/C++에서는 표현식을 작은 명령문으로 분할하는 것이 최적화에 더 좋다는 내용을 읽었습니다.따라서 한 줄에 엄청나게 복잡한 표현식을 작성하는 대신 부분을 변수에 캐시하고 각 단계를 단계별로 수행한 다음 계속해서 구축합니다.
최적화 루틴은 변수가 있는 위치에서 레지스터를 사용하므로 공간에 영향을 주지 않아야 하지만 컴파일러에 약간 도움이 될 수 있습니다.