수식표기법

덤프버전 :

분류



1. 개요
2. 명칭
3. 종류
3.1. 전위 표기법
3.2. 중위 표기법
3.3. 후위 표기법
4. 표기법 변환
5. 관련 문서



1. 개요[편집]


이항연산을 표현하는 방법으로, 연산자와 피연산자의 위치를 어떻게 적는지를 다룬다.


2. 명칭[편집]


전위/후위 표기법은, 수식 표기법과 관련된 폴란드의 학자 Jan Łukasiewicz(얀 루카시에비치)의 이름/지역/국가 명을 붙여 부르기도 한다. 그 가운데는 (역) 폴란드 표기법을 가장 많이 쓴다.

전위 표기법: Łukasiewicz / Warsaw / Polish notation
후위 표기법: reverse Łukasiewicz / Warsaw / Polish notation


3. 종류[편집]


간단한 예제
방법
표기
전위
+12
중위
1+2
후위
12+


3.1. 전위 표기법[편집]


prefix notation, Polish notation(PN)
연산자를 피연산자 앞에 배치하는 방법이다.

영어권에서는 후위 표기법보다 사용하기에 편하다. 왜냐하면 영어에서 수식을 읽을 때 전위 표기법의 순서와 같은 순서로 읽기 때문이다.[1] 예를 들어 3+4는 'Add 3 and 4'라고 읽으므로 전위 표기법의 순서와 같다.[A] 따라서 후위 표기법보다 읽기 쉽고 중위 표기법보다 프로그램 구현이 간단하므로, LISP, 엑셀등의 일부 언어는 전위 방식을 사용한다.

3.2. 중위 표기법[편집]


infix notation
연산자를 피연산자 사이에 배치하는 방법이다.

일반인들은 모두 이 방법으로 계산을 배우고 사용한다. 특정 분야의 사람들이 아니라면 중위 표기법만 배운다.

다른 표기법들과 다르게 연산의 우선순위[2]를 정해야 하고, 뺄셈이나 나눗셈 같은 비가환 연산(non-commutative operation)도 신경써야 한다.#

3.3. 후위 표기법[편집]


postfix notation, reverse Polish notation(RPN)
연산자를 피연산자 뒤에 배치하는 방법이다.

한국어에서 사람이 수식을 읽는 순서와 같은 방식이다. 예를 들어 (3+4)×2는 '3과 4를 더한 것에 2를 곱한다.'로 읽힌다.[A]

스택을 사용하며 괄호가 필요없기 때문에 수식의 표현이 간단해지는 장점이 있다.

예를 들어 (4 + 5) / (2 - 1)은 역폴란드 표기법으로 4 5 + 2 1 - /로 표기하며 계산 순서는 다음과 같다.
  1. 4와 5를 스택에 넣는다.
  2. 스텍에서 값 2개를 빼서 덧셈을 계산하고 결과를 스택에 넣는다.
  3. 2와 1을 스택에 넣는다.
  4. 스텍에서 값 2개를 빼서 뺄셈을 계산하고 결과를 스택에 넣는다.
  5. 스텍에서 값 2개를 빼서 나눗셈을 계산하고 결과를 스택에 넣는다.

장점은 프로그램의 구현이 간단해지기 때문에 초기의 프로그래밍 언어[3]에서 많이 쓰였다. 하지만 복잡한 수식을 표현하는데 어려움이 있으며 계산 순서가 틀릴 경우 어디가 잘못됐는지 알아차리기 힘들다. 수기로 작성하기에 불편하단 단점도 있다.


파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는
문서의 r12 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r12 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)
문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)





4. 표기법 변환[편집]


원래 표기법에 해당하는 '연산자 1개와 피연산자 2개' 단위로 괄호를 계속 친 다음, 순서대로 바꾸려는 새 표기법으로 변환한다. 괄호가 필요없어지면 지우면 끝이다.

예시
  • 중위표기법 1+2×3 을 후위표기법으로 바꿀 때, 1+(2×3) → 1+(23×) → 1(23×)+ → 123×+
  • 중위표기법 1+2×3 을 전위표기법으로 바꿀 때, 1+(2×3) → 1+(×23) → +1(×23) → +1×23


5. 관련 문서[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-15 20:48:10에 나무위키 수식표기법 문서에서 가져왔습니다.

[1] VO어순을 갖는 다른 언어에서도 마찬가지다.[A] A B 물론 중위 표기법으로 읽을 수도 있다. 수식을 중위 표기법으로 읽을 수 없는 언어는 존재하지 않는다.[2] 괄호 > 하이퍼 연산 > 거듭제곱, 제곱근, 로그, 삼각식, 계승 > 곱셈, 나눗셈 > 덧셈, 뺄셈 > (함수)[3] 유닉스 계열 운영체제에 기본적으로 깔려있는 dc(desk calculator)라는 계산기 프로그램이 이 표기법을 사용하는데, 이는 심지어 C 언어보다도 오래된 프로그램이다.