JAVA
디버깅표를 이용한 이중for문 - 별찍기
yn98
2024. 6. 27. 13:53
예전에 학교를 다닐 때에도 반복문은 진짜 많이 했던 기억이 난다.
하지만 반복문을 중첩으로 사용하게 된 시점부터 너무 어렵고 힘들어서 포기를 했던 기억이 난다.
그때 포기를 했던 이유를 지금 와서 생각해보면 "디버깅표" 라는 것을 몰라서 그러지 않았나 싶다.
또한 지금 현재 가르쳐주시고 있는 강사님이 하지 말라던 "콘솔"에 의존해서 제시한 결과물을 똑같이 출력하는데에 초점을 두고 연습을 했기 때문에 실력이 늘 수가 없었다.
국비 교육을 받으면서 디버깅표를 알게 되고 원리를 이해하니까 생각보다 할만하다는 것을 깨달았다.
여기서 디버깅표란, 알고리즘(순서도)이 정확하게 작성되었는지 최종적으로 검증하는 표이다.
표를 작성할 때, 변수값과 조건값(T, F)를 입력하여, 컴퓨터가 진행하는 동작을 직접 입력해주면 된다.
아래는 예시이다.
*
**
***
****
*****
위의 별찍기의 디버깅표를 작성해보면 이렇다.
a | a<5 | i | ??? |
0 | T | 0 | T |
1 | F | ||
1 | T | 0 | T |
1 | T | ||
2 | F | ||
2 | T | 0 | T |
1 | T | ||
2 | T | ||
3 | F | ||
3 | T | 0 | T |
1 | T | ||
2 | T | ||
3 | T | ||
4 | F | ||
4 | T | 0 | T |
1 | T | ||
2 | T | ||
3 | T | ||
4 | T | ||
5 | F | ||
5 | F |
위 디버깅표를 보면, a의 값이 5가 되면 종료되고, i<=a값이 되면 종료된다.
위 디버깅표를 토대로 작성해보면,
public static void main(String[] args) {
for(int a=0;a<5;a++) { // *을 5줄 찍을 것이다
for(int i=0;i<=a;i++) {
System.out.print("*");
}
System.out.println(); // 줄바꿈
}
}
이렇게 코드가 나오게 되고, 위 코드를 실행시키면 처음 원하는 별찍기가 출력된다.