문제 설명
사용자가 0을 입력할 때까지 숫자를 계속 입력받고
프로그램 종료 시 지금까지 입력한 숫자 중 가장 큰 숫자를 출력하는 문제를 플로우차트로 설계
입력 / 출력 정리
입력
- 사용자로부터 정수 숫자를 반복해서 입력받는다.
- 입력값이 0이면 입력을 종료한다.
출력
- 프로그램 종료 시 지금까지 입력한 숫자 중 가장 큰 값(max)을 출력한다.
상태 (계속 들고 있어야 하는 값)
- max : 지금까지 입력한 숫자 중 가장 큰 값
- input : 사용자가 현재 입력한 숫자
조건 정리
종료 조건
분기 조건
- 입력값이 0인지 여부
- 입력값이 현재 max보다 큰지 여부
예외/가정
- 입력은 정수라고 가정한다(음수 포함)
- 최소 1개 이상의 숫자가 입력된다
- 0은 최댓값 비교에 포함하지 않는다
흐름 설계
1) 시작 시 한 번만 수행
- max를 아주 작은 값으로 초기화한다.
첫번째로 입력되는 숫자가 정상적으로 max로 저장되도록 하기 위함.
만약 max를 0으로 초기화하면, 입력값이 음수일 경우 실제로 입력되지 않은 0이 최댓값으로 출력될 수 있음
2) 반복 구조
- 숫자를 입력받음
- 입력값이 0인지 확인
예 -> max를 출력하고 프로그램 종료
아니오 -> 다음 조건으로 진행
- 입력값이 max보다 큰지 확인
예 -> max = 입력값 으로 상태 업데이트
아니오 -> 아무 작업도 하지 않음
- 어떤 경우든 다시 숫자를 입력받음
max가 갱신되더라도 프로그램은 종료되지 않으며, 오직 0이 입력될 때만 종료된다.
3) 종료 시
결과

이번 연습문제를 하면서
종료 조건과 상태 업데이트 조건은 완전이 다른 개념이라는 것을 깨달았다.
입력값 == 0 -> 종료조건
입력값 > max -> 상태 업데이트 조건
max = 입력값 이후에도 반드시 반복 구조로 돌아가야함
플로우차트를 직접 설계해보니 조건문과 반복문의 개념을 더 잘 이해할 수 있었다.