pseudo code (의사코드)

pseudo code는 특정 언어를 이용해 구현하기 전, 프로그램 또는 알고리즘이 작동하는 논리 흐름을 알기 쉽게 작성하는 것이다. 우선 pseudo code는 정해진 표준 문법이 없다. 만약 Python만을 이용해 개발한다면 Python 문법이나 키워드를 활용할 수도 있으며, 자연어를 이용해 과정을 풀어서 작성하기도 할 수도 있다. 

아래 내용은 표준적인 방식이 아니며, 자주 사용되는 작성법 몇 가지를 정리한 내용일 뿐이다. 각자 스타일에 맞게 변형하여 사용할 수 있다. 


자주 사용되는 키워드

Input: READ, OBTAIN, GET 

Output: PRINT, DISPLAY, SHOW 

Compute: COMPUTE, CALCULATE, DETERMINE 

Initialize: SET, INIT 

Add one: INCREMENT, BUMP

그 외에도 Return 등 키워드도 존재한다. 그리고 일반적으로 이러한 키워드는 대문자로 작성해준다. 


# Style 1
WHILE cond
  do something
END WHILE

# Style 2
WHILE cond
do something
END WHILE

# Style 3
WHILE cond {
do something
}

# Style 4
...

- Python과 같이 If, While 등 구문의 실행문을 들여쓰기로 표기하거나 C와 같이 { }을 이용해 묶기도 한다.

- 일반적으로 특정 구문이 끝났을 때 END를 붙여 END WHILE, END IF, END FOR과 같이 명시적으로 구문의 종료를 나타내기도 한다. 


반복문

WHILE 조건
  실행문
END WHILE

WHILE은 특정 조건을 만족할 동안 반복하는 C나 Python의 while 문과 같은 역할을 한다.

REPEAT
  실행문
UNTIL 조건

C 언어의 do ~ while과 같이 실행 후 조건 검사를하는 경우에 사용할 수 있다. 

FOR 반복할 배열
  실행문
END FOR

# Example 1
FOR num=1 to 7
  do somthing
END FOR

# Example 2
FOR each item in the array
  do somthing
END FOR

FOR은 특정 횟수 또는 특정 수열 / 배열의 요소를 순회하는데 특화되어 있다. 


조건문

IF 조건 THEN
  실행문1
ELSE
  실행문2
END IF

IF를 통해 조건을 검사한 후, 일치할 경우 실행문1을 실행하고 일치하지 않으면 ELSE의 실행문2를 실행하는 조건문이다. 

CASE 표현식 OF
  상황1 :실행문1
  상황2 :실행문2
  ...
END CASE

C언어의 switch-case문 또는 Python의 match-case문과 같이 표현식의 결과와 일치하는 상황을 찾아 실행문을 실행한다. 


예외 처리

TRY
  실행문1
CATCH 예외1
  실행문2
CATCH 예외2
  실행문3
END CATCH

try-catch 또는 try-expection-when 등 다양한 방법이 사용되는데 C, Java, Js 등 일반적으로 사용되는 try-catch를 활용해 예외가 발생한 상황을 처리할 수 있다. 


키워드 생성

위에서 사용한 키워드들은 예시일 뿐 사용자의 필요에 따라 다양한 키워드를 사용할 수 있다. 하지만 이 때 주의할 점은 특정 언어에 종속되지 않도록 작성하는 것이 좋다. 예를 들어 IF - ELIF 구문을 작성했다면 Python 사용자는 쉽게 의미를 이해하지만 Python에 익숙하지 않은 경우 코드가 명확히 이해되지 않을 수 있다. 그렇기 때문에 보편적으로 널리 사용되거나 의미가 명확한 키워드를 사용하는 것이 좋다. 


기호 및 서술

+, - 나 <, >와 같은 표현은 누구나 쉽게 이해할 수 있다. 하지만 %과 같은 기호는 의미가 불분명할 수 있기 때문에 누구나 쉽게 이해할 수 있는 표현을 사용하는 것이 좋다. 그리고 등호를 사용할 경우, 대입 연산자와 혼동할 수 있기 때문에 등호 대신 EQUAL이라고 명시적으로 작성하는 것도 방법이다. 

1 + 3 = 4
1 + 3 EQUAL 4

추가적으로 기호를 사용한 추상적 표현보다는 자연어를 활용한 명시적 표현이 더 명확할 때도 있다. 

# 기호
IF num % 2 == 0 THEN ...

# 자연어
IF num is even THEN ...

참고 자료: PSEUDOCODE STANDARD