'흐름도'는 작업의 흐름을 의미합니다. 즉, 알고리즘을 표현하기 위한 다이어그램의 일종으로, 여러 가지 종류의 기호들을 화살표로 연결하여 나타냅니다. 흐름도는 알고리즘이 그러하듯이 프로그램을 위해 만들어진 것은 아닙니다.

 


 

프랭크 길브레스(Frank Gilbreth)

 

프로세스(Process) 또는 작업의 흐름을 구조적으로 표현하기 위한 방법인 흐름도는 1921년 프랭크 

길브레스(Frank Gilbreth)에 의해 소개되었습니다. 소개될 당시에는 '프로세스 흐름도(Process Flow Chart)라는 이름로 불렸습니다. 이후 흐름도는 1940년대에 이루어 허먼 골드스틴(Herman Goldstine)과 존 폰 노이만(John Von Neumann)에 의해 컴퓨터 프로그램 개발을 위한 도구로 사용되기 시작하였습니다.

프로그램을 위한 흐름도가 처음 사용되기 시작할 때는 어셈블리 언어로 프로그램을 작성하기 위한 전단계로 알고리즘을 기술하기 위해 사용되었습니다. 하지만 흐름도는 C언어와 같은 구조적 프로그래밍 언어가 등장하기 이전에 만들어졌기 때문에 문장의 실행 순서가 뒤얽혀있는 스파게티 코드(Spaghetti code)를 만들어 내는 문제점이 있었습니다.

 



 

flowchart symbol / 흐름도 기호

 



흐름도에서는 다양한 기호를 사용합니다. 마이크로소프트 사의 파워포인트를 비롯하여 흐름도 작성을 지원하는 프로그램에서는 흐름도의 표준 기호들을 제공하고 있습니다. 



단말 기호(가장 자리가 둥글다)

단말 기호


1. 단말 (Terminal)

알고리즘의 시작과 끝을 나타내기 위해 사용하는 기호입니다. 흐름도에서 시작과 끝은 반드시 존재하는 것이 좋으며, 가능한 시작과 끝은 하나만 사용하는 것이 알고리즘의 흐름을 파악하는데 용이합니다.

또한, "시작과 끝이 없는 프로그램도 존재할까?" 생각이 들 수도 있습니다. 

 

프로그램의 시작은 반드시 존재합니다. 하지만 끝이 존재하지 않는 프로그램, 동일한 동작을 무한히 되풀이하는 프로그램은 어렵지 않게 찾아볼 수 있습니다. 예를 들면 백화점의 자동문 시스템에는 전원을 내리기 전까지 사람의 접근을 검사하고 문을 여는 동작을 반복하는, 끝나지 않는 프로그램이 설치되어있습니다.

 

 

처리 기호


※ 처리 기호

2. 처리 (Process)

알고리즘의 특정 처리 단계를 나타내기 위해 사용하는 기호입니다. 기호의 내부에는 처리 과정을 기술합니다. 기술되는 내용은 흐름도의 상세 정도에 따라 '100보다 큰 첫 번째 홀수를 구한다.'와 같이 작은 단위의 작업을 표시할 수도 있습니다. 전화로 약속시간을 정하는 경우, 전화번호를 누르는 동작이나 약속시간을 정하기 위해 통화하는 과정 역시 처리 기호로 나타낼 수 있습니다.

데이터 기호



※ 데이터 기호

3. 데이터 (input / output)

입출력이라고도 불리며, 데이터 입출력을 나타내기 위해 사용하는 기호입니다. 현금 인출을 위한 알고리즘에서 비밀번호를 입력하는 과정이나 명세표가 출력되는 과정이 이에 해당합니다.



※ 오늘은 C언어 프로그래밍에서 '흐름도=알고리즘을 표현하는 도구'에 대하여 알아보았습니다.


이 포스트는 학부에서 제공하는 기본적인 컴퓨터 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 C 언어 프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.


#컴퓨터공학 #C언어 #C언어프로그래밍 #프로그램 #알고리즘 #컴퓨터의문제해결 #프로그래밍언어 #공대공부 #알고리즘이해 #흐름도 #flowchart #흐름도기호

+ Recent posts