문제 5번에서 제대로된 디버깅좀 알 수 있을까요? 답에 나와있는 디버깅은 그냥 위로 쭉 끌어올려놔서 어떤변수가 들어갈 때 어떤값이 나오는지 알 수 가 없어서 이해할 수 가 없어요. 이 책의 모든 디버깅이 그렇게 되있어서 디버깅은 하나도 이해못하고 넘어가고 있습니다.
j |
result |
k |
L |
1 |
2 |
2 |
3 |
2 |
1 |
2 |
2 |
3 |
2 |
2 |
1 |
4 |
3 |
3 |
1 |
5 |
|
4 |
|
result=L k가 크면 result와 k에는 현재 k값이 들어가고 다음j가 바뀌면 k가 증가해서 기록되서 마지막에 j가 5되면 멈추는데 그때 k만 +1이 되면서 멈추는 건가요? L이 크거나 k와 같으면 result에는 -L이 들어가고 L에는 L값이 들어가는건가요? result값에는 k++와 -L이 적용되서 들어가고 k와L값은 j가 바뀌고 적용되는건가요?
안녕하세요.
실제 시험장에서 디버깅할 공간은 문제지 매 페이지의 하단 일부 구역입니다.
이 공간을 할애하여 디버깅을 하려면 최대한 간략하게 디버깅하는 연습이 필요합니다.
그래서 각 변수의 값 변화만 확인하는 방법으로 디버깅을 수행하도록 하였습니다.
자신이 디버깅한 값과 교재의 디버깅 결과를 확인할 때 각 변수의 세로 값 변화만 확인하시면 됩니다.
j는 1, k는 2, L은 3을 초기값으로 갖습니다.
while문의 조건이 true이므로 무한 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 3 < 2이므로 거짓입니다.
result에는 --L, 즉 먼저 L의 값을 1감소한 후 그 값을 저장합니다. result는 2가 됩니다.
--L을 수행했으므로 L은 2입니다.
j++에 의해 j는 2가 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 2 < 2이므로 거짓입니다.
result에는 --L, 즉 먼저 L의 값을 1감소한 후 그 값을 저장합니다. result는 1이 됩니다.
--L을 수행했으므로 L은 1입니다.
j++에 의해 j는 3이 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 1 < 2이므로 참입니다.
result에는 k++, 즉 먼저 현재 k의 값을 저장한 후 1을 증가합니다. result는 2가 됩니다.
k++을 수행했으므로 k는 3입니다.
j++에 의해 j는 4가 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 1 < 3이므로 참입니다.
result에는 k++, 즉 먼저 현재 k의 값을 저장한 후 1을 증가합니다. result는 3이 됩니다.
k++을 수행했으므로 k는 4입니다.
j++에 의해 j는 5가 됩니다.
j >= 5 조건이 참이므로 while문을 빠져나옵니다.
최종적으로 출력되는
result 값은 3이고, k의 값은 4, L의 값은 1입니다.
오늘도 즐거운 하루 되세요.
-
*2018-04-03 10:08:18
안녕하세요.
실제 시험장에서 디버깅할 공간은 문제지 매 페이지의 하단 일부 구역입니다.
이 공간을 할애하여 디버깅을 하려면 최대한 간략하게 디버깅하는 연습이 필요합니다.
그래서 각 변수의 값 변화만 확인하는 방법으로 디버깅을 수행하도록 하였습니다.
자신이 디버깅한 값과 교재의 디버깅 결과를 확인할 때 각 변수의 세로 값 변화만 확인하시면 됩니다.
j는 1, k는 2, L은 3을 초기값으로 갖습니다.
while문의 조건이 true이므로 무한 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 3 < 2이므로 거짓입니다.
result에는 --L, 즉 먼저 L의 값을 1감소한 후 그 값을 저장합니다. result는 2가 됩니다.
--L을 수행했으므로 L은 2입니다.
j++에 의해 j는 2가 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 2 < 2이므로 거짓입니다.
result에는 --L, 즉 먼저 L의 값을 1감소한 후 그 값을 저장합니다. result는 1이 됩니다.
--L을 수행했으므로 L은 1입니다.
j++에 의해 j는 3이 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 1 < 2이므로 참입니다.
result에는 k++, 즉 먼저 현재 k의 값을 저장한 후 1을 증가합니다. result는 2가 됩니다.
k++을 수행했으므로 k는 3입니다.
j++에 의해 j는 4가 됩니다.
j >= 5 조건이 거짓이므로 while문을 계속 반복합니다.
L < k의 조건, 즉 현재 L과 k의 값을 대입하면 1 < 3이므로 참입니다.
result에는 k++, 즉 먼저 현재 k의 값을 저장한 후 1을 증가합니다. result는 3이 됩니다.
k++을 수행했으므로 k는 4입니다.
j++에 의해 j는 5가 됩니다.
j >= 5 조건이 참이므로 while문을 빠져나옵니다.
최종적으로 출력되는
result 값은 3이고, k의 값은 4, L의 값은 1입니다.
오늘도 즐거운 하루 되세요.