Loop Diagnosis

반복문은 검사 시점과 갱신 위치로 진단한다

while은 실행 전 조건을 막고, do-while은 한 번 실행한 뒤 계속 여부를 판단한다. 무한 루프는 대개 조건을 바꾸는 갱신이 빠질 때 생긴다.

검사 앞이면 0회 가능
실행 앞이면 최소 1회
갱신 조건을 실제로 바꿈

while

시작 전에 조건을 확인하므로 첫 실행을 건너뛸 수 있다.

선검사
조건 검사 거짓이면 본문을 실행하지 않음
본문 실행 조건이 참일 때만 수행
상태 갱신 다음 검사 결과를 바꿈

do-while

먼저 실행하고 마지막 조건으로 다음 반복을 결정한다.

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