Skip to content
Home » 수도 코드 작성법 | 14주차 알고리즘 의사코드 작성하기 순서도와비교 114 개의 정답

수도 코드 작성법 | 14주차 알고리즘 의사코드 작성하기 순서도와비교 114 개의 정답

당신은 주제를 찾고 있습니까 “수도 코드 작성법 – 14주차 알고리즘 의사코드 작성하기 순서도와비교“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 YunHee Kang 이(가) 작성한 기사에는 조회수 2,615회 및 좋아요 8개 개의 좋아요가 있습니다.

의사코드 작성의 표준(Standard)
  1. 한줄에 하나의 명령만. …
  2. 영어로 의사코드작성 중이라면 각 명령문의 첫 단어를 대문자로 작성해 준다. …
  3. 어떻게 코드로 표현할지 적지 말고, 하고 싶은 이야기가 뭔지 기록한다. …
  4. 프로세스에 필요한 모든 것을 빠짐없이 기록한다.

수도 코드 작성법 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 14주차 알고리즘 의사코드 작성하기 순서도와비교 – 수도 코드 작성법 주제에 대한 세부정보를 참조하세요

수도 코드 작성법 주제에 대한 자세한 내용은 여기를 참조하세요.

수도코드(pseudocode) 작성하는 방법 – 강백호같은개발자

수도코드란? 수도코드 또는 의사코드로 불리는 이 방법은. 실제로 코딩으로 들어가기 전에 우리의 언어로 만들어질 코딩의 흐름을 정리해보는 …

+ 더 읽기

Source: seagull-dev.tistory.com

Date Published: 9/19/2021

View: 4121

의사코드 – 나무위키

의사코드는 이런 두 이질적인 언어 체계인 자연어와 프로그래밍 언어 … 단, 실제로는 의사 코드 작성은 설계 단계의 일부로 취급하는 경우가 많다.

+ 여기에 자세히 보기

Source: namu.wiki

Date Published: 4/26/2021

View: 1554

Pseudo-code 작성법 – Yoon Sung’s Blog

나만의 규칙을 몇가지 세웠다. · 추상적인 표현, 추측이 필요한 표현은 절대 적지 않는다. · 기능별로 나누어서 작성한다. · 함수의 경우 매개변수의 이름을 …

+ 자세한 내용은 여기를 클릭하십시오

Source: unluckyjung.github.io

Date Published: 8/17/2022

View: 2153

의사 코드 작성법 – 와르르 개발자 노트 – 티스토리

의사코드(슈도코드, pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 …

+ 여기에 표시

Source: drybone-developer.tistory.com

Date Published: 8/1/2022

View: 5575

코드 짜는 일이 어렵다면 먼저 슈도 코드부터 해보자 – 브런치

슈도 코드(Pseudo Code)로 생각 연습 하기 | 코딩을 배울 때 대부분 … 슈도 코드는 ‘설계 단계’에서 작성하는 것으로 프로그램을 어떤 과정으로 …

+ 더 읽기

Source: brunch.co.kr

Date Published: 4/30/2021

View: 2793

슈도 코드란? (Pseudo Code) / 논문 Pseudo Code 표기법(AI …

의사코드를 실제로 작성해보자 ; 슈도코드(pseudocode)는 문법 구문의 세부세항에 산만해질 필요없이 설계자가 알고리즘의 ; 로직에 집중할 수 있도록 …

+ 더 읽기

Source: koreapy.tistory.com

Date Published: 8/2/2022

View: 1618

좋은 의사코드 작성법

좋은 의사코드 작성법. 의사(疑似: 비교할 의, 비슷할 사 | Pseudo: 가짜의- ) 코드는 컴퓨터 프로그램이나 알고리즘이 수행해야할 내용을 우리가 …

+ 여기에 자세히 보기

Source: sujinlee.me

Date Published: 4/25/2021

View: 7769

주제와 관련된 이미지 수도 코드 작성법

주제와 관련된 더 많은 사진을 참조하십시오 14주차 알고리즘 의사코드 작성하기 순서도와비교. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

14주차 알고리즘 의사코드 작성하기 순서도와비교
14주차 알고리즘 의사코드 작성하기 순서도와비교

주제에 대한 기사 평가 수도 코드 작성법

  • Author: YunHee Kang
  • Views: 조회수 2,615회
  • Likes: 좋아요 8개
  • Date Published: 2020. 6. 13.
  • Video Url link: https://www.youtube.com/watch?v=Op8rBuX6oR0

의사코드(Pseudo-code) 작성법

의사코드(pseudo code) 작성법

의사코드 개념 :

의사코드란 프로그램 코드를 작성할 때 사용하기 위해, 프로그램의 진행 과정을 단계별로 기록해 놓은 것.

가짜의(Pseudo) – 코드 로써, 알고리즘이 수행될 내용을 인간의 언어로 간략히 설명해 놓은것을 말한다.

사용 이유 :

나중에 그 프로그램 코드를 읽고 디버깅을 하거나 내용을 수정해야 하는 개발자에게 도움을 줄 수도 있음.

컴퓨터 프로그램 알고리즘이 어떻게 실행되어야 할지, 또는 어떻게 실행될 수 있을지 보여줄 수 있음.

나중에 코드입력, 테스트, 디버그 수정 단계에서 작업하는 것보다 의사코드 설계 단계에서 미리 오류를 수정을 하는 것이 훨씬 경제적.

프로그램의 문제를 해결하기 위한 도구로, 또는 다른 사람들과 프로그램의 흐름에 대해 소통하기 위한 방법으로 활용

(출처 : https://sujinlee.me/pseudocode/)

규칙

의사코드에서 반드시 따라야 하는 규칙 같은 것은 없음.

하지만 다른 개발자들이 쉽게 이해할 수 있는 형식을 사용해야.

본인이 쓰려고 작성하는 경우 생각을 정리하고 계획한 것을 만드는데 도움이 되어야.

(다른 개발자, 하급 개발자, 프로그래밍 할 줄 모르는 사람 등에게 설명이 되도록.)

그러나 자유로운 의사코드 작성도 다음의 규칙 정도는 알고 작성해야 함

: 순차적 명령문, 반복문, 조건문 정도면 의사코드 작성을 위해 필요한 것은 다 알고 있는 것임.

– 순차적 명령문

1. 상품포장() 2. 영수증발행() 3. 상품발송()

반복문

while문 사용의 경우. 시작할 때, while을 적고, 마칠 때 endwhile을 적는다.

조건이 만족될 때에만 반복문이 실행된다.

while 인구 < 한계 최신 인구 = 과거 인구 + 출생자 수 - 사망자 수 endwhile ex) while i <= number sum = sum + i endwhile for문의 경우 형식 : for i = 숫자1 to 숫자2 do 명령 for i = 1 to inputNumber do sum = sum + i endfor 조건문 사용되는 단어들은 if, then, else, endif. if 업무 시간 > 평균 근무 시간 then 초과 근무 메시지를 표시한다. else 일반적인 근무 메시지를 표시한다. endif

예제

텍스트 파일에서 “foo”라는 단어를 찾아 전부 bar라는 단어로 바꾸어 주는 프로그램을 만든다고 하자.

프로그램은

1. 파일을 읽고,

2. foo라는 단어를 찾고,

3. 단어를 바꾼다.

파일을 연다. 파일의 각 행(line)에 대해서 단어를 찾는다. 그 단어를 지운다. 그 자리에 새로운 단어를 넣는다. 파일을 닫는다.

의사코드 수정하기.

의사코드를 작성하는 것의 장점은 어려운 부분을 추후에 채워넣을 수 있다는 것이다.

위 예제에서 단어를 어떻게 찾고 지우고 바꿀 것인지에 대한 내용을 추가해보자.

의사코드를 통해 기능을 추가해보자.

의사코드는 알고리즘문제를 어떻게 접근해야 할지 생각하는데 도움이 된다.

따라서 복잡한 프로그래밍 문제를 단순하게 표현할 수 있다.

기능추가 전

파일을 연다. 파일의 각 행(line)에 대해서 단어를 찾는다. 그 단어를 지운다. 그 자리에 새로운 단어를 넣는다. 파일을 닫는다.

기능추가 후

파일을 연다. 사용자에게 바꾸고 싶은 단어가 무엇인지 물어 본다. 그리고 그 단어를 어떤 단어로 바꾸고 싶은지 물어 본다. 파일의 각 행(line)에 대해서 단어를 찾기 위해 다음과 같은 과정을 진행한다. 각 글자를 읽어 들인다. 글자가 바꾸고 싶은 단어의 첫 글자와 일치하면, 끝까지 일치하는지 확인해 본 후 일치한다면, 단어를 찾은 것이다. 그 단어가 몇 번 나왔는지 센다. 이제 그 단어에 해당하는 글자들을 지운다. 그리고 그 자리에 새로운 단어에 해당하는 글자들을 채워 넣는다. 단어를 몇 번 바꾸어 주었는지 사용자에게 알려준다. 파일을 닫는다.

의사코드 작성의 표준(Standard)

1. 한줄에 하나의 명령만.

의사코드의 한 줄은 한 가지 행동만 표현한다.

할 일 목록을 의사코드로 바꿔보자.

할 일 목록: 이름, 시급, 업무 시간, 공제율(deduction rate)을 확인한다. 계산을 한다. 임금 = 시급 * 업무 시간 공제 = 임금 * 공제율 최종 임금 = 임금 – 공제 이름, 임금, 공제, 최종 임금을 작성한다. 의사코드: 이름, 시급, 업무 시간, 공제율(deduction rate)을 확인한다. 계산한다. 임금 = 시급 * 업무 시간 공제 = 임금 * 공제율 최종 임금 = 임금 – 공제 이름, 임금, 공제, 최종 임금을 파일에 저장한다.

2. 영어로 의사코드를 작성 중이라면 각 명령문의 첫 단어를 대문자로 작성해 준다. 아래는 자주 쓰이는 의사코드 영어 단어이다.

입력(Input): READ, OBTAIN, GET 출력(Output): PRINT, DISPLAY, SHOW 계산(Compute): COMPUTE, CALCULATE, DETERMINE 초기화(Initialize): SET, INIT 요소를 추가(Add one): INCREMENT, BUMP 선형적으로 증가할 때(linear progression): SEQUENCE 반복: WHILE, FOR 조건문: IF-THEN-ELSE 마지막에 조건문이 있는 반복문: REPEAT-UNTIL IF-THEN-ELSE 대신 조건 분기처리: CASE 부울 : TRUE / FALSE 그외 : REPEAT – UNTIL RETURN BEGIN / EXCEPTION / END

출처 : https://sujinlee.me/pseudocode/

3. 어떻게 코드로 표현할지 적지 말고, 하고 싶은 이야기가 뭔지 기록한다.

어떤 개발자들은 “if a % 2 == 1 then”같이 실제 프로그램 코드처럼 의사코드를 작성한다.

이러면 그것을 읽는 사람들은 a, %, == 같은 기호들의 의미를 추측해야 한다.

그 대신 “숫자가 홀수라면(if an odd then)”은 어떨까.

좀 더 쉽고 명확하게 의미를 파악할 수 있을 것이다.

4. 프로세스에 필요한 모든 것을 빠짐없이 기록한다. 의사코드는 단순한 구조의 문장으로 작성하며, 대개 변수가 사용되지 않지만, 계정 번호, 이름, 거래 횟수 같은 현실에서 사용되는 단어를 이용해 프로그램이 해야 할 일을 설명한다.

다음은 유효한 의사코드의 예이다.

계정 번호와 비밀번호가 유효하고 일치하면, 기본 계정 정보를 보여 준다. 각 주문량에 비례하게 총비용을 할당한다.

다음은 유효한 의사코드가 아니다.

g=54/r이라고 하자. (이유: 변수를 쓰지 말고, 각 변수의 실제 의미를 적어 주자.) 다 될 때까지 주요 과정을 반복한다. (이유: “주요 과정”이 뭔지, “다 되는 것”이 뭔지 명확하게 해야 한다.)

5. 블록으로 코드의 구조를 정리해준다. 대개 들여 쓰기를 이용해서 각 명령문 간의 관계를 보여 준다. 블록을 만드는 방법은 2가지가 있다.

1. 중괄호 사용하기 { … }

2. 빈칸 사용하기.

블록 안에 블록이 들어간다면, 들여 쓰기는 더 깊어져야 한다.

반복문 시작 (b를 1에서 9까지) 출력 : a * b = 값 (개행) 반복문 종료

의사코드를 적용해보기

prices 클래스를 만듦. 제출 버튼에 이벤트 추가 if bookButtonWrapper의 classList에 “disable” 클래스가 없으면 then { 제출할 form을 만듦. productId field 번들을 추가, 설정 (json 이용) displayInfoId field 번들을 추가, 설정. (json 이용) reservationEmail, reservaionName, reservationTelephone 번들을 추가, 설정.(querySelector 이용) reservationYearMonthDay를 설정.(querySelector 이용) prices 배열을 생성. for 처음부터 ticket_body 클래스 내 qty의 개수만큼 do var count = qty클래스 내 .count_control_input클래스 의 value if count가 0이 아니면 then prices에 productPriceId와 count의 정보를 갖고 있는 객체를 넣음. endif prices를 form에 추가. 바디에 form을 추가하고 제출. } else { 오류메시지 변수 만들기. 오류메시지 출력. 오류메시지 1초 뒤에 없애기. } endif

생각보다 작성은 쉬웠지만 실제로 생각처럼 흘러가지를 않아서 많은 코드수정이 필요했다.

그러나 의사코드를 작성하지 않고 위와 같은 과정을 코딩하는 상상을 하니 끔찍했다..

refs – 의사코드

https://ko.wikihow.com/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EB%B2%95

https://sujinlee.me/pseudocode/

https://codingcoding.tistory.com/1002

https://ko.wikihow.com/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EB%B2%95#_note-3

https://namu.wiki/w/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C

https://unluckyjung.github.io/etc/2020/03/14/Pseudo_code/

수도코드(pseudocode) 작성하는 방법

수도코드(pseudocode) 작성하는 방법

수도코드란?

수도코드 또는 의사코드로 불리는 이 방법은

실제로 코딩으로 들어가기 전에 우리의 언어로 만들어질 코딩의 흐름을 정리해보는 것이다.

수도코드의 장점?

내가 생각해본 수도코드의 장점은

우선 가설과 검증 이라는 사이클로 효율적으로 답을 찾아나갈 수 있다는 것이다.

물론, 수도코드 없이 다 기억이 된다면 좋겠지만,

그렇지 않은 경우 어떤 논리 흐름으로 코드를 짜 나갔는지를 기록하는 것은 매우 도움이 된다.

둘째로 협업하는 경우 함께 코딩하는 사람과 이해도를 맞추는데 도움이 된다.

협업을 하는데 있어서 무엇보다 중요한 것은

같은 해결방법을 가지고 같이 고민하는 것이라고 생각한다.

서로 다른 정보를 바탕으로 다른 고민을 하고 있다면,

팀이라고 할 수 없고, 협업이라고 할 수 없을 것이다.

수도코드 작성 방법

코드스테이츠의 같은 기수의 동기가 공유해준 파일의 내용을 요약해본다.

작성 규칙 1 : 구체적 방법보다는 무슨 일을 할 것인가?만을 기술한다.

작성 규칙 2 : 입력, 치환, 산술, 관계, 논리, 출력의 기본기능 단위로 한번에 한가지만 기술한다.

작성 규칙 3 : 목적어 + 동사 형식으로 기술한다.

작성 규칙 4 : 처리단계 레벨은 되도록 3단계까지만 표현한다.(들여쓰기 3단계)

작성 순서 1 : 문제 전체에 대한 처리를 순차적으로 표현

작성 순서 2 : 순차적인 표현에서 선택(분기)이나 반복이 필요한 부분에 추가하기

예시 수도코드

문제 : 이름과 국어, 영어 점수를 입력(input)받고, 총점과 평균을 계산하고, 평균을 기준으로 평가하고, 학생 성적을 출력한다. (output)

//작성 순서1 : //1. 이름, 국어, 영어점수를 입력받는다. //2. 번호를 매긴다. //3. 총점을 구한다. //4. 평균을 구한다. //5. 평가를 한다. //6. 평가를 출력한다. //7. 끝낸다.

//작성순서2 : //1. 이름, 국어, 영어점수를 입력받는다. //2. 번호를 매긴다. //3. 총점을 구한다. //4. 평균을 구한다. //5. 평균이 70점 이상인지 판단한다.(선택/분기) // 5.1 참이면 통과한 것으로 판단 // 5.2 거짓이면 실패인 것으로 판단 //6. 평가를 출력한다. //7. 끝낸다.

//작성순서3 : //1. 파일의 끝이 아닌 동안 방복한다.(반복) // 1.1 이름 국어, 영어점수를 입력받는다. // 1.2 번호를 매긴다. // 1.3 총점을 구한다. // 1.4 평균을 구한다. // 1.5 평균이 70점 이상인지 판단한다.(선택/분기) // 1.5.1 참이면 통과한 것으로 판단 // 1.5.2 거짓이면 실패인 것으로 판단 // 1.6 평가를 출력한다. //2. 끝낸다.

예시를 이렇게만 봤을 때 잘 이해가 되진 않아서 직접 짜보았다.

직접 짜본 수도코드

문제 :

n을 매개변수로 받아 0 부터 n 까지 모든 수의 총 합을 반환하는 함수를 작성하세요.

//작성순서 1 :(거의 의식의 흐름 수준) //1. 매개변수로 n을 받는다. //2. 0에서 1씩 더한다. //3. 더한 값은 저장한다. //4. n번째 1을 더했을 때 멈춘다. //5. 저장된 값을 반환한다.

//작성순서2 : //1. n까지 반복하여 더한다. // 1.1 반환할 변수 sum 을 선언하고 0을 대입한다. // 1.2 n을 입력받는다. // 1.3 sum에 0부터 1씩 더한다. // 1.4 n번째 1을 더했을 때 멈춘다. //2. 저장된 sum 값을 반환한다.

이렇게 구현해본 코드는 다음과 같다.

function sum(n) { let sum = 0; for(let i=0; i<=n; i++){ sum = sum + i; } return sum; } 수도코드를 작성하면서 어려웠던 것을 다시 한번 정리해본다면, 1. 수도코드 작성은 한번만에 적히는 건 아니다. 두번 세번 수정해야한다. 2. 반환할 값에 대해서 고민을 해본다. 정도가 있는 것 같다. 앞으로도 신경써보면서 수도코드를 작성하는 연습을 한다면, 보다 나은 코딩을 하는데 도움이 되지 않을까 생각이 든다. 다양한 자료와 글을 참고하여 배우고 있는 개발 뉴비의 블로그입니다. 수정 보완할 것이 있다면 부담없이 댓글 남겨주세요 🙂 수도코드(pseudocode) 작성하는 방법

의사코드 작성법

2

알고리즘의 작동 과정을 묘사하고 싶은 경우. 의사코드는 어떤 구조, 작동 방식, 기술 등이 프로그램 어디에서 어떻게 사용되어야 하는지 보여 줄 수 있다. 그래서 상급 개발자가 초보 개발자에게 특정한 기능을 구현하려면 코드를 어떻게 작성해야 하는지 설명할 때 많이 사용된다.

기술적인 부분을 잘 모르는 사람에게 프로그램의 진행 과정을 설명할 때 사용된다. 프로그래밍 코드를 작성하려면 상당히 엄격한 규칙(문법)을 따라야 한다. 하지만 (프로그래밍을 할 줄 모르는) 대다수의 사람들은 쉽게 읽을 수 있으며, 각 단계의 목적을 명확하게 설명하는 방식의 글을 좋아한다.

여러 사람이 함께 개발할 때 사용한다. 많은 경우, 소프트웨어 아키텍트들은 회사 개발자들이 자주 겪는 문제에 대한 해결책을 의사코드로 설명한다. 또한 다른 개발자들과 함께 개발할 때, 의사코드를 사용하면 자신의 의도를 명확하게 표현할 수 있다는 것을 깨닫게 될 것이다.

의사코드를 사용하면, 컴퓨터 프로그램 알고리즘이 어떻게 실행되어야 할지, 또는 어떻게 실행될 수 있을지 보여줄 수 있다. 많은 개발자들이 프로그램을 계획하는 초반 단계와 그 프로그램 코드를 실제로 작성하는 최종 단계를 이어 주는 도구로 의사코드를 많이 사용한다. 잘 작성된 의사코드는 실제 코드에서 주석으로 활용할 수 있으며, 나중에 그 프로그램 코드를 읽고 디버깅을 하거나 내용을 수정해야 하는 개발자에게 도움을 줄 수도 있다. 또한 다음과 같은 경우에도 유용하게 쓰일 수 있다.

Pseudo-code 작성법

1

2

3

4

5

6

7

의사코드(슈도코드, pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다. 의사(疑似)코드는 말 그대로 흉내만 내는 코드이기 때문에, 실제적인 프로그래밍 언어로 작성된 코드처럼 컴퓨터에서 실행할 수 없으며, 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 쓰인다

의사 코드 작성법

이 블로그를 만들때부터 첫 포스팅은 이걸로 하겠노라 정했으므로 ..

대망의 첫 포스팅은 의사 코드에 대해서, 그리고 그 작성법에 대해 정리해보려고 합니다.

사실 제가 좀 헤매서 .. 같은 상황인 분들은 헤매지 마시라고.. (사실 이게 이 블로그의 바탕이 되는 취지긴 하죠)

의사 코드?

의사 코드, 다른 말로 슈도 코드라고도 하는 이것은 무엇인가

구글에서 의사 코드를 치자마자 나오는 위키백과에 정리된 개념에 따르면 이렇게 정리되어 있습니다.

의사코드(슈도코드, 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 ( " " ); } } cs 작동까지 완-벽 예시가 단순해서 와닿지 않을 수도 있지만, 의사코드를 기반으로 코드를 작성하면 쉬운 것부터 어려운것까지, 머릿속에서 바로 만들어지지 않는 코드를 쉽게 설계할 수 있습니다. 정리 머릿속에서 바로 코드를 뽑아내기가 힘든 한국어 사용자인 당신! 의사 코드는 그런 당신을 위한 설계도! 의사 코드를 쓰는 데에 형식은 크게 구애받지 않으므로, 한국어로 작성해도 아무도 뭐라고 하지 않는다! 미래의 내가 알아볼 수 있도록, 약간의 규칙을 세우고, 부담없이 작성해보며 자신만의 스타일을 완성할 수 있도록 합시다. 다음 포스팅에선 그래서 제가 직접 쓰고 과제로 제출도 했던(...) 의사 코드가 올라옵니다. 이걸 노션에서 치워버리고 싶어서요 하핫 (코슥)

코드 짜는 일이 어렵다면 먼저 슈도 코드부터 해보자

코딩을 배울 때 대부분 코딩의 문법을 먼저 배우려고 한다. 대부분의 학원이나 책의 커리큘럼이 그렇게 되어 있기도 하다. 물론 문법은 기본적인 것은 알고 있어야 한다. 하지만 문법보다 중요한 것은 프로그램이 실행되는 논리적 흐름을 구성하는 것이라고 생각한다. 내가 원하는 결과를 만들어 내기 위해서 어떤 과정들을 거쳐야 하는지 명령어를 나열하는 것이 코딩이 아닐까 한다.

그런데 생각하는 대로 바로 백지에서 코드를 적어 내려 가며 코딩하는 사람이 과연 얼마나 될까? 간단한 프로그램이야 그렇게 하겠지만 코딩을 전문으로 하지 않는 나와 같은 아마추어들에게는 생각과 동시에 코드를 적는 일은 쉽지 않은 일이다.

그래서 처음 코딩을 배우는 사람들은 실제로 자신이 원하는 기능을 갖춘 프로그램을 만들 때 자괴감에 빠지곤 한다. 책도 많이 보고 유튜브도 많이 봐서 문법은 어느 정도 알 거 같은데 도대체 이런저런 크롤링 프로그램을 만들려면 어떻게 코드를 짜야하지?라고 머리를 쥐어뜯는 경우가 다반사이다. 나 역시 그렇다.

그럴 땐 바로 코드를 짜는 것보다 슈도 코드(Pseudo Code)를 먼저 짜는 것이 도움이 된다.

슈도 코드(Pseudo Code)

슈도 코드에서 슈도(Pseudo)는 네이버 영어 사전에서 ‘가짜의’, ‘모조의’, ‘허위의’ , ‘의사의(비슷하여 분간하기 어려움’을 뜻한다고 나와 있다.

출처 : 네이버 사전

큰 프로그램을 만들 때 제작 순서는 크게 계획→설계→코딩→테스트의 단계를 거친다. 큰 프로그램일 뿐 아니라 어떤 프로그램을 만들 때도 비슷한 과정을 거치지 않을까 싶다. 슈도 코드는 ‘설계 단계’에서 작성하는 것으로 프로그램을 어떤 과정으로 실행시킬지를 미리 글로 적어 보는 것이다.

처음에 코드 작성이 익숙하지 않은 사람들이 코드를 작성하기 전 글로 적어보는 것을 말한다. 실제 예시를 통해 더 자세히 알아보자.

슈도 코드의 예시

오늘 아침에 간단히 짠 파이썬 코드가 하나 있다. 네이버 뉴스를 크롤링한 것인데 키워드 입력 후 나오는 기사들을 ‘네이버뉴스’라고 표시된 것들만 제목과 언론사명을 가져오는 프로그램이다.

슈도 코드는 다음과 같이 짜 보았다.

키워드를 입력한다.

해당 키워드로 검색된 네이버 뉴스 페이지를 크롤링하여 각 뉴스 코드들을 리스트 형태로 반환한다.

리스트 내 요소를 반복문으로 하나씩 꺼낸다.

네이버뉴스가 표시된 기사만 골라서 기사 제목과 언론사 명을 추출한다.

언론사 이름에 ‘언론사 선정’이라는 문자가 포함되어 있다면 이를 제거한다.

여기까지가 내가 생각해 본 슈도 코드였다. 이 슈도 코드를 바탕으로 짠 파이썬 코드는 다음과 같다.

import bs4

import requests

def newssearch(key):

url = “https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query=” + key

html = requests.get(url).text

bs = bs4.BeautifulSoup(html, ‘html.parser’)

bx = bs.findAll(“div”, class_=”news_area”)

return bx

key = input(“검색 키워드 : “)

newslist = newssearch(key)

for i in newslist:

each_news = i.find(“div”, class_=”info_group”)

naver = each_news.text

press = each_news.find(“a”).text

if “언론사 선정” in press:

press = press.replace(“언론사 선정”, “”)

if “네이버뉴스” in naver:

title = i.find(“a”, class_=”news_tit”).text

print(f”{title} : {press}”)

슈도 코드와 실제 이 코드가 어떻게 연결되는지는 다음 이미지에서 확인할 수 있다.

본 코드를 짜기 전에 슈도 코드로 프로그래밍 논리 구조와 수행 방안들을 먼저 생각해 보고 이를 코드로 구현하는 것은 실수를 줄이고 원하는 방향으로 코딩이 진행되게 도와준다.

슈도 코드와 관련한 재밌는 블로그 예시가 있어 공유해 본다.

코드 짜는 게 어렵다면 우선 슈도 코드로 흐름을 정리해 보자. 경험이 늘어날수록 슈도 코드는 머릿속에서 적게 되고 생각한 대로 바로 코드가 나오는 경지에 이르게 될 것이다.

논문 Pseudo Code 표기법(AI 논문)

https://blog.naver.com/lhm0812/220648381307

https://sujinlee.me/pseudocode/

1. Pseudo Code란???

의사(疑似: 비교할 의, 비슷할 사 | Pseudo: 가짜의- ) 코드는 컴퓨터 프로그램이나 알고리즘이 수행해야할 내용을 우리가 사용하는 언어 (한국어 또는 영어 등)로 간략히 서술해 놓은 것

2. 왜 의사코드를 사용해야 할까?

– (사견) 설명은 프로그래밍을 처음하는 사람들이나 필요한거라고 하지만 실제로는 논문에 실제 코드를 공개하지 않거나 리뷰어나 한정적으로 공개할경우 Pseudo Code나 Method, Material을 공개하여서 오래걸리긴하지만 구현이 가능하도록 자신의 아이디어를 공개하기도 한다.

AI 관련 논문 구현에 있어서 필수적이다.

실제 코딩하기 전 사고를 좀더 명확히 정립하게 만들어 준다. 처음 코딩을 할 때가 제일 힘들다. 단순히 소스코드를 입력하는 것보다 함수(function) 프로그램을 만들 때 많은 시간을 낭비할 수 있다. 약 10분 정도 각 풀이법의 장점과 단점을 주도면밀하게 살펴보면서 의사코드 작성한다면, 이후 디버그를 수정하고 코드를 재분해 하는데 걸리는 시간을 단축할 수 있다.

아래는 ‘의사코드 없이 프로그램 작성 할 때’ vs ‘의사코드 사용하면서 프로그램 작성할 때’ 를 비교한 그래프이다.

코드 검토(Code Review)가 더 쉬워진다.

의사코드로 소스코드 실행없이 상세 설계를 검토할 수 있다. 하위 설계 단계의 프로그램을 쉽게 검토할 수 있어 작성된 프로그램의 검토 시간을 줄일 수 있으며 지속적인 프로그램 개선에 큰 도움이 된다. 상위 설계 프로그램에서 시작하여 의사코드를 수정한 후에 수정된 의사코드를 가지고 소스코드를 개선하게 된다. 각 단계 별로 반복적인 프로그래밍 개선을 통해 하위 설계 단계의 프로그램을 체크할 수 있다. 이 결과로 상세 작업 단계에서 큰 오류를 발생시키거나 작업에 큰 악영향을 주기 이전에, 상위 단계의 프로그램의 오류는 상위 단계에서, 중간 단계의 오류는 중단 단계에서 하위 단계의 오류는 하위단계에서 검토할 수 있게 된다.

코드 수정을 좀더 용이하게 만들어준다.

일부 의사코드 몇 줄을 수정하는 것은 한 페이지 전체의 코드를 수정하는 것보다 더 쉽다. 벽지 전체에 새로운 페인트를 바르는 것이 쉬울까? 아니면 얼룩진 일부분에만 페인트를 덧칠하는 것이 더 쉬울까? 물론 이 방법은 소프트웨어에 큰 물리적인 변화를 주는 것은 아니지만, 수정이 거의 필요하지 않는 제품을 개선할 경우에 사용되는 일반적인 방법이다. 성공적인 프로젝트를 만들기 위해서는 최소한의 노력으로 고칠 수 있는 단계(least-value stage)에서 오류를 바로 잡는 것이 매우 중요하다. 나중에 코드입력, 테스트, 디버그 수정 단계에서 작업하는 것보다 의사코드 설계 단계에서 미리 오류를 수정을 하는 것이 훨씬 경제적이다.

의사코드는 코멘트(Comment) 작성에 대한 부담을 덜어준다.

학생들은 보통 코드를 작성한 이후에 코드에 대한 부가적인 설명내용을 작성한다. 의사코드를 사용할 경우 의사코드 서술 내용 자체가 코멘트가 되기 때문에 사실상 안에 코멘트를 남겨놓는 것보다 코멘트를 지우는데 더 많은 시간이 걸린다. 의사코드는 다른 프로그래밍 설계 문서보다 유지보수가 쉽습니다. 코드와 분리된 채로 설계문서를 작성한다면, 어떤 부분에 수정변동이 있게 되어 양쪽 모두 일관성이 없어지게 된다. 의사코드는 코드 안에 작성한다. 때문에 코멘트가 계속 추가되면서 의사코드 설계 작성이 정교해질 수 있다. [1]

그렇다면 의사코드를 효과적으로 작성하는 방법은 무엇일까?

잘 쓰여진 의사코드에 따라 좋은 코드가 짜여진다.

의사코드와 코드 모두 같은 스타일로 일관성있게 작성하는 것이 원칙이다. 똑같은 연산 기호를 사용하며, 적절한 곳에, 이해될 수 있는 문장으로 작성해야 한다. (긴 문장을 쓰지 않아도 된다.)

불필요한 내용은 무시한다.

콤마(,)의 위치를 고민할 필요가 없다. 좋은 방법은 ‘시작/끝(begin/end)’ ‘[ ]'(bracket) 등과 같이 일반적으로 많이 쓰이는 구조적인 기호나 단어들을 적절한 곳에 사용하는 것이다. 그러나 어법이나 구문에 크게 주의하지 않아도 된다.

확실한 내용을 여러번 말하지 않는다.

문맥에 따라 값의 유형이 정해질 경우가 종종 있다. 예를들어 값이 정수인지 실수인지 정하는 것이 중요한 문제가 아니라면, 정확하게 값을 구분하는 것이 필요 없을 수도 있다.

프로그래밍에 쓰이는 문법(구문)을 이용해 작성한다.

if/else 조건문, 반복문(loop)인 while은 영어 단어와 같기 때문에, 이를 사용하여 의사코드를 좀더 명확하게 작성할 수 있다. 적은 수의 단어를 조합하여 의사코드를 작성하는 것도 좋은 방법이다. 변수 사용은 의사코드를 간단명료하게 만들어주기 때문에 생략하지 않는 것이 좋다.

사용할 목적과 상황에 주의하여 작성한다.

만약 빠른 정렬(quick sort) 알고리즘을 쓰고자 할 때, 단순히 ‘quick sort’라고 의사코드를 작성하게 되면 상세한 내용을 생략이 된 것이다. 만약 여러분중 quick sort에 익숙하여 추후 서브루틴으로써 반복해서 사용할 수 있는 부분적 프로그램으로 만들고 싶다면, ‘quick sort”이라 쓰는데 문제가 없다. 기본적인 형식을 지키자. 의사코드로 알고리즘 전체를 한번에 꿰뚫어볼 수 있어야 한다. 그렇지 않다면 알고리즘을 쉽게 분석하기가 어려워진다.

수준을 고려해 작성한다.

만약 다른 사람이 본인이 작성한 의사코드가 이해하기 너무 어려워 실제 코드로 옮기기 어렵다면(또는 둘다 모두일 경우), 난이도에 문제가 있다는 뜻이다. [2]

이제 의사코드에서 많이 쓰이는 영어 단어에 대해 알아보자.

입력(Input): READ, OBTAIN, GET

출력(Output): PRINT, DISPLAY, SHOW

계산(Compute): COMPUTE, CALCULATE, DETERMINE

초기화(Initialize): SET, INIT

요소를 추가(Add one): INCREMENT, BUMP

선형적으로 증가할 때(linear progression): SEQUENCE

반복: WHILE, FOR

조건문: IF-THEN-ELSE

마지막에 조건문이 있는 반복문: REPEAT-UNTIL

IF-THEN-ELSE 대신 조건 분기처리: CASE

부울 : TRUE / FALSE

그외 : REPEAT – UNTIL RETURN BEGIN / EXCEPTION / END

의사코드를 실제로 작성해보자

판매세가 포함된 물건 값을 계산하는 프로그램을 작성한다고 해보자. 각 단계별로 해야할 일을 의사코드로 옮기면 아래와 같다.

get price of item \ 물건 값 투입하기 get sales tax rate \ 세금 할인율 투입하기 sales tax = price of item times sales tax rate \ 판매세 = 물건 값 * 세금율 final price = price of item plus sales tax \ 총합 = 총합 + 판매세 display final price \ 총합 표시하기 halt \\ 종료

의사코드를 작성할 때, 간단한 수식은 연산기호와 숫자를 사용하여 쓰는 것이 좋다.

의사코드에 쓰인 변수명 리스트를 ‘Variables: price of item, sales tax rate, sales tax, final price’와 같이 따로 정리할 수 있다. 이러한 작업은 의사코드를 실제 프로그래밍 작업으로 옮길 때 유용하다. 이제 이 의사코드를 가지고 실제 자바스크립트(node.js) 코드로 옮겨보자. 의사코드 바로 밑 줄 아래에 실제 코드를 작성하면 된다.

const readline = require(‘readline’) const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) function computeSalesTax() { // get price of item rl.question(“What is the item’s price?”, (price) => { console.log(`The price of item is ${price}.`) // get sales tax rate rl.question(“Enter the sales tax rate, in decimal: “, (taxRate) => { // sales tax = price of item times sales tax rate const tax = price * taxRate // final price = price of item plus sales tax const final = parseInt(price) + tax // display final price console.log(`”The final price is ${final}.`) // halt rl.close() }) }) } computeSalesTax()

아래와 같이 콘솔에 나타날 것이다.

What is the item’s price? 3000 The price of item is 3000. Enter the sales tax rate, in decimal: 0.1 “The final price is 3300.

https://blog.naver.com/lhm0812/220648381307

논문에 구현 로직을 추가하기 위해 슈도코드를 알아 보았다.

이 글은 http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html 에 쓰여진 글을 번역하였고, 저질스러운 번역으로 잘못된게 있을 수도 있지만 대략적으로 맞을 것이다.

슈도코드(pseudocode)는 문법 구문의 세부세항에 산만해질 필요없이 설계자가 알고리즘의 로직에 집중할 수 있도록 알고리즘을 묘사하는 정형화된 언어(보통은 영어를 사용)이다. 슈도코드는 완벽을 요구하고 소스코드로 한줄 한줄 대입되기 위해 전체적인 로직을 설명하여야 한다.

보통 슈도코드에 쓰이는 어휘는 구현 domain(영역)이 아니라, 문제 domain의 어휘여야한다. 슈도코드는 문제 domain이 뭔지 알기를 원하거나 해결책이 어떻게 구성되어 있는지 알고 싶은 사람들을 위해 서술한다.

Extract the next word from the line (good)

set word to get next token (poor)

Append the file extension to the name (good)

name = name + extension (poor)

FOR all the characters in the name (good)

FOR character = first to last (ok)

로직은 각각의 loop나 decision의 단계로 분해되야 한다.

예를들어, “Search the list and find the customer with highest balance” 는 너무 모호하다. 왜냐하면 이 표현은 AND loop를 가지고 있고, 실행하는 내재된 decision이 있기 때문이다.

각 Textbook과 설계자들은 자신의 슈도코드 스타일을 가지고 있다.

슈도코드는 컴퓨터가 아니라 다른사람에 의해 읽히기 때문에 엄격한 표기법이 아니다.

Industry에는 일반적인 “standard”가 없다.(보통 사용자가 많은 C나 리스프, 포트란 프로그래밍 언어등의 문법을 본딴 모양이 많다. 엄밀한 묘사가 불필요한 부분에는 자연어가 자유롭게 쓰이기도 한다.)

슈도코드의 ‘구조화된’부분은 표시법이다.

아래는 표현하기 위한 여섯가지 명확한 구조적인 프로그래밍 구조들이다.

SEQUENCE, WHILE, IF-THEN-ELSE, REPEAT-UNTIL, FOR, and CASE.

아래 세가지 구조는 어떤 적절한 알고리즘을 실행하기 위해서 그리고 기본적인 구조 흐름의 제어를 위해 충분하다.

SEQUENCE 는 선형적인 진행이다. 하나의 작업이 다른 작업의 연속적으로 실행될때

WHILE 은 반복이다. 시작될때 간단한 상태 검사를 한다.

IF-THEN-ELSE 는 선택(결정)이다 두가지 대안의 동작에서 만들어 지는

이러한 구조들로 충분하지만 아래 추가적인 구조는 종종 유용하다. 이 세가지 방식을 더 포함하겠다.

REAPEAT-UNTIL 은 루프이다 끝날 때 상태 검사를 한다.

CASE 는 다양한 결정(가지)수식의 값에 기반한다. CASE는 IF-THEN-ELSE의 일반화이다.

FOR 는”counting” loop이다.

– SEQUENCE

순차적인 제어는 글로써 가리켜진다. 다른 것 동작이후에 하나의 동작으로..

각각의 동작은 그 행 바로 그 자체이다.

그리고 모든 동작은 들여쓰기와 맞추어 조정된다.

동작들은 위에서 아래로 순차적으로 실행된다.

Example (non-computer)

Brush teeth

Wash face

Comb hair

Smile in mirror

Example

READ height of rectangle

READ width of rectangle

COMPUTE area as height times width

Common Action Keywords

Several keywords are often used to indicate common input, output, and processing operations.

Input: READ, OBTAIN, GET

Output: PRINT, DISPLAY, SHOW

Compute: COMPUTE, CALCULATE, DETERMINE

Initialize: SET, INIT

Add one: INCREMENT, BUMP

– IF-THEN-ELSE

주어진 Boolean 상태에 대한 네 가지 키워드(IF, THEN, ELSE and ENDIF)의 사용에 따른 이원선택.

IF condition THEN

sequence 1

ELSE

sequence 2

ENDIF

ELSE 키워드와 sequence 2는 선택적이다.

만약의 상태가 true이면 sequence 1이 아니면 sequence 2가 실행된다

Example

IF HoursWorked > NormalMax THEN

Display overtime message

ELSE

Display regular time message

ENDIF

– WHILE

WHILE 구조는 시작될 때 상태검사를 하는 특정한 루프에 쓰인다.

WHILE과 ENDWHILE에 의해 루프의 시작과 끝은 가리켜진다.

WHILE condition

sequence

ENDWHILE

루프는 상태가 true일때만 진입가능하고, 각 반복마다 sequence가 실행된다. 각 반복문의 상태는 계산되고 참이면 계속 루프가 실행된다.

Example

WHILE Population < Limit Compute Population as Population + Births - Deaths ENDWHILE Example WHILE employee.type NOT EQUAL manager AND personCount < numEmployees INCREMENT personCount CALL employeeList.getPerson with personCount RETURNING employee ENDWHILE - CASE CASE 구조는 다양한 상호배타적인 상태에 기반한 다양한 branch를 가리킨다. Four keywords, CASE, OF, OTHERS, and ENDCASE 상태는 다양한 대안을 가리키기 위해 사용된다. CASE expression OF condition 1 : sequence 1 condition 2 : sequence 2 ... condition n : sequence n OTHERS: default sequence ENDCASE OTHERS문법과 default sequence는 선택적이다 상태는 보통 숫자와 문자이다. 수식의 값은 statements나 한 개이상의 상태를 명시할 수 있는 다른 표기법을 사용할 수 있다. Example CASE Title OF Mr : Print "Mister" Mrs : Print "Missus" Miss : Print "Miss" Ms : Print "Mizz" Dr : Print "Doctor" ENDCASE Example CASE grade OF A : points = 4 B : points = 3 C : points = 2 D : points = 1 F : points = 0 ENDCASE - REPEAT-UNTIL 이 루프는 WHILE루프와 비슷하다. 위 대신 끝에서 상태검사가 실행되는 것을 제외하고 Two keywords, REPEAT and UNTIL REPEAT sequence UNTIL condition sequence는 적어도 한번 실행되야 한다. 왜냐하면 상태검사는 한번의 sequence 이후에 실행된다. condition이 false일때 루프가 반복된다. 루프는 컨디션이 true일때 종료된다. - FOR 이 루프는 반복적인 명확한 숫자의 반복을 위한 구조. "counting" loop 라고 불린다. Two keywords, FOR and ENDFOR FOR iteration bounds sequence ENDFOR 이 경우 루프 제약은 명백하게 뜻할 수 있다. 루프를 문제 domain을 사용함으로써 묘사한다. FOR each month of the year (good) FOR month = 1 to 12 (ok) FOR each employee in the list (good) FOR empno = 1 to listsize (ok) - NESTED CONSTRUCTS 이 구조는 다른것 안에 내장될 수 있다. 이것은 들여쓰기를 통해 명백해진다. 다른 둘러싸인 구조로부터 들여쓰기로 인해 명백해진다. SET total to zero REPEAT READ Temperature IF Temperature > Freezing THEN

INCREMENT total

END IF

UNTIL Temperature < zero Print total Rapeat 구조안에 IF가 있다. - INVOKING SUBPROCEDURES Use the CALL keyword. For example: CALL AvgAge with StudentAges CALL Swap with CurrentItem and TargetItem CALL Account.debit with CheckAmount CALL getBalance RETURNING aBalance CALL SquareRoot with orbitHeight RETURNING nominalOrbit - EXCEPTION HANDLING BEGIN statements EXCEPTION WHEN exception type statements to handle exception WHEN another exception type statements to handle exception END

좋은 의사코드 작성법

의사(疑似: 비교할 의, 비슷할 사 | Pseudo: 가짜의- ) 코드는 컴퓨터 프로그램이나 알고리즘이 수행해야할 내용을 우리가 사용하는 언어 (한국어 또는 영어 등)로 간략히 서술해 놓은 것을 말한다. 왜 의사코드를 사용해야 할까?

실제 코딩하기 전 사고를 좀더 명확히 정립하게 만들어 준다.

처음 코딩을 할 때가 제일 힘들다. 단순히 소스코드를 입력하는 것보다 함수(function) 프로그램을 만들 때 많은 시간을 낭비할 수 있다. 약 10분 정도 각 풀이법의 장점과 단점을 주도면밀하게 살펴보면서 의사코드 작성한다면, 이후 디버그를 수정하고 코드를 재분해 하는데 걸리는 시간을 단축할 수 있다.

아래는 ‘의사코드 없이 프로그램 작성 할 때’ vs ‘의사코드 사용하면서 프로그램 작성할 때’ 를 비교한 그래프이다.

코드 검토(Code Review)가 더 쉬워진다.

의사코드로 소스코드 실행없이 상세 설계를 검토할 수 있다. 하위 설계 단계의 프로그램을 쉽게 검토할 수 있어 작성된 프로그램의 검토 시간을 줄일 수 있으며 지속적인 프로그램 개선에 큰 도움이 된다. 상위 설계 프로그램에서 시작하여 의사코드를 수정한 후에 수정된 의사코드를 가지고 소스코드를 개선하게 된다. 각 단계 별로 반복적인 프로그래밍 개선을 통해 하위 설계 단계의 프로그램을 체크할 수 있다. 이 결과로 상세 작업 단계에서 큰 오류를 발생시키거나 작업에 큰 악영향을 주기 이전에, 상위 단계의 프로그램의 오류는 상위 단계에서, 중간 단계의 오류는 중단 단계에서 하위 단계의 오류는 하위단계에서 검토할 수 있게 된다.

코드 수정을 좀더 용이하게 만들어준다.

일부 의사코드 몇 줄을 수정하는 것은 한 페이지 전체의 코드를 수정하는 것보다 더 쉽다. 벽지 전체에 새로운 페인트를 바르는 것이 쉬울까? 아니면 얼룩진 일부분에만 페인트를 덧칠하는 것이 더 쉬울까? 물론 이 방법은 소프트웨어에 큰 물리적인 변화를 주는 것은 아니지만, 수정이 거의 필요하지 않는 제품을 개선할 경우에 사용되는 일반적인 방법이다. 성공적인 프로젝트를 만들기 위해서는 최소한의 노력으로 고칠 수 있는 단계(least-value stage)에서 오류를 바로 잡는 것이 매우 중요하다. 나중에 코드입력, 테스트, 디버그 수정 단계에서 작업하는 것보다 의사코드 설계 단계에서 미리 오류를 수정을 하는 것이 훨씬 경제적이다.

의사코드는 코멘트(Comment) 작성에 대한 부담을 덜어준다.

학생들은 보통 코드를 작성한 이후에 코드에 대한 부가적인 설명내용을 작성한다. 의사코드를 사용할 경우 의사코드 서술 내용 자체가 코멘트가 되기 때문에 사실상 안에 코멘트를 남겨놓는 것보다 코멘트를 지우는데 더 많은 시간이 걸린다. 의사코드는 다른 프로그래밍 설계 문서보다 유지보수가 쉽습니다. 코드와 분리된 채로 설계문서를 작성한다면, 어떤 부분에 수정변동이 있게 되어 양쪽 모두 일관성이 없어지게 된다. 의사코드는 코드 안에 작성한다. 때문에 코멘트가 계속 추가되면서 의사코드 설계 작성이 정교해질 수 있다. [1]

그렇다면 의사코드를 효과적으로 작성하는 방법은 무엇일까?

잘 쓰여진 의사코드에 따라 좋은 코드가 짜여진다. 의사코드와 코드 모두 같은 스타일로 일관성있게 작성하는 것이 원칙이다. 똑같은 연산 기호를 사용하며, 적절한 곳에, 이해될 수 있는 문장으로 작성해야 한다. (긴 문장을 쓰지 않아도 된다.)

불필요한 내용은 무시한다. 콤마(,)의 위치를 고민할 필요가 없다. 좋은 방법은 ‘시작/끝(begin/end)’ ‘[ ]'(bracket) 등과 같이 일반적으로 많이 쓰이는 구조적인 기호나 단어들을 적절한 곳에 사용하는 것이다. 그러나 어법이나 구문에 크게 주의하지 않아도 된다.

확실한 내용을 여러번 말하지 않는다. 문맥에 따라 값의 유형이 정해질 경우가 종종 있다. 예를들어 값이 정수인지 실수인지 정하는 것이 중요한 문제가 아니라면, 정확하게 값을 구분하는 것이 필요 없을 수도 있다.

프로그래밍에 쓰이는 문법(구문)을 이용해 작성한다. if/else 조건문, 반복문(loop)인 while은 영어 단어와 같기 때문에, 이를 사용하여 의사코드를 좀더 명확하게 작성할 수 있다. 적은 수의 단어를 조합하여 의사코드를 작성하는 것도 좋은 방법이다. 변수 사용은 의사코드를 간단명료하게 만들어주기 때문에 생략하지 않는 것이 좋다.

사용할 목적과 상황에 주의하여 작성한다. 만약 빠른 정렬(quick sort) 알고리즘을 쓰고자 할 때, 단순히 ‘quick sort’라고 의사코드를 작성하게 되면 상세한 내용을 생략이 된 것이다. 만약 여러분중 quick sort에 익숙하여 추후 서브루틴으로써 반복해서 사용할 수 있는 부분적 프로그램으로 만들고 싶다면, ‘quick sort”이라 쓰는데 문제가 없다. 기본적인 형식을 지키자. 의사코드로 알고리즘 전체를 한번에 꿰뚫어볼 수 있어야 한다. 그렇지 않다면 알고리즘을 쉽게 분석하기가 어려워진다.

수준을 고려해 작성한다. 만약 다른 사람이 본인이 작성한 의사코드가 이해하기 너무 어려워 실제 코드로 옮기기 어렵다면(또는 둘다 모두일 경우), 난이도에 문제가 있다는 뜻이다. [2]

이제 의사코드에서 많이 쓰이는 영어 단어에 대해 알아보자.

입력(Input): READ, OBTAIN, GET

출력(Output): PRINT, DISPLAY, SHOW

계산(Compute): COMPUTE, CALCULATE, DETERMINE

초기화(Initialize): SET, INIT

요소를 추가(Add one): INCREMENT, BUMP

선형적으로 증가할 때(linear progression): SEQUENCE

반복: WHILE, FOR

조건문: IF-THEN-ELSE

마지막에 조건문이 있는 반복문: REPEAT-UNTIL

IF-THEN-ELSE 대신 조건 분기처리: CASE

부울 : TRUE / FALSE

그외 : REPEAT – UNTIL RETURN BEGIN / EXCEPTION / END

의사코드를 실제로 작성해보자

판매세가 포함된 물건 값을 계산하는 프로그램을 작성한다고 해보자. 각 단계별로 해야할 일을 의사코드로 옮기면 아래와 같다.

get price of item \ 물건 값 투입하기 get sales tax rate \ 세금 할인율 투입하기 sales tax = price of item times sales tax rate \ 판매세 = 물건 값 * 세금율 final price = price of item plus sales tax \ 총합 = 총합 + 판매세 display final price \ 총합 표시하기 halt \\ 종료

의사코드를 작성할 때, 간단한 수식은 연산기호와 숫자를 사용하여 쓰는 것이 좋다. 의사코드에 쓰인 변수명 리스트를 ‘Variables: price of item, sales tax rate, sales tax, final price’와 같이 따로 정리할 수 있다. 이러한 작업은 의사코드를 실제 프로그래밍 작업으로 옮길 때 유용하다. 이제 이 의사코드를 가지고 실제 자바스크립트(node.js) 코드로 옮겨보자. 의사코드 바로 밑 줄 아래에 실제 코드를 작성하면 된다.

const readline = require(‘readline’) const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) function computeSalesTax() { // get price of item rl.question(“What is the item’s price?”, (price) => { console.log(`The price of item is ${price}.`) // get sales tax rate rl.question(“Enter the sales tax rate, in decimal: “, (taxRate) => { // sales tax = price of item times sales tax rate const tax = price * taxRate // final price = price of item plus sales tax const final = parseInt(price) + tax // display final price console.log(`”The final price is ${final}.`) // halt rl.close() }) }) } computeSalesTax()

아래와 같이 콘솔에 나타날 것이다.

What is the item’s price? 3000 The price of item is 3000. Enter the sales tax rate, in decimal: 0.1 “The final price is 3300.

[1] Pseudocode 101 – MIT. edX ↩︎

[2] Naomi Nishimura – pseudocode ↩︎

키워드에 대한 정보 수도 코드 작성법

다음은 Bing에서 수도 코드 작성법 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 14주차 알고리즘 의사코드 작성하기 순서도와비교

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

14주차 #알고리즘 #의사코드 #작성하기 #순서도와비교


YouTube에서 수도 코드 작성법 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 14주차 알고리즘 의사코드 작성하기 순서도와비교 | 수도 코드 작성법, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  가족 간호 과정 | 더배움 9급공무원 지역사회간호학 제22강 가족간호과정 20 개의 가장 정확한 답변

Leave a Reply

Your email address will not be published. Required fields are marked *