프로그래밍웹 교과서
이 페이지의 목차
1단원 · 7차시

순서도와 의사 코드로 표현하기

순서도순서도 기호의사 코드제어 흐름

학습 목표

  • 순서도 기호의 의미를 알고 알고리즘을 순서도로 표현한다.
  • 같은 알고리즘을 의사 코드로 옮겨 적는다.

관련 성취기준

  • 프그01-03

    주어진 문제를 해결하기 위한 알고리즘의 개념을 알고, 순서도 또는 의사 코드 등을 이용하여 문제를 해결하는 알고리즘을 작성할 수 있다.

생각 열기 — 말로만 적은 절차

6차시에서 다듬은 절차를 말로 적으면 이런 모양이 된다.

값을 하나 받는다. 그 값이 60 이상이면 합격이라고 알리고, 아니면 불합격이라고 알린다. 다만 값이 0보다 작거나 100보다 크면 잘못된 값이라고 알리고 처음으로 돌아가 다시 받는다.

순서도 — 절차를 그림으로 그린다

순서도(flowchart) — 정해진 기호와 화살표로 절차의 흐름을 나타낸 그림는 정해진 기호와 화살표로 절차를 그린 그림이다. 어디서 갈라지고 어디로 되돌아가는지 화살표가 그대로 보여 주므로, 글로 적을 때 생기는 애매함이 사라진다.

기호는 아무렇게나 그리지 않는다. 모양마다 정해진 뜻이 있다. 그래서 다른 사람이 그린 순서도도 읽을 수 있다.

시작 · 끝단자절차가 시작되는곳과 끝나는 곳입력 · 출력입·출력자료를 받거나결과를 내놓는다계산 · 저장처리계산하거나 값을변수에 저장한다조건판단조건에 따라 나가는길이 갈라진다초깃값준비반복에 쓸 값을미리 정해 둔다기호와 기호는 흐름선(화살표)으로 잇는다. 화살표 방향이 실행되는 순서다.
순서도에 쓰는 기본 기호. 모양이 곧 그 단계의 종류를 뜻한다.자체 제작
분류하기순서도 기호의 뜻

카드를 누른 뒤, 넣을 통을 누른다. 통 안의 카드를 누르면 다시 나온다.

단자

입·출력

처리

판단

갈라지는 흐름 — 두 수 중 큰 수 찾기

두 수를 받아 큰 것을 알려 주는 절차를 순서도로 그린 것이다. 마름모에서 길이 둘로 갈라지고, 다시 하나로 모여 끝난다.

시작a, b 입력a > b ?예아니오큰수 ← a큰수 ← b큰수 출력갈라진 두 길이 한 점에서 만난 뒤같은 출구로 나간다.
두 수 중 큰 수를 찾는 순서도. 판단에서 갈라진 두 길이 다시 하나로 모인다.자체 제작

두 값이 같을 때는 “아니오” 쪽으로 가서 큰수 ← b 가 된다. 두 값이 같으므로 답은 맞다. 판단의 조건을 정할 때는 같은 경우가 어느 쪽으로 가는지 늘 확인해야 한다. 5차시의 경계값 이야기가 여기에도 그대로 적용된다.

되돌아가는 흐름 — 1부터 n까지 더하기

반복은 화살표가 위로 되돌아가는 모양으로 나타난다. 되돌아가기 전에 반드시 판단을 지나야 한다. 판단을 지나지 않고 되돌아가면 끝나지 않는 절차가 된다.

시작합계 ← 0, i ← 1i ≤ n ?예합계 ← 합계 + ii ← i + 1되돌아간다아니오합계 출력끝되돌아가기 전에 반드시 판단을 지난다.그래서 이 절차는 끝난다 — 유한성.i ← i + 1 을 빠뜨리면 i 가 늘지 않아조건이 늘 참이 되고 끝나지 않는다.
1부터 n까지 더하는 순서도. 조건을 만족하는 동안 되돌아가며 같은 처리를 되풀이한다.자체 제작

의사 코드 — 말과 코드 사이로 적는다

순서도는 흐름을 한눈에 보여 주지만 단점이 있다. 그리는 데 시간이 걸리고, 절차가 길어지면 종이 한 장에 들어가지 않는다. 그래서 실제 설계에서는 의사 코드(pseudocode) — 특정 언어의 문법에 얽매이지 않고 사람이 읽을 수 있게 적은 절차를 더 많이 쓴다.

의사 코드는 프로그래밍 언어처럼 줄 단위로 적지만 어느 언어의 문법도 따르지 않는다. 세미콜론이나 괄호 규칙을 지킬 필요가 없고 한국어로 적어도 된다. 대신 두 가지를 지킨다.

  1. 한 줄에 한 단계를 적는다.
  2. 들여쓰기로 구조를 나타낸다. 조건 안에 들어가는 줄, 반복 안에 들어가는 줄을 오른쪽으로 밀어 적는다.

앞의 두 순서도를 의사 코드로 옮기면 이렇게 된다.

[두 수 중 큰 수 찾기]
1  시작
2  a, b 를 입력받는다
3  만약 a > b 이면
4      큰수 ← a
5  아니면
6      큰수 ← b
7  큰수 를 출력한다
8  끝
[1부터 n까지 더하기]
1  시작
2  n 을 입력받는다
3  합계 ← 0
4  i ← 1
5  i ≤ n 인 동안 되풀이한다
6      합계 ← 합계 + i
7      i ← i + 1
8  합계 를 출력한다
9  끝

36번 줄과 57번 줄의 들여쓰기가 순서도의 갈라짐과 되돌아감을 대신한다. 6번 줄이 5번 줄보다 안쪽에 있으므로 “되풀이하는 동안 실행되는 부분”임을 알 수 있다. 이 들여쓰기는 2단원에서 배울 Python 문법과 거의 그대로 이어진다.

순서도와 의사 코드 — 언제 무엇을 쓰나

순서도와 의사 코드의 비교
기준순서도의사 코드
나타내는 방식기호와 화살표 그림줄 단위 글과 들여쓰기
흐름 파악한눈에 들어온다 — 특히 갈라짐과 되돌아감들여쓰기를 읽어야 파악된다
긴 절차종이를 넘어가 그리기 어렵다길어져도 감당된다
고치기다시 그려야 한다한 줄만 고치면 된다
코드로 옮기기한 번 더 옮겨 적어야 한다거의 그대로 옮겨진다
잘 맞는 곳흐름을 남에게 설명할 때, 처음 배울 때실제 설계 문서, 혼자 정리할 때

되짚기

빈칸 채우기두 가지 표현 방법

정해진 기호와 화살표로 흐름을 그리는 것이 1이고, 어느 언어의 문법도 따르지 않고 줄 단위로 적되 2로 구조를 나타내는 것이 의사 코드다. 되돌아가는 흐름을 그렸다면 무엇이 변해서 반복이 3 반드시 확인한다.

정답 보기
  1. 순서도
  2. 들여쓰기
  3. 끝나는지

활동

실습

같은 알고리즘을 순서도와 의사 코드로 각각 적기

약 25분

과제 1 — 두 수의 합

두 수를 입력받아 합을 출력하는 절차를 ⓐ 순서도와 ⓑ 의사 코드로 각각 만든다. 순서도에는 단자·입출력·처리 기호를 모두 쓴다.

과제 2 — 세 수 중 최댓값

세 수 a, b, c 를 입력받아 가장 큰 값을 출력하는 절차를 만든다. 판단 기호를 몇 개 써야 하는지 먼저 생각한다.

  • 순서도로 그린다. 갈라진 길이 다시 모이는 지점을 반드시 표시한다.
  • 같은 절차를 의사 코드로 옮긴다. 들여쓰기를 정확히 맞춘다.
  • 세 값이 모두 같을 때 어느 길로 가는지 확인하고, 그때도 답이 맞는지 적는다.

과제 3 — 서로 확인하기

짝과 종이를 바꾼다. 짝의 의사 코드만 보고 다음 표를 채운다. 표의 값이 손으로 따라간 결과와 맞는지 확인한다.

입력 (a, b, c) 내가 손으로 따라간 결과 기대한 결과 같은가
3, 9, 5 9
7, 7, 2 7
4, 4, 4 4
-2, -8, -5 -2

마지막 줄에 음수를 넣은 까닭을 생각해 보자. 최댓값을 0으로 두고 시작하는 절차는 이 줄에서 틀린 답을 낸다.

개념 확인 문제

보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.

순서도에서 마름모 기호가 뜻하는 것은?프그01-03

순서도에서 '합계 ← 합계 + i' 라고 적었을 때 이 표기의 뜻은?프그01-03

1부터 n까지 더하는 순서도에서 'i ← i + 1' 을 빠뜨리면 어떻게 되는가?프그01-03

의사 코드에서 들여쓰기가 하는 일은?프그01-03

긴 절차를 설계 문서로 남길 때 순서도보다 의사 코드가 유리한 까닭으로 알맞은 것은?프그01-03

더 알아보기

심화순서도 기호는 표준으로 정해져 있다

순서도 기호는 나라마다 다르게 쓰면 소용이 없으므로 국제 표준으로 정해져 있다. 이 차시에서 다룬 다섯 기호 말고도 서류(출력물), 저장 장치, 다른 순서도로 이어짐을 뜻하는 기호 등이 더 있다. 다만 실무에서 자주 쓰는 것은 몇 개뿐이다. 기호를 많이 아는 것보다 판단과 반복을 정확히 그리는 것이 훨씬 중요하다.

심화흐름을 그리는 다른 방법들

순서도 말고도 절차와 구조를 그리는 방법이 여럿 있다. 화살표 없이 상자를 겹쳐 쌓아 조건과 반복을 나타내는 방법, 화면이 어떤 순서로 넘어가는지만 그리는 방법, 프로그램의 덩어리와 그 관계만 그리는 방법이 있다. 목적이 다르기 때문이다. 절차를 그릴 때와 구조를 그릴 때 쓰는 그림이 다르다. 3단원에서 프로그램 구조를 설계할 때 그 차이를 다시 다룬다.

실무설계 없이 코드부터 쓰면 정말 빠른가

짧은 프로그램이라면 순서도를 그리는 시간이 아깝게 느껴진다. 실제로 열 줄짜리 프로그램은 바로 쓰는 것이 빠르다. 그런데 판단이 셋 이상 겹치거나 반복 안에 반복이 들어가면 머릿속으로 흐름을 붙잡고 있기가 어려워진다. 이때부터는 그리는 쪽이 빠르다. 기준을 하나 세워 두면 편하다 — “흐름을 말로 설명하다가 막히면 그린다.” 설명할 수 있으면 머릿속에 있는 것이고, 막히면 없는 것이다.

이어지는 학습

이 차시를 이해하려면 다음을 먼저 알아야 한다.

  • 6차시의 알고리즘 개념과 조건 — 프로그래밍 프그01-03

교과서에서 찾기

교과서해당 위치쪽수
성림출판(Python)프로그래밍의 개요 › 03 알고리즘34쪽
씨마스커뮤니케이션(Python)프로그래밍 개요 › 3 알고리즘32쪽
삼양미디어(Python)프로그래밍의 개요 › 02 프로그래밍의 절차와 알고리즘 (프그01-02와 통합)22쪽
삼양미디어(C)프로그래밍의 개요 › 02 프로그래밍의 절차와 알고리즘 (프그01-02와 통합)22쪽
씨마스(C)프로그래밍의 개요 › 3 알고리즘30쪽
웅보출판사(C)프로그래밍의 개요 › Chapter 03 알고리즘34쪽