computer_science/algorithm

[알고리즘] 02. 순서도와 Raptor 기초

렁치 2026. 7. 18. 12:30

알고리즘을 코드로 짜기 전에, 처리 흐름을 그림으로 그려보면 논리가 한결 명확해진다. 그 그림이 순서도(Flowchart)다. 오늘은 순서도 기호와, 순서도를 직접 실행해볼 수 있는 도구 Raptor의 동작 규칙을 정리했다.


1. 순서도란?

순서도(Flowchart)
일의 처리 과정을 순서대로 기호와 도형으로 도식화한 것이다. Raptor는 이 순서도를 그려서 바로 실행해볼 수 있는 교육용 프로그래밍 도구다.

 

기호 의미
타원 시작(Start) / 종료(End)
평행사변형 입력(INPUT) / 출력(OUTPUT)
직사각형 처리·대입(assignment)
마름모 판단(조건/선택)

 

이 기호들의 조합으로, 알고리즘의 세 기본 구조인 순차·선택·반복을 모두 표현할 수 있다.

  • 순차구조: 명령을 주어진 순서대로 실행
  • 선택구조: 조건에 따라 분기
  • 반복구조: 조건에 따라 반복

2. Raptor의 동작 규칙

Raptor는 분기와 반복의 방향이 정해져 있어, 이 규칙을 정확히 알아야 했다.

 

선택구조 (마름모)

마름모에 조건식을 쓰고, 참이면 Yes(왼쪽), 거짓이면 No(오른쪽) 경로로 분기한다.

반복구조 (Loop)

 

Raptor의 반복은 일반 while과 방향이 반대다
Raptor의 Loop는 조건이 참(Yes)이면 반복을 탈출하고, 거짓(No)이면 반복한다. 즉 "조건이 만족되면 멈춘다"는 종료 조건으로 읽어야 한다. 조건이 참인 동안 반복하는 일반 while문과 정반대라, 가장 헷갈리는 지점이다.

 

이 반대 방향 때문에 처음엔 반복이 한 번 더 돌거나 일찍 끝나는 실수를 했다. "Raptor는 조건이 참이면 탈출"이라고 종료 조건으로 읽는 습관을 들이니 정리됐다.

반복 횟수가 정해진 구조에는 반드시 세 요소가 필요하다.

  • ① 초기값: 반복 제어 변수의 시작값
  • ② 조건: 반복을 멈출 기준
  • ③ 증감값: 매 반복마다 변수를 바꾸는 값

이 셋 중 하나라도 빠지면 무한 반복이나 잘못된 횟수로 이어진다.


3. Raptor의 변수와 배열

Raptor는 일반 프로그래밍 언어와 다른 점이 몇 가지 있다.

  • 변수를 선언 없이 쓴다. 값을 대입하는 순간 변수가 생성된다.
  • 배열 인덱스가 1부터 시작한다(a[1], a[2] …). C의 0부터와 다르다.
  • 원주율 같은 값은 상수 pi로 바로 쓸 수 있다.

 

인덱스가 1부터 시작한다는 점에 주의
대부분의 프로그래밍 언어는 배열 인덱스가 0부터지만, Raptor는 1부터다. 나중에 C로 넘어갈 때 이 차이 때문에 인덱스 실수를 하기 쉬우니, "도구마다 시작 번호가 다르다"는 걸 의식해두면 좋다.

 


4. 단계로 그려보기

순서도는 예쁘게 그리는 것보다 흐름이 빠지지 않는 것이 중요하다. 예를 들어 세 정수의 평균을 구하는 문제는 다음처럼 나눠 그릴 수 있다.

이 흐름을 C 코드로 옮기면 순서도와 거의 같은 순서가 된다.

int iScore1;
int iScore2;
int iScore3;
int iSum;
double dAverage;

printf("점수 3개 입력: ");
scanf("%d %d %d", &iScore1, &iScore2, &iScore3);

iSum = iScore1 + iScore2 + iScore3;
dAverage = iSum / 3.0;

printf("합계: %d\n", iSum);
printf("평균: %.2f\n", dAverage);

 

핵심은 변수 선언부, 입력부, 처리부, 출력부가 분리되어 있다는 점이다. 이렇게 쓰면 나중에 입력만 함수로 빼거나, 평균 계산만 함수로 빼기 쉽다.

 

순서도 단계 C 코드로 옮길 때
입력 평행사변형 scanf
처리 직사각형 대입문
판단 마름모 if, while
출력 평행사변형 printf

 

유제

  1. 반지름을 입력받아 원의 넓이를 출력하는 순서도를 Mermaid 또는 Raptor 형태로 그려라.
  2. 두 수를 입력받아 큰 수를 출력하는 순서도를 그리고 C 코드로 옮겨라.
  3. 1부터 10까지 출력하는 반복 순서도에서 초기값, 종료 조건, 증감 위치를 표시하라.

오늘 느낀 점

  • 코드로 바로 들어가지 않고 흐름을 먼저 그려보니, 빠진 경로나 잘못된 분기가 그림에서 눈에 보였다. "흐름을 먼저 그린다"는 습관의 가치를 알았다.
  • Raptor의 Loop가 일반 while과 정반대(참이면 탈출)라는 데서, 같은 "반복"도 규칙이 도구마다 다를 수 있다는 걸 배웠다. 직접 한 번 헤매고 나서야 종료 조건으로 읽게 됐다.
  • 배열 인덱스가 1부터라는 작은 차이가 나중에 함정이 될 수 있다는 걸 미리 의식해뒀다.

한 걸음 더

  • 순서도는 옛 기법 같지만, 복잡한 조건 분기나 업무 프로세스를 설계할 때 지금도 쓰인다. 코드로 바로 들어가면 놓치기 쉬운 "흐름의 빠진 경로"를 그림으로 그리면 한눈에 발견할 수 있기 때문이다. 도구는 Raptor가 아니어도, "흐름을 먼저 그려본다"는 습관은 두고두고 유용하다.
  • Raptor의 Loop가 "조건이 참이면 탈출"이라는 건 사실 do-while의 변형에 가깝다. 본문을 먼저 수행하고 조건을 검사하기 때문이다. 같은 반복이라도 "참일 때 반복"과 "참일 때 탈출"이라는 정반대 규칙이 있을 수 있다는 걸 알면, 다른 언어·도구를 만나도 당황하지 않는다.
  • 순서도의 세 구조(순차·선택·반복)만으로 모든 알고리즘을 표현할 수 있다는 사실은 구조적 프로그래밍 이론의 핵심이다. goto 같은 무질서한 점프 없이도 이 세 구조의 조합으로 어떤 논리든 짤 수 있다는 것이 증명되어 있어, 현대 프로그래밍 언어의 제어문이 이 셋을 중심으로 설계됐다.