문제

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(예: 거듭제곱 및 제곱근 등)
  • 아이비전과 곱셈(왼쪽에서 오른쪽으로)
  • 추가 및 에스빼기(왼쪽에서 오른쪽으로)

원천: http://www.mathsisfun.com/Operation-order-bodmas.html

편집할 권한이 없어요 @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++에서는 표현식을 작은 명령문으로 분할하는 것이 최적화에 더 좋다는 내용을 읽었습니다.따라서 한 줄에 엄청나게 복잡한 표현식을 작성하는 대신 부분을 변수에 캐시하고 각 단계를 단계별로 수행한 다음 계속해서 구축합니다.

최적화 루틴은 변수가 있는 위치에서 레지스터를 사용하므로 공간에 영향을 주지 않아야 하지만 컴파일러에 약간 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top