PDF download PDF 다운로드 PDF download PDF 다운로드

의사코드(Pseudocode, 슈도코드, 수도코드, 유사코드라고도 불린다)는 알고리즘을 어떻게 짤지 계획할 때 사용되는 비공식적인 도구이다. 머리 속으로 코드 내용을 전부 생각해 낸 후 코드를 작성하는 것은 불가능에 가깝다. 따라서 실제 프로그램 코드를 작성하기 전에, 프로그램의 진행 과정을 단계별로 요약 정리하기 위해 의사코드를 많이 사용한다. 의사코드는 프로그래밍 언어와 인간의 언어가 섞여 있는 형태로 작성되지만, 기술적인 부분보다는 프로그램의 흐름을 이해하기 쉽게 표현하기 위해 노력한다.

파트 1
파트 1 의 5:

의사코드에 대한 이해

PDF download PDF 다운로드
  1. 1
    의사코드에 대해 알아 보자. 의사코드란 프로그램 코드를 작성할 때 사용하기 위해, 프로그램의 진행 과정을 단계별로 기록해 놓은 것이다. 많은 개발자들이 실제 코드를 작성하기 전에 의사코드를 이용해서 함수의 알고리즘을 구상한다. 의사코드는 프로그램의 문제를 해결하기 위한 도구로, 또는 다른 사람들과 프로그램의 흐름에 대해 소통하기 위한 방법으로 활용된다.
  2. 2
    왜 의사코드가 유용한지 알아 보자. 의사코드를 사용하면, 컴퓨터 프로그램 알고리즘이 어떻게 실행되어야 할지, 또는 어떻게 실행될 수 있을지 보여줄 수 있다. 많은 개발자들이 프로그램을 계획하는 초반 단계와 그 프로그램 코드를 실제로 작성하는 최종 단계를 이어 주는 도구로 의사코드를 많이 사용한다. 잘 작성된 의사코드는 실제 코드에서 주석으로 활용할 수 있으며, 나중에 그 프로그램 코드를 읽고 디버깅을 하거나 내용을 수정해야 하는 개발자에게 도움을 줄 수도 있다. 또한 다음과 같은 경우에도 유용하게 쓰일 수 있다.
    • 알고리즘의 작동 과정을 묘사하고 싶은 경우. 의사코드는 어떤 구조, 작동 방식, 기술 등이 프로그램 어디에서 어떻게 사용되어야 하는지 보여 줄 수 있다. 그래서 상급 개발자가 초보 개발자에게 특정한 기능을 구현하려면 코드를 어떻게 작성해야 하는지 설명할 때 많이 사용된다.
    • 기술적인 부분을 잘 모르는 사람에게 프로그램의 진행 과정을 설명할 때 사용된다. 프로그래밍 코드를 작성하려면 상당히 엄격한 규칙(문법)을 따라야 한다. 하지만 (프로그래밍을 할 줄 모르는) 대다수의 사람들은 쉽게 읽을 수 있으며, 각 단계의 목적을 명확하게 설명하는 방식의 글을 좋아한다.
    • 여러 사람이 함께 개발할 때 사용한다. 많은 경우, 소프트웨어 아키텍트들은 회사 개발자들이 자주 겪는 문제에 대한 해결책을 의사코드로 설명한다. 또한 다른 개발자들과 함께 개발할 때, 의사코드를 사용하면 자신의 의도를 명확하게 표현할 수 있다는 것을 깨닫게 될 것이다.
  3. 3
    의사코드는 상당히 주관적이며 표준화되어 있지 않다는 점을 기억하자. 의사코드에서 반드시 따라야 하는 규칙 같은 것은 없다. 하지만 다른 개발자들이 쉽게 이해할 수 있는 형식을 사용해야 한다. 혼자 개발한다면, 의사코드는 생각을 정리하고 계획한 것을 만드는데 도움이 되어야 한다. (다른 개발자, 하급 개발자, 프로그래밍 할 줄 모르는 사람 등) 여러 사람과 함께 개발하고 있다면, 모두가 지금 만드는 프로그램이 무엇인지 쉽게 이해할 수 있도록 프로젝트에서 사용할 최소한의 양식 정도는 만들어 두어야 할 것이다.
    • 대학의 프로그래밍 과정, 코딩 교육 과정에 등록했거나 회사에 입사했다면, 그곳에서 만든 의사코드를 "표준"처럼 사용하게 될 것이다. 하지만 이 표준은 기관, 교사에 따라 많이 달라진다.
    • 의사코드는 반드시 의미를 명확하게 전달해야 한다. 이 때, 프로그램 코드 작성 관례를 따르면 도움이 된다. 의사코드는 실제 프로그램 코드로 변환되어야 한다. 따라서 의사코드를 작성할 때, 최종 코드의 모습을 상상하면서 작성하면 좋다.
  4. 4
    알고리즘을 이해하자. 알고리즘이란 어떤 문제를 해결하기 위해, 프로그램이 어떤 동작을 어떤 순서로 수행해야 할지 차례대로 적어 놓은 것이다. 다시 말해, 문제를 해결하기 위해 거쳐야 할 과정을 나타낸 것이다. 이 과정은 대개 "순차적 실행(sequence)", "조건문", "반복", 경우에 따른 처리 등으로 나뉜다.
    • C 언어에서, "순차적 실행문"은 명령문이라고 불린다.
    • "조건문"이란 "if then else"처럼 어떤 조건에 해당될 때 실행되는 부분을 의미한다.
    • 반복문이란 특정한 명령문(들)을 특정 조건이 성립할 때까지 실행하는 것을 의미한다. "while", "do while", "for" 같은 명령문이 존재한다.
    • 경우에 따른 처리는 switch와 case로 처리한다.
  5. 5
    알고리즘의 흐름을 표현하는데 필요한 기초부터 공부하자. 순차적 명령문, 반복문, 조건문을 작성할 수 있다면, 알고리즘을 작성하는데 필요한 것은 다 알고 있는 것이다. [1]
    • 순차적 명령문은 한 작업이 실행된 후 다른 작업을 실행하는 것을 이야기한다. 다음 예를 확인해 보자.
      • 사각형의 높이값을 확인한다.
      • 사각형의 너비값을 확인한다.
      • 확인한 높이값과 너비값을 곱해서 넓이를 계산한다.
    • while문을 사용하면, 조건을 확인한 후 어떤 과정을 반복해 줄 수 있다. 시작할 때, while을 적고, 마칠 때 endwhile을 적는다. 조건이 만족될 때에만 반복문이 실행된다. 다음 예를 확인하자.
      • while 인구 < 한계
        • 최신 인구 = 과거 인구 + 출생자 수 - 사망자 수
      • endwhile
    • if-then-else는 조건에 따라 어떤 행동을 해야 할 지 결정할 때 사용된다. 사용되는 단어들은 if, then, else, endif이다. 다음 예를 확인하자.
      • if 업무 시간 > 평균 근무 시간 then
        • 초과 근무 메시지를 표시한다.
      • else
        • 일반적인 근무 메시지를 표시한다.
      • endif
    광고
파트 2
파트 2 의 5:

의사코드 예제

PDF download PDF 다운로드
  1. 1
    간단한 예제를 만들어 보자. 텍스트 파일에서 "foo"라는 단어를 찾아 전부 다른 단어로 바꾸어 주는 프로그램을 만든다고 하자. 프로그램은 파일을 읽어 들인 후, foo라는 단어를 찾아 본 후, 그 단어를 다른 단어로 바꾸어 주어야 한다. 다음 의사코드 초안을 읽어 보면 반복해야 할 부분이 실제 코드처럼 들여쓰기 되어 있다는 것을 알 수 있을 것이다.
    • 파일을 연다.
    • 파일의 각 행(line)에 대해서
      • 단어를 찾는다.
      • 그 단어를 지운다.
      • 그 자리에 새로운 단어를 넣는다.
    • 파일을 닫는다.
  2. 2
    의사코드를 교정한다. 의사코드의 장점 중 하나는 우선 기본적인 내용을 작성한 후, 어려운 부분은 나중에 채워 넣어도 된다는 점이다. 방금 작성한 단어 바꾸기 예제를 생각해 보면, 단어를 찾는 방법에 대한 내용이 없다. 따라서 프로그램에서 단어를 어떻게 찾고, 지우고, 바꾸어 넣을지에 대한 내용을 추가해 주자. 다음은 그 부분을 추가해 교정한 것이다.
    • 파일을 연다.
    • 파일의 각 행(line)에 대해서
      • 단어를 찾기 위해 다음과 같은 과정을 진행한다.
        • 각 글자를 읽어 들인다.
        • 글자가 바꾸고 싶은 단어의 첫 글자와 일치하면,
          • 끝까지 일치하는지 확인해 본 후
          • 일치한다면, 단어를 찾은 것이다.
          • 이제 그 단어를 지운다.
          • 그리고 그 자리에 새로운 단어를 넣는다.
    • 파일을 닫는다.
  3. 3
    의사코드를 이용해 기능을 추가할 수도 있다. 의사코드는 수학 문제를 풀 때 적어 보는 중간 단계처럼 문제를 어떻게 접근해야 할지 생각하는데 도움이 된다. 의사코드를 적절히 사용하면, 복잡한 프로그래밍 문제를 단순하게 표현할 수 있다. 하나씩 하나씩 천천히 바꾸어 나가자.
    • 파일을 연다.
    • 사용자에게 바꾸고 싶은 단어가 무엇인지 물어 본다.
    • 그리고 그 단어를 어떤 단어로 바꾸고 싶은지 물어 본다.
    • 파일의 각 행(line)에 대해서
      • 단어를 찾기 위해 다음과 같은 과정을 진행한다.
        • 각 글자를 읽어 들인다.
        • 글자가 바꾸고 싶은 단어의 첫 글자와 일치하면,
          • 끝까지 일치하는지 확인해 본 후
          • 일치한다면, 단어를 찾은 것이다.
      • 그 단어가 몇 번 나왔는지 센다.
      • 이제 그 단어에 해당하는 글자들을 지운다.
      • 그리고 그 자리에 새로운 단어에 해당하는 글자들을 채워 넣는다.
      • 단어를 몇 번 바꾸어 주었는지 사용자에게 알려준다.
    • 파일을 닫는다.
    광고
파트 3
파트 3 의 5:

표준적인 의사코드 작성 방법

PDF download PDF 다운로드
  1. 1
    한 줄에 하나의 명령만 적는다. 의사코드의 한 줄은 컴퓨터가 실행해야 하는 한 가지 행동만 표현해야 한다. 컴퓨터가 해야 할 일의 목록을 제대로 작성했다면, 많은 경우, 각 업무가 의사코드 한 줄에 해당할 것이다. 이제 해야 할 일 목록을 의사코드로, 그 의사코드를 실제 코드로 바꾸어 보자. [2]
    • 할 일 목록:
      • 이름, 시급, 업무 시간, 공제율(deduction rate)을 확인한다.
      • 계산을 한다.
      • 임금 = 시급 * 업무 시간
      • 공제 = 임금 * 공제율
      • 최종 임금 = 임금 - 공제
      • 이름, 임금, 공제, 최종 임금을 작성한다.
    • 의사코드:
      • 이름, 시급, 업무 시간, 공제율(deduction rate)을 확인한다.
      • 임금 = 시급 * 업무 시간
      • 공제 = 임금 * 공제율
      • 최종 임금 = 임금 - 공제
      • 이름, 임금, 공제, 최종 임금을 파일에 저장한다.
  2. 2
    영어로 의사코드를 작성 중이라면 각 명령문의 첫 단어를 대문자로 작성해 주자. 이 글의 영문판 을 확인해 보면 알겠지만, 방금 예제 속 의사 코드의 첫 단어인 READ, WRITE같은 경우 프로그램에서 사용되는 기능이라는 것을 표시하기 위해 대문자로 표기되었다. 이런 방식으로 많이 사용되는 단어로는 READ, WRITE, IF, ELSE, ENDIF, WHILE, ENDWHILE, REPEAT, UNTIL이 있다.
  3. 3
    어떻게 코드로 표현할지 적지 말고, 하고 싶은 이야기가 뭔지 기록한다. 어떤 개발자들은 "if a % 2 == 1 then"같이 의사코드를 진짜 프로그램 코드처럼 작성한다. 그러면 이 문장을 읽는 사람들은 a, %, == 같은 추상적인 기호들의 의미를 추측해야 한다. 그 대신 "숫자가 홀수라면(if an odd then)"이라고 적어 보자. 의미가 좀 더 명확해질 것이고, 다른 사람들도 코드의 의도에 대해 쉽게 이해하게 될 것이다. [3]
  4. 4
    어떤 것도 상상에 맡기지 않는다. 프로그램의 작동 과정에 필요한 모든 것을 빠짐없이 기록하자. 의사코드는 단순한 구조의 문장으로 작성하며, 대개 변수가 사용되지 않지만, 계정 번호, 이름, 거래 횟수 같은 현실에서 사용되는 단어를 이용해 프로그램이 해야 할 일을 설명한다.
    • 다음은 유효한 의사코드의 예이다.
      • 계정 번호와 비밀번호가 유효하고 일치하면, 기본 계정 정보를 보여 준다.
      • 각 주문량에 비례하게 총비용을 할당한다.
    • 다음은 유효한 의사코드가 아니다.
      • g=54/r이라고 하자. (이유: 변수를 쓰지 말고, 각 변수의 실제 의미를 적어 주자.)
      • 다 될 때까지 주요 과정을 반복한다. (이유: "주요 과정"이 뭔지, "다 되는 것"이 뭔지 명확하게 해야 한다.)
  5. 5
    표준적인 프로그래밍 구조를 따르자. 의사코드에 대한 표준은 없지만, 현재 존재하는 (순차적) 프로그래밍 언어의 구조를 활용하면 다른 개발자들도 코드의 내용을 쉽게 이해할 수 있다. 지금 프로젝트에서 사용하고 있는 프로그래밍 언어와 비슷한 방식대로 "if", "then", "while", "else", "loop" 같은 어휘를 사용해 주자.
    • if 조건 then 명령 - 어떤 조건이 만족될 때에만 명령을 실행한다. "명령"이란 프로그램이 해야 하는 특정한 작업을 의미한다. "조건"이란 프로그램이 작업을 수행하기 전에 데이터가 갖춰야 할 일정한 조건을 의미한다.
    • while 조건 do 명령 - 조건을 만족할 동안 멈추지 않고 계속 수행되어야 하는 작업을 의미한다.
    • do 명령 while 조건 - "while 조건 do 명령"과 무척 비슷하지만, 이 경우에는 처음 한 번은 조건을 확인해 보지 않고 명령을 실행한다. 하지만 두 번째부터는 조건에 맞는지 확인하고 계속 실행할지 말지 정한다.
    • for a = 숫자1 to 숫자2 do 명령 - 이 명령은 반복문이 시작될 때 a라는 변수가 "숫자1"로 자동적으로 설정된다. a는 반목문이 진행될 때마다 1씩 증가하며, 이것은 a가 "숫자2"가 될 때까지 계속된다. 문맥의 의미에 맞게 a 대신 다른 이름을 지어 주어도 된다.
    • function 이름 (매개변수): 명령 - 특정 "이름"이 나타나면 그에 해당하는 명령을 실행한다. 자주 사용되는 명령들을 간략하게 표기하기 위한 방법이다. 매개변수는 명령을 명확하게 내리기 위해 필요한 값들이다.
  6. 6
    블록을 이용해 코드의 구조를 정리해 주자. 블록이란 여러 가지 명령들을 하나로 묶어주는 방법이다. (블록 1이 실행된 후 블록 2가 실행된다는 것을 표현하기 위해) 두 블록을 나열해 줄 수도 있고, (명령 1과 명령 2는 관련되어 있다는 것을 표시하기 위해) 그냥 명령문 몇 개를 감싸 주어도 된다. 대개 들여 쓰기를 이용해서 각 명령문 간의 관계를 보여 준다. 블록을 만드는 방법은 2가지가 있다. [4]
    • 중괄호 사용하기
      • {
      • 명령 1
      • 명령 2
      • ...}
    • 빈칸 사용하기. 빈칸을 사용할 때에는 같은 블록에 포함된 명령은 같은 위치에서 시작되어야 한다. 블록 안에 블록이 들어간다면, 들여 쓰기는 더 깊어져야 한다. 부모 블록이 다시 시작되면, 나중에 똑같은 깊이의 블록이 등장한다고 해도 현재의 자식 블록은 종료된다.
      • 블록1
      • 블록1
        • 블록2
        • 블록2
          • 블록3
        • 블록2
          • 블록3
      • 블록1
    광고
파트 4
파트 4 의 5:

의사 코드 작성 연습

PDF download PDF 다운로드
  1. 1
    코드 작성을 시작할 때 코드의 목적에 대해 생각해 보자. 그러면 나중에 의사 코드를 제대로 작성했는지 판단할 수 있다. 다시 말해, 의사코드의 실행 결과가 목적을 달성한다면, 의사코드는 완성된 것이다. 과정을 하나씩 적어 보자. 과정이 단순하다면 한 번에 작성할 수 있을 것이다. 적어 놓은 의사 코드를 읽어 보면서 다음과 같은 질문에 답해 보자.
    • 프로그램의 진행 과정에 조금이라도 관심이 있는 사람이라면 의사 코드를 읽고 이해할 수 있을까?
    • 이 의사 코드는 실제 코드로 쉽게 바뀔 수 있을까?
    • 과정을 진행하는데 필요한 단계 중, 빠뜨린 것은 없나?
    • 의사 코드를 읽는 사람들이 이해할 수 있는 용어들을 사용했는가?
  2. 함수는 대개 알고리즘을 진행하는데 필요한 변수나 기타 요소들을 정의하고 시작한다.
    • 변수나 데이터들이 어떻게 사용될지 보여 준다. [5]
    • 값들을 어떻게 제어할지 결정하자. 의사코드를 작성하기 전에 사용자의 입력과 출력을 어떻게 받아서 처리할지 고민해 보자. 어떤 GUI를 쓸지, 어떤 오류가 발생할 수 있을지 생각해 보자. [6]
  3. 기본적인 의사 코드를 어떻게 작성해야 할지 결정했다면, "이벤트 주도" 또는 "객체 주도"형 코드를 작성하기 위해 어떻게 해야 할지 고민해 보자. 각 줄의 코드는 순차적 명령, 반복, 선택 같은 여러 가지 행동들을 기록해야 한다.
  4. 컴퓨터 코드를 읽을 때, 각 부분이 무엇을 의미하는지 설명하기 위해 주석을 사용한다. 의사 코드는 코드가 어떻게 진행되는지 사람들이 이해할 수 있는 언어로 기록하는 것이 목적이기 때문에 의사코드에는 대개 주석이 필요 없다.
    • 많은 개발자들이 미리 작성해 놓은 의사 코드를 최종 코드에 반영한다. 함께 일하는 다른 개발자들이나 그 코드를 읽고 의견을 제시하거나 공부하려는 사람들에게 각 줄의 의미를 전달하는데 도움이 되기 때문이다.
    • 각 언어에 맞는 주석을 사용해 주자 (예: C, C#, Java, JavaScript는 //, 파이썬, 루비는 # 등). 그래야 컴퓨터에서 그 뒤의 내용을 코드라고 인식하지 않는다. 또한 들여 쓰기도 잘 맞추어 주자. 다음 예를 읽어 보자.
      • // 만약 로봇 앞에 장애물이 없다면,
        • // 로봇에게 움직이라고 명령한다.
        • // 방금의 움직임을 수행한 명령 목록에 기록한다.
        • // true를 반환한다.
      • //또는
        • //로봇을 움직이지 말고, false를 반환한다.
      • // 조건 종료.
  5. 꼭 문법에 맞게 적어야 할 필요는 없지만, 말은 되어야 한다. 이 의사 코드를 읽게 될 사람의 입장에서 생각해 보자. 코드가 명확하게 지시를 내리고 있는지 고민해 보자.
    • 코드의 각 구성 요소를 잘 살펴 보자. 예를 들어, 코드를 작성할 때에는 파일에서 정보를 읽어 들이기, 파일에 정보를 기록하기, 정보를 화면에 표시하기, 계산하기, 변수들 값 처리하기, 몇 가지 항목들을 비교하기 같은 핵심 동작을 수행해야 한다. 컴퓨터 코드는 이런 핵심 동작들을 순서에 맞게 잘 나열하는 것이다. 의사 코드도 마찬가지다.
    • 의사코드에 해야 할 일을 명시하자. 무엇을 해야 할 지 알게 되었다면, 의사 코드로 작성해 보자. 사용하게 될 프로그래밍 언어를 따라 하는 것도 좋지만, 꼭 그럴 필요는 없다.
    • 필요한 요소가 다 들어갔는지 확인해 보자. 변수 선언 같은 기술적인 부분은 적지 않아도 되지만, 해야 할 일이 무엇인지, 어떤 값을 다루어야 하는지는 명확하게 적어야 한다.
  6. 6
    의사 코드를 검토한다. 의사 코드가 별 문제 없이 프로그램의 진행 과정을 잘 묘사하고 있다면, 다른 사람들과 같이 내용을 검토해 보자. 팀원들에게 어떤 부분을 개선해야 할지 의견을 물어 보자. 의외로 부족한 부분이 많을 수 있다. 따라서 이 과정에서 부족한 점을 보완해 보자. 혼자서 코드를 작성하고 있다고 해도, 써 놓은 것을 읽어 보고, 주변 사람들에게 한 번 읽어 봐 달라고 부탁해 보자.
    • 팀원들이 의사 코드에 대해 좋은 반응을 보이지 않았다면, 좀 더 명확하게 적어 보자. 또한 무엇이 잘못되었는지 물어 보자. 단계들이 명확하지 않은 건지, 빠뜨린 단계가 있는 건지 물어 보자.
  7. 7
    의사 코드를 저장한다. 의사 코드를 같이 읽어 보았다면, 저장해 놓자. 이제 실제 코드를 작성할 때, 의사 코드를 주석으로 추가하자. 컴퓨터가 코드로 인식하지 않도록 각 프로그래밍 언어의 주석 문법에 맞게 적어 주자.
    광고
파트 5
파트 5 의 5:

의사코드를 실제 프로그래밍 언어로 변환하기

PDF download PDF 다운로드
  1. 1
    의사 코드를 읽고 어떻게 작동하는지 이해하자. 의사 코드는 알고리즘을 표현하는 방법이다. 예를 들어, 작성된 의사코드가 단어 목록을 알파벳 순서로 나열하는 코드라면, 그 과정을 원하는 프로그래밍 언어로 구현하려면 어떻게 해야 하는지 알려 줄 것이다.
  2. 2
    사용하는 프로그래밍 언어에 맞는 요소들을 활용한다. 변수 선언, if문, 반복문 같은 것들을 문법에 맞게 사용하자. 의사 코드의 각 줄은 사용하는 프로그래밍 언어에 따라 여러 가지 방법으로 바뀔 수 있다.
    • 예를 들어, 사용자에게 어떤 데이터를 표시한다고 하자. 팝업 창을 이용해서 보여 줄 수도 있고, 이미 존재하는 GUI를 이용해서 보여 줄 수도 있다.
  3. 3
    의사 코드를 구현하자. 의사 코드가 깔끔하고 단순하며 효율적으로 작동할 수 있도록 실제 코드로 변환하자. 잘 작성된 의사 코드는 효율적이며 문제가 없는 알고리즘으로 쉽게 바뀔 수 있다.
  4. 4
    다시 한 번 읽어 보면서 의사 코드와 실제 코드를 비교해 본다. 실제 코드가 의사 코드에서 지시한 내용을 전부 수행하고 있는지 확인해 보자. 예를 들어, 의사 코드에서 정의한 입력 값에 따른 결과 값을 전부 실험해 보자. 의사 코드를 작성할 때 정의한 값을 입력해 보고 생각한대로 출력되는지 확인해 보자. 같이 일하는 동료 개발자에게 코드를 보여 주고 좀 더 잘 작성하려면 어떻게 해야 하는지 물어 보자.
    광고

  • 컴퓨터의 작동 원리에 대해 이해하자. 컴퓨터 코드는 컴퓨터에게 어떤 일을 시키기 위해 작성하는 것이다. 이것을 이해한다면 좀 더 실제 코드에서 사용할 수 있는 의사코드를 작성할 수 있을 것이다.
  • 빈칸을 잘 활용하자. 빈칸은 코드를 구분하는데 자주 사용되며, 특히 사람이 읽기 편한 코드를 작성하려면 필수적인 기능이다. 빈칸을 이용해 코드를 "블록"처럼 다루어 보자. 같은 크기의 빈칸을 가지고 시작하는 코드를 하나의 블록처럼 다루어 보자.
광고

이 위키하우에 대하여

이 문서는 54,662 번 조회 되었습니다.

이 글이 도움이 되었나요?

광고