Computer Engineering/컴퓨터 과학(CS: Computer Science)

[CS] 의사코드의 개념과 작성법 (슈도코드, Pseudo-code)

잇트루 2022. 9. 1. 22:00
반응형

의사코드 (슈도코드, Pseudo-code)

의사코드는 프로그래밍 언어를 코드로 작성하기 전에, 무엇을 어떻게 동작하도록 자성할 지에 대하여 사람이 이해할 수 있는 언어로 작성하는 것이다. 의사코드를 작성하기 전에 문제를 이해하고 논리적으로 해석할 줄 알아야 한다. 이후 컴퓨팅 사고로 전환하여 의사코드를 작성하고 개발 언어로 코드를 작성한다.

 

두 수를 더하는 코드를 작성 예시로 다음과 같이 나타낼 수 있다.

// 1. 단순 명세
1. 두 가지 숫자를 준비한다.
2. 더하기를 수행한다.
3. 결과값을 도출한다.

// 2. 두 수를 더하는 함수 만들기
입력 : 두 가지 정수(num1, num2)
처리 : num1 + num2
출력 : 두 가지 정수를 더한 값(result)

이러한 코드를 프로그래밍 언어로 작성한다면 다음과 같이 나타낼 수 있다.

// 1.단순 명세
int num1 = 5;
int num2 = 10;
int result = num1 + num2;

// 2.두 수를 더하는 함수 만들기
int add(int num1, int num2) {
	result = num1 + num2;
	return result;
}

 

의사코드를 작성해야 하는 이유

의사코드는 단순한 코드를 위해 작성하는 것은 아니다. 그러나 만약, 웹 서비스 또는 어플리케이션 등의 규모가 큰 개발을 한다고 가정하면, 기능을 구현하기 위한 계획이 필요할 것이다. 전체적으로 큰 계획을 하고, 이를 세부적으로 나누어 코드를 작성하기 위한 계획을 할 때 필요하다.

또한 개발 공부함에 있어 이론적으로는 이해가 되나 막상 코드로 직접 옮기려 할 때 어려움을 겪을 수 있다. 이러한 문제점을 해결할 때 의사코드는 우리에게 큰 힌트를 줄 것이다.

 

사람은 단순한 생각이나 여러 표현 방식의 글들을 읽어 문제에 대한 이해가 가능하나, 컴퓨터는 이러한 생각들을 단순하게 표현한다고 이해하지 않는다. 따라서 작은 것부터 하나하나 고려하고 작성해야만이 비로소 컴퓨터가 이해하고 결괏값을 나타낸다. 즉, 프로그래밍뿐만 아니라 컴퓨터의 작동 방식을 이해하고 논리적으로 해석하여 표현할 수 있는 컴퓨터적 사고를 갖기 위해 의사코드 작성하는 것을 게을리하지 않아야 한다.

 

의사코드 장점

1. 시간이 단축된다.

처음부터 코드를 작성하는 것이 더 빠르다고 생각할 수 있다. 하지만 문제가 복잡해지거나 코드의 양이 길어진다면, 코드를 작성하는 시간보다 작성한 코드를 분석하는 시간이 더 길어질 수 있다. 이러한 경우 의사코드를 작성하여 본인이 생각한 문제 해결 방법을 남겨 놓는다면 코드를 분석하는 시간을 단축시킬 수 있다.

 

2. 디버깅에 용이하다.

코드 작성을 끝마친 후 테스트 할 때, 오류가 발생한다면 디버깅을 하게 된다. 해당 오류 코드와 본인이 작성한 의사코드를 함께 확인하면 오류에 대한 원인 파악을 쉽게 할 수 있다.

 

3. 프로그래밍 언어에 익숙하지 않더라도 문제를 이해할 수 있다.

프로그래밍 언어에 익숙하지 않은 사람도 의사코드를 작성한 후 살펴보면, 문제를 이해하는데 큰 도움이 된다. 또한, 의사코드가 작성된 코드를 다른 사람이 확인할 때에도 로직을 더욱 쉽게 이해할 수 있다.

 

의사코드 작성법

의사코드는 사람이 이해할 수 있도록 표현한 것으로 표준화된 작성 방법이 존재하는 것은 아니다.

하지만 본인들의 분야에서 쉽게 적용할 수 있도록 일련의 규칙들을 만들어 놓는 것이 중요하다.

 

다음과 같이 크게 두 가지 방식 중 원하는 작성법을 따른 후 자신만의 규칙을 정하여 의사코드를 작성한다.

1. 본인과 다른 사람이 이해할 수 있는 자연어(영어, 한국어 등)를 사용하여 작성한다.

2. 자연어와 프로그램 언어의 조합을 사용한다.

 

자신만의 규칙을 정할 수 있도록 몇 가지 방법을 제안한다.

해결하고자 하는 문제를 순서대로 표현한다.

// 장보기 의사코드
1. 필요한 물건들을 메모한다.
2. 마트에 간다.
3. 구매할 물건을 바구니에 담는다.
4. 계산대에서 물건을 계산한다.

 

조건이 필요한 경우 해당 부분을 사용할 조건문을 사용하여 표현한다.

ex) 구매할 물건을 바구니에 담는다.

// 소지한 금액에 초점을 맞춘 경우
while 총 가격 <= 소지한 금액 (금액이 부족한 경우 while 종료)
	총 가격 = 현재 바구니 가격 + 방금 고른 물건의 가격

	if 필요한 물건을 다 담았다. (만약, 금액은 남았으나 구매할 물건을 모두 골랐을 경우)
		break

	if 만약, 총 가격이 소지한 금액을 넘었다.
		총가격 = 현재 바구니 가격 - 방금 담은 물건의 가격
		break
// 구매할 물건의 개수에 초점을 맞춘 경우
for 현재 개수, 구매할 물건 1개씩 증가, 최대 10개까지
	총 물건 개수 = 총 물건 개수 + 1
	총 가격 = 총 가격 + 방금 고른 물건의 가격
	
	if 물건의 개수가 다 차지 않았는데 금액이 부족하다.
		총 물건 개수 = 총 물건 개수 - 1
		총 가격 = 총 가격 - 방금 고른 물건의 가격
		break

 

개인적으로 의사코드를 작하기 위한 규칙을 정하여 준수한다.

한 줄에 하나의 동작만을 작성한다.

모든 동작을 순서대로 나열한다.

괄호를 적극적으로 사용한다. or 사용하지 않는다.

반응형