수식표기법
(♥ 0)
분류
1. 개요[편집]
이항연산을 표현하는 방법으로, 연산자와 피연산자의 위치를 어떻게 적는지를 다룬다.
2. 명칭[편집]
전위/후위 표기법은, 수식 표기법과 관련된 폴란드의 학자 Jan Łukasiewicz(얀 우카시에비치)의 이름/지역/국가 명을 붙여 부르기도 한다. 그 가운데는 (역) 폴란드 표기법을 가장 많이 쓴다.
전위 표기법: Łukasiewicz / Warsaw / Polish notation
후위 표기법: reverse Łukasiewicz / Warsaw / Polish notation
3. 종류[편집]
간단한 예제
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 - /로 표기하며 계산 순서는 다음과 같다.
- 4와 5를 스택에 넣는다.
- 스텍에서 값 2개를 빼서 덧셈을 계산하고 결과를 스택에 넣는다.
- 2와 1을 스택에 넣는다.
- 스텍에서 값 2개를 빼서 뺄셈을 계산하고 결과를 스택에 넣는다.
- 스텍에서 값 2개를 빼서 나눗셈을 계산하고 결과를 스택에 넣는다.
장점은 프로그램의 구현이 간단해지기 때문에 초기의 프로그래밍 언어[3] 에서 많이 쓰였다. 하지만 복잡한 수식을 표현하는데 어려움이 있으며 계산 순서가 틀릴 경우 어디가 잘못됐는지 알아차리기 힘들다. 수기로 작성하기에 불편하단 단점도 있다.
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. 관련 문서[편집]
이 문서의 내용 중 전체 또는 일부는 2024-08-27 10:38:26에 나무위키 수식표기법 문서에서 가져왔습니다.
[1] VO어순을 갖는 다른 언어에서도 마찬가지다.[A] A B 물론 중위 표기법으로 읽을 수도 있다. 수식을 중위 표기법으로 읽을 수 없는 인간 언어는 존재하지 않는다.[2] 괄호 > 하이퍼 연산 > 거듭제곱, 제곱근, 로그, 삼각식, 계승 > 곱셈, 나눗셈 > 덧셈, 뺄셈 > (함수)[3] 유닉스 계열 운영체제에 기본적으로 깔려있는 dc(desk calculator)라는 계산기 프로그램이 이 표기법을 사용하는데, 이는 심지어 C 언어보다도 오래된 프로그램이다. Java를 컴파일하면 나오는 흔히 바이트코드라 일컬어지는 Java Instructions Set도 이에 해당한다.