Loop Diagnosis
반복문은 검사 시점과 갱신 위치로 진단한다
while은 실행 전 조건을 막고, do-while은 한
번 실행한 뒤 계속 여부를 판단한다. 무한 루프는 대개 조건을 바꾸는
갱신이 빠질 때 생긴다.
검사
앞이면 0회 가능
실행
앞이면 최소 1회
갱신
조건을 실제로 바꿈
while
시작 전에 조건을 확인하므로 첫 실행을 건너뛸 수 있다.
조건 검사
거짓이면 본문을 실행하지 않음
본문 실행
조건이 참일 때만 수행
상태 갱신
다음 검사 결과를 바꿈
do-while
먼저 실행하고 마지막 조건으로 다음 반복을 결정한다.
본문 실행
메뉴나 입력처럼 한 번은 수행
상태 갱신
실행 결과로 조건 변수를 바꿈
조건 검사
끝에서 계속 여부를 판단
질문
while 선택
do-while 선택
무한 루프 점검
첫 실행
건너뛸 수 있음
조건이 이미 거짓이면 실행하지 않는다.
반드시 한 번
입력 요청, 메뉴 출력처럼 첫 실행이 필요하다.
초기값 확인
처음부터 항상 참이 되는 값을 의심한다.
조건 변화
본문에서 갱신
입력 재수신이나 카운터 증가가 본문 안에 있어야 한다.
실행 후 갱신
실행 결과가 다음 조건 검사에 반영되어야 한다.
counter++ 누락
조건 변수가 그대로면 루프가 끝나지 않는다.
탈출 방식
조건으로 종료
참인 동안만 반복한다는 의도가 분명하다.
마지막에 종료
한 번 실행한 결과를 보고 반복 여부를 묻는다.
break 위치
의도적 무한 루프라면 탈출 조건이 도달 가능해야 한다.
01
초기값
조건 변수가 어떤 값으로 시작하는지 본다.
02
검사 시점
실행 전 검사인지 실행 후 검사인지 구분한다.
03
갱신 위치
조건을 바꾸는 코드가 실제로 지나가는지 확인한다.
04
탈출 조건
의도적 반복은
break 조건까지 함께 둔다.