728x90
의사코드(pseudo code)란?
컴퓨터 프로그램이나 알고리즘이 수행해야 할 내용을 우리가 사용하는 언어로 간략히 서술해 놓은 것을 말한다.
컴퓨터에서 실행할 수 없으며, 특정 프로그래밍 언어의 문법을 따라 쓰는 것이 아니라 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 의미한다.
1. 의사코드를 사용하는 이유?
- 의사코드는 코딩 입력을 시작하기 전, 사고를 좀 더 명확하게 정립하게 만들어주어 프로그램 설계, 이해에 도움이 된다.
- 코드 검토가 더 쉬워진다.
- 코드 수정을 좀 더 용이하게 만들어준다.(유지보수가 쉬워진다.)
- 코멘트 작성에 대한 부담을 덜어준다.
- 알고리즘이 어떻게 실행되고 결과가 어떻게 나오게 되는지 보여줄 수 있다.
- 다른 사람과 협업할 때 프로그램의 문제를 해결하기 위한 도구로써 프로그램의 흐름에 대해 의견을 나누기 위한 방법으로도 사용된다.
2. 의사코드를 효과적으로 작성하는 방법?
- 잘 짜인 의사코드에 따라 좋은 코드가 작성된다. 의사코드와 코드 모두 같은 스타일로 일관성 있게 작성되야 한다.
- 불필요한 내용은 무시한다. 콤마(,)의 위치를 고민할 필요가 없다.
좋은 방법은 '시작 / 끝(begin / end)' ', '등과 같이 일반적으로 많이 쓰이는 구조적인 기호나 단어들을 적절한 곳에 사용하는 것이다. - 확실한 내용은 여러 번 말하지 않습니다. 문맥에 따라 값의 유형이 정해질 경우가 종종 있다. 예를 들어 값이 정수인지 실수인지 정하는 것이 중요한 문제가 아니라면, 정확하게 값을 구분하는 것이 필요 없을 수도 있다.
- 프로그래밍에 쓰이는 문법을 이용해 작성한다. if / else 조건문, 반복문(loop)인 while은 영어 단어와 같기 때문에, 이를 사용하여 의사코드를 좀 더 명확하게 작성할 수 있다. 적은 수의 단어를 조합하여 의사코드를 작성하는 것도 좋은 방법이다. 변수 사용은 의사코드를 간단명료하게 만들어주기 때문에 생략하지 말아야 한다.
- 사용할 목적과 상황에 주의하여 작성한다. 기본적인 형식을 지키고, 의사코드로 알고리즘 전체를 한 번에 꿰뚫어 볼 수 있어야 한다. 그렇지 않다면 알고리즘을 쉽게 분석하기가 어려워진다.
- 수준을 고려해 작성한다. 만약 다른 사람이 내가 작성한 의사코드가 이해하기 너무 어려워 실제 코드로 옮기기 어렵다면 선택한 난이도에 문제가 있다는 뜻이기 때문에 쉽게 작성한다.
3. 의사코드의 주요 구성
- SEQUENCE : 순서 절차
- WHILE : 반복문
- REPEAT-UNTIL : DO ~ WHILE문
- FOR
- IF-THEN-ELSE : 조건 분기문
- CASE
- EXTRA CONSTRUCTS
- CALL
- EXCEPTION
- CALL
4. 실제 수도 코드에서 많이 쓰이는 키워드
- 입력(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
- 불(Bool) : TRUE / FALSE
- 그외 : REPEAT-UNTIL RETURN BEGIN / EXCEPTION / EXD
5. 수도코드의 예시
문제
n을 매개변수로 받아 0부터 n까지 모든 수의 총 합을 반환하는 함수를 작성하세요.
- 코드를 살펴보면
'Basic > 코딩기초' 카테고리의 다른 글
[HTTP] HTTP기초 (0) | 2023.03.22 |
---|---|
[코딩기초] 자바? (0) | 2023.03.22 |
[코딩기초] SSR vs CSR (0) | 2023.02.22 |
[객체지향] 객체지향 프로그래밍(OOP)?? (0) | 2023.02.21 |
[코딩기초] 자료구조, 알고리즘, 운영체제 (0) | 2023.02.21 |