자동로그인  
플로우차트 배우기
 
작성일 : 03-01-15 04:01
플로우차트(Flow Chart) 작성법 배우기 2 - 비교/판단기호 자세히 배우기1
 글쓴이 : 한글닷컴
조회 : 28,536  
이번에는 플로우차트의 조건체크 부분에 대해서 좀더 깊게 배워보도록 하겠습니다.


前 강의에서 플로우차트의 비교, 판단기호에 대해서 배웠습니다. 그런데 비교, 판단기호를 쓸 때는 좀 주의를 하셔야 합니다. 비교, 판단기호를 쓸 때에 간혹 실수하는 부분이 있는데요. 이 부분은 잘 익혀두셔서 실수를 범하는 일이 없도록 하시기 바랍니다.


홍길동이 술집에 갔습니다. 메뉴판을 보니 양주는 2만원, 병맥주는 3000원, 소주는 2000원였습니다. 그래서 홍길동은 지갑을 열어보았습니다. 다음은 홍길동이 지갑을 열어 본 후의 생각과 결정을 정리한 예입니다.



잘 보셨죠? 홍길동이 지갑을 열었을 때 가진 돈이 3000원보다 많다면 홍길동은 양주를 시킬것입니다. 그러나 3000원보다 적다면 소주를 시킬 것입니다.

그런데, 이런.. 맥주부분이 빠졌군요! 맥주에 대한 선택권이 박탈당하면 안되죠. 그래서 가진돈이 딱 3000원이다... 라고 한다면 길동이가 맥주를 먹는다는 상황을 정리해 보도록 하죠.




잘 표현되었죠?
정말 잘 표현된 것일까요? 이 비교, 판단문은 100% 잘못 된 것입니다.
사람의 생각이야 맘대로 할 수 있지만, 알고리즘에서는 예, 아니오만 판단이 가능합니다. 그래서 지금 보는 것과 같이 예, 아니오 이외에 이것도 저것도 아닌 판단이 끼어 들 수 없다는 것입니다. 아니 비교, 판단기호에서 다음으로 나가는 과정은 2개가 되어야지 3개가 될 수 없다는 것입니다.


이 표현문은 아래와 같이 고쳐야 정상입니다.




좀 새로운 모양이죠? 비교, 판단기호 다음에 또 다시 비교, 판단기호가 나타났습니다. 비교, 판단기호도 일반 처리기호와 같이 계속적으로 하위과정에 둘 수 있습니다. 이렇게 한다면 어떠한 비교, 판단문도 예, 아니오로 끝까지 비교, 판단을 시켜서 결과를 만들어 낼 수 있습니다.


이젠 일상적인 말 이외에 프로그램에서 쓰이는 방법으로 비교, 판단기호를 정리해 봅시다.

"A가 10보다 큰가?" 를 어떻게 나타낼까요?
A > 10
이렇게 나타냅니다.

그렇다면 반대로 "A가 10보다 작은가?"는?
네 그렇습니다.
A < 10 입니다.

그럼... "A가 10과 같은가?는 어떻게 나타낼까요?
A = 10
아닙니다. 프로그램세계에선 위와 같은 표현은 '10을 A라는 기억공간에 집어 넣는다'라고 해석됩니다. 잘 모르시겠다구요? 고민하지 마십쇼. 모르면 일단 그냥 넘어가세요. 나중에 생각해도 충분합니다.
그렇다면 어떻게?
A == 10
이렇게 =표시를 두번써서 나타낸답니다.

아 그렇다면 보너스로...
"A가 10이 아닌가?"는 어떻게 표현할까요?
A ≠ 10

네, 우리는 보통 이렇게 표현하죠? 그러나.. 이 표현은 아쉽게도 프로그램 세상에서는... 쓰이지 않습니다. 또한 키보드로 입력할 수도 없구요. 그렇다면?

A != 10
이렇게표현합니다.

물론 지금 설명한 ==, != 는 C언어에서 표현하는 방식입니다. 모든 프로그램 언어에서 같다와 같지 않다는 이처럼 표현하지는 않습니다만, 모든 언어의 기본이 C언어이다보니 이러한 표현방법이 표준화된 것이라고나 할까요? 그냥 그렇다고만 아시기 바랍니다. 더 깊게 들어가봐야 좋을 것 없습니다.

주의할 점은... >, <, ==, !=... 이 기호들은 크다, 작다, 같다, 다르다로 해석하면 안됩니다. 일상적으로 우리는 그렇게 알아듣지만요... 이 표현들은 대게 비교, 판단기호에서 쓰이는 표현이랍니다. 따라서... 큰가? 작은가? 같은가? 다른가? 이렇게 이해해야 됩니다. 이제 슬슬 머리가 아파오기 시작하나요? 어려워 마세요. 어렵다면 다시 차근차근 읽어보세요. 뭐가 어려운지도 모르면서 무턱대고 어렵다고 하지 마세요!


자 그렇다면... 위에서 알아본 프로그램상의 표현방식으로 플로우차트 비교, 판단기호를 그려보도록 하죠.

A가 10보다 큰가?
- 크다면 BBB라는 일을 수행한다.
- 작다면 DDD라는 일을 수행한다.



A가 10보다 큰가?
- 크다면 BBB라는 일을 수행한다.
- 작다면 DDD라는 일을 수행한다.
- 크지도, 작지도 않고 10과 같다면 CCC라는 일을 수행한다.

자 위의 플로우차트에서 잘못된 점을 발견할 수 있으시죠? 비교, 판단기호는 두가지 갈래로만 나갈 수 있지 분명 세갈래로 나갈 수 없다고 하였습니다. 또한 Yes나 No의 대답만 있을 뿐 모른다, 알아서 해라, 웃기지마라 등등.. 인간이 하는 애매모호한 대답은 없습니다. 오로지!!! Yes, No만 있을 뿐입니다.


문제입니다! 위의 잘못된 플로우차트는 어떻게 바꿔야 할까요? 생각해 보세요... 마우스 스크롤 하지 마세요... 생각하고 연습장에 그려보세요. 그리신후에 아래를 보도록 하세요... 문제를 풀기전에 해답을 보는 행위는? 아시죠? 패배의 지름길...



위의 플로우 차트는 아래와 같이 개선되어야 겠죠?



자, 이제 또 문제를 풀어봅시다.
연습장과 필기도구를 준비하세요.

주의 사항 : 문제를 풀기전에 절대로!!! 해답을 먼저 보지 마십시오. 자신의 실력을 깍아내리는 가장 손 쉬운 지름길입니다. 해답은 문제 하단에 나옵니다. 또한 제가 제시하는 해답은 100% 완벽한 정답은 아닙니다. 알고리즘엔 정답이란 것이 없습니다. 다만 가장 정답과 가까운 답이라는 것일 뿐입니다.


문제 : 다음의 과정을 플로우차트로 그려보시오.

- a가 b보다 큰가?
- 크다면 : AAA를 수행한다.
- 작다면 : b는 c보다 큰가?
- 크다면 : BBB를 수행한다.
- 작다면 : c는 d와 같지 않은가?
- 같지 않다면 : CCC를 수행한다.
- 같다면 : DDD를 수행한다.


해답


Copyright ⓒ Haangul.com allright reserved