03. 순서도 종류

김리원·2021년 8월 25일
0
post-thumbnail

키포인트

  • 순서도는 "순차적", "분기", "반복"의 순서를 확인합니다.
  • 주어진 주제에서 처리순서를 찾아내는 연습을 합시다.

순차적, 분기, 반복의 세가지 순서도

개발자 머릿속 순서도 관점에서 살펴 봅시다.
프로그램은 컴퓨터에 대한 수행할 명령을 작성해 놓은 문서입니다. 여러 개의 행으로 구성된 프로그램은 문서을 읽을 수 있도록 위에서 아래로 향하도록 하여 명령을 해석하고 실행되어 갑니다. 이에 대한 "처리가 순서대로 된다"라는 느낌입니다.
이때 처리 순서의 형태는 "순차적", "분기", "반복" 3가지가 있습니다. 이런 순서도는 프로그램 설계도로 자주 사용되는 "플로우차트"로 표시하면 아래와 같습니다. 각각의 순서도는 얇은 화살표로 나타낸 처리의 흐름을 살펴 봅시다.

순차적

순차적은 위에서 아래로 흘러가는 순서도입니다. 순서도는 사각형으로 처리를 나타내는 사각형을 연결하는 선으로 순서를 표현합니다. 위에서 아래로 순서대로는 선끝에 화살표를 그릴 필요도 없습니다. 이 순차적 순서도에서는 "처리A"->"처리B"->"처리C"순서대로 처리됩니다.

분기

분기의 순서도는 마름모꼴 조건이 True이면 "처리A'로 분기하고 False이면 "처리B"로 분기합니다. 참인 True와 거짓인 False조건의 판정결과를 나타내는 말입니다.Python에서도 True 및 False키워드가 있어 익숙져야 합니다. 이 경우 처리에 대한 순서도를 나타내는 선끝에 화살표를 그립니다. 순서도의 방향을 알기 쉽게 하기 위해서입니다. 분기 순서도에서는 처리 흐름이 "처리A" 또는 "처리B"중 하나에 분기한 후에 하나로 합류되는 것을 눈여겨 보십시오. 많은 경우 프로그램 분기는 분기한 후 합류 합니다. 이런 이유로 순서도를 분기가 아니라 선택이라고 부르기도 합니다. "조건에 따라 처리A나 처리B로 분기한다"라는 "조건에 따라 처리A나 처리B를 선택한다"라고 생각할 수도 있습니다.

반복

반복 순서도에서는 반복처리를 하면서 햄버거처럼 생긴 위/아래가 같은 모양의 기호로 묶습니다. 여기서 그림 기호는 쌍으로 구성되어 있도록 루프(반복)과 같은 루프처럼 같은 이름을 적습니다.
또한, 상하중 하나의 그림기호에 반복조건을 적습니다."햄버거 위에 그림 기호"->"처리"->"햄버거 아래 그림 기호"라는 형태로 사용되고 처리가 반복됩니다.
실무 프로그램은 목적에 따라 "순기적", "분기" "반복"이 다양하게 결합되어 전체 순서도를 만듭니다. 순차적인 경우만 있을 수 있고, 순차적 다음에 분기할 수 있도록 반복에서 분기가 있을 수도 있습니다.

주어진 주제에서 처리의 순서도 찾기

직접 프로그램을 만들 때나 다른 사람이 작성한 프로그램을 읽을 때에도 처리 순서도를 찾지 않으면 안됩니다. 이는 처리를 찾아내면서 프로그래밍 언어의 구문을 기억하기 전에 익혀야 합니다.
심플한 테마에서 모건을 찾아내는 연습을 해둡시다.

테스트
삼각형 면적을 구하는 프로그램을 작성하십시오.

아직 Python 구문을 설명하지 않았기 떄문에 한글로 처리를 생각해 봅시다. 개발자 머릿속은 아래와 같이 생각합니다. "우선 이것은", "그럼 이것을 하고" 등 이렇게 처리순서를 생각할수록 처리의 순서도를 찾게 됩니다.

개발자 뇌에서 발견된 처리 순서도를 정리하면 아래와 같습니다. 여기서는 순차적으로만 프로그램 전체의 순서가 만들어져 있습니다.

밑변 입력 => 높이 입력 => 면적 = 밑변 * 높이 / 2로 계산하기

분기와 반복의 순서도 찾기

여러 개의 행으로 구성된 프로그램은 기본적으로 위에서 아래로 순차적 순서도에서 명령을 해석하고 실행되어 갑니다. 순차적인 것은 자연스러운 순서도입니다. 반면 분기와 반복은 그것들이 필요로 하는 경우에서만 사용되는 특수한 순서도입니다.
분기와 반복이 필요로 하는 경우 다소 복잡한 주제로 순서도를 찾아내는 연습을 합시다.

예제
사용자와 컴퓨터가 1대1로 가위바위보를 하는 게임 프로그램을 만든다고 가정해 봅시다. 사용자가 손 키입력을 합니다. 컴퓨터는 난수로 손을 선택합니다. 승패판정을 하고 그 결과를 "승리", "패배", "비김" 중 하나를 화면에 표시됩니다. "비김"의 경우 재승부를 합니다.

이 예제를 보고 개발자뇌는 다음과 같이 작업할 것입니다. 실제로 프로그램을 만들 때 "승패를 결정한다"라는 처리 내용이 일부 "순차적", "분기"를 조합한 순서도가 있지만 잘 생각해 봅시다. 여기에서 주목하면 좋은 것은 결과를 "승리", "패배", "비김" 중 하나를 화면에 표시합니다"라는 부분을 분기라고 본다면, "비김"의 경우 다시 재승부를 한다는 부분은 "반복"이라고 느낄 것입니다.

"분기"와 "반복"이라는 말이 사용되고 있지 않더라도 개발자라면 찾아낼 수 있는 것이 개발자의 머릿속입니다.

profile
개발자, IT강사, sage.riwon.kim@gmail.com

0개의 댓글