책 내용 질문하기
기출문제집 질문
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
130
조회수
61
작성일
2018-04-03
작성자
탈퇴*원
첨부파일

문제 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가 바뀌고 적용되는건가요?

답변
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입니다.

오늘도 즐거운 하루 되세요.

  • *
    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입니다.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.