이 블로그를 만들때부터 첫 포스팅은 이걸로 하겠노라 정했으므로 ..
대망의 첫 포스팅은 의사 코드에 대해서, 그리고 그 작성법에 대해 정리해보려고 합니다.
사실 제가 좀 헤매서 .. 같은 상황인 분들은 헤매지 마시라고.. (사실 이게 이 블로그의 바탕이 되는 취지긴 하죠)
의사 코드?
의사 코드, 다른 말로 슈도 코드라고도 하는 이것은 무엇인가
구글에서 의사 코드를 치자마자 나오는 위키백과에 정리된 개념에 따르면 이렇게 정리되어 있습니다.
의사코드(슈도코드, pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다. 의사(疑似)코드는 말 그대로 흉내만 내는 코드이기 때문에, 실제적인 프로그래밍 언어로 작성된 코드처럼 컴퓨터에서 실행할 수 없으며, 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 쓰인다.
여기 많은 말이 있지만 적당히 줄이자면
특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 코드의 작동 논리를 표현하기 위한 코드. 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 쓰인다.
이렇게 됩니다.
일종의 개발자가 코드를 치기 전, 설계 단계의 하나라고 보시면 될 것 같아요!
여담이지만, 슈도코드에서 pseudo는 '가짜'라는 뜻입니다.. 유사-코드 (?)
작성 방법
그래서 어떻게 쓰는가?
사실 위에서도 나왔지만 의사 코드는 특정 문법에 따라 쓰인 것이 아니므로 정해진 형식이 없습니다.
본인의 설계를 위한거라면 본인이 알아보기 쉽게, 남에게 설명하기 위한거라면 남이 보기 쉽게 적으면 됩니다.
그냥 그것 뿐이에요.
전 처음에 의사코드를 작성할때 으윽 그래서 어떻게 써야하는거지 하며 골머리 썩다가
그냥 제가 보기 편하게 적기로 했습니다 (해결!)
그러니 여러분도 너무 어떻게 써야할지 고민하지 말고 편한 마음으로 쓰도록 합시다.
너무 아무렇게나 써서 미래의 내가 못알아볼 지경의 것이 나오지 않도록 주의한다면 완벽합니다.
예시
그래도 어떻게 써야하는지 조금이라도 알고싶은 당신을 위해
가벼운 예시를 들고왔습니다.
예시는 모두의 친구 별찍기입니다.
*
**
***
****
...(생략)
이런 모양으로 별 한 개부터 열 개까지, 각 줄을 바꿔가며 출력하는 코드를 짠다고 해봅시다.
반복문에 들어가는 변수를 선언하고, 반복문을 만들고.. 줄 수만큼 반복문을 돌리고,
또 그 안의 반복문을 만들어서 그 안에서 별을 출력하고..
대충 이런 구조들을 편한 말로 적습니다.
각자 사용하는 언어의 구조에 대강 맞춰 괄호를 써가면서 약간 유사-코드처럼 쓰면,
실제 코드를 적을 때 좀 더 편합니다.
1
2
3
4
5
6
7
8
9
|
반복문에 쓸 i와 j를 선언
줄 반복문 시작 (i는 0 부터 10 미만까지)
{
별 반복문 시작 (j는 0 부터 i까지)
{
*을 출력한다
}
개행을 출력한다
}
|
cs |
이런 느낌으로 적을 수 있겠군요!
그러면 짜잔! 이게 바로 의사 코드입니다.
그럼 이제 이 의사코드를 기반으로 진짜 작동하는 코드를 완성해봅시다.
선언하랄때 선언하고, 시작하랄때 시작하고.. 이런 식으로 조금씩 실제 코드로 바꿔나갑니다.
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
void main()
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j <= i; j++)
printf("*");
printf("\n");
}
}
|
cs |
예시가 단순해서 와닿지 않을 수도 있지만, 의사코드를 기반으로 코드를 작성하면
쉬운 것부터 어려운것까지, 머릿속에서 바로 만들어지지 않는 코드를 쉽게 설계할 수 있습니다.
정리
머릿속에서 바로 코드를 뽑아내기가 힘든 한국어 사용자인 당신!
의사 코드는 그런 당신을 위한 설계도!
의사 코드를 쓰는 데에 형식은 크게 구애받지 않으므로, 한국어로 작성해도 아무도 뭐라고 하지 않는다!
미래의 내가 알아볼 수 있도록, 약간의 규칙을 세우고,
부담없이 작성해보며 자신만의 스타일을 완성할 수 있도록 합시다.
다음 포스팅에선 그래서 제가 직접 쓰고 과제로 제출도 했던(...) 의사 코드가 올라옵니다.
이걸 노션에서 치워버리고 싶어서요 하핫 (코슥)
댓글