본문으로 들어가기 앞서, 본 게시글은 컴퓨터공학과 학부생이 학교 수업을 수강한 후(송영록 교수님의 컴퓨터알고리즘 수업) 수업을 이해한 내용을 바탕으로 수업 복습을 위해 작성한 글임을 밝힙니다.
*의사코드란? (=pseudo-code, 수도코드, 슈도코드, 유사코드)
알고리즘을 설명하기 위해 실제 프로그래밍 언어가 아닌, 보다 인간에게 익숙한 언어(고급언어)로 작성된 코드.
자연어(실제 인간이 사용하는 언어)와 프로그래밍 언어의 사이 어딘가의 언어 정도로 이해하면 된다.
의사코드만으로 프로그램을 실행시킬 수는 없고 보통 알고리즘을 이해하고 설명하기 위해 쓰인다.
*의사코드 문법 및 작성법
프로그래밍 언어보다 제약이 적어 좀 더 자유롭게 사용할 수 있지만 기본적으로 통용되는 문법들이 있다.
1. 표현
문법 | 의미 |
exp | 수식 |
var | 변수 |
... | 임의의 명령문 |
arg | 인자 |
[x] | x가 선택사항(즉, 생략 가능) |
x|y|z | x, y, z 중 택일 |
x* | (0번 이상) 반복 가능 |
input... ouput... {주석 내용} |
주석 (input, output의 경우, 입력값과 출력값에 대한 명세 제시) |
연산 문법 | 의미 |
← | 치환(assignment) 왼쪽에 오른쪽 값을 넣음(프로그래밍 언어에서 i=1 과 같은 개념이라 생각하면 될듯) |
=, <, <=, >, >= | 관계 연산자 비교 |
&, ||, ! | 논리 연산자 |
s1, n2 | 첨자와 같은 표현 허용 |
☆들여쓰기
들여쓰기로 범위를 정의함
ex)
for i←1 to n-1
if(A[i]>max)
tmp←max
max←A[i]
2. 예시
- 제어
의사코드 | 설명 |
if(exp) ... |
1. if 문 2. else if 문이 있을 수도 있고 없을 수도 있음, 여러개도 가능 3. else문 있을 수도 있고 없을 수도 있음 |
for var ← exp1 to|downto exp2 |
변수를 exp1부터 exp2까지 1씩 증가 혹은 감소하면서 반복 (즉 0번 이상 반복) |
for each var ∈ exp |
집합 exp에 포함된 변수 var에 대하여 반복 (즉 0번 이상 반복) |
while(exp) |
0번 이상 반복 |
do |
1번 이상 반복(do에서 한번 실행 후 조건 검사) |
- 메소드(method) 정의, 반환, 호출
의사코드 | 의미 |
Alg method([arg [,arg]*]) ... |
메소드 정의 매개 변수 있을 수도 있고 없을 수도 있고 여러 개일 수도 있음 |
return [exp [,exp]*] | 메소드 반환 return 값 있을 수도 있고 없을 수도 있고 여러 개일 수도 있음 |
method ([arg [,arg]*) | 메소드 호출 인자값 전달 있을 수도 있고 없을 수도 있고 여러 개일 수도 있음 |
'개발하자 > 컴퓨터알고리즘' 카테고리의 다른 글
정렬 알고리즘 모음 (0) | 2021.04.21 |
---|