책 내용 질문하기
정보처리기능사 213p 문제 31번
도서
2020 시나공 정보처리기능사 실기 : NCS 기반 전면 개편
페이지
213
조회수
232
작성일
2020-11-02
작성자
탈퇴*원

문제) 다음 java로 구현된 프로그램을 분석하여 그 실행결과를 쓰시오.

 

제가 생각한 답은

합은 1   1입니다

합은 2   3입니다

합은 3   6입니다

합은 4   10입니다

합은 5   15입니다

 

문제 답은

합은 1   0입니다

합은 2   2입니다

합은 3   5입니다

합은 4   9입니다

합은 5   14입니다

 

q. 왜 답이 다른가요 ??

   풀이를 보면 0 0 하고 ++i가 1이되면 그값을 hap과 더해주어서 1은 1이되는 것이 아닌가요? 

 

 

답변
2020-11-04 10:24:56

안녕하세요 길벗수험서 운영팀입니다.

 

for(i=1; i<=5; ++i, hap+=i) 

   System.out.printf("합은%d %4d입니다.\n", i, hap);

 

위의 코드를 아래로 단순화 시켜 보죠.

  for(①; ②; ③) 

     ④;

  

해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.

1회 : ①, ②(조건 참), ④

2회 : ③, ②(조건 참), ④

3회 : ③, ②(조건 참), ④

4회 : ③, ②(조건 참), ④

5회 : ③, ②(조건 참), ④

종료 : ③, ②(조건 거짓) <탈출>

 

처음 수행될 시 증가값에 해당하는 부분(++i, hap+=i)은 수행되지 않으므로 hap은 초기값인 0인 상태 그대로 출력됩니다.

'합은 1   0입니다.'

 

간혹 i가 전치연산자이므로 먼저 계산되어야 한다고 생각하시는 분들이 있으나, 전치후치 연산이 먼저 또는 나중에 수행되기 위해서는 먼저 '식'이 수행되어야 하고, 둘째로 하나의 '식'에 대해서만 전 후가 적용된다는 것입니다.

 

식은 세미콜론; 또는 쉼표, 로 구분되며 for문은 일반적으로 3개의 식으로 구성됩니다.

for ( 식1; 식2; 식3 )

해당 문제의 경우는 쉼표까지 사용하여 식3을 두개로 나눔으로써

for ( 식1; 식2; 식3, 식4) 로 되었습니다.

 

여기서 ++i 는 홀로 수행되는 단일 식으로 식 수행 전에 수행하든, 후에 수행하든 결과가 동일해집니다.

즉, 이 ++i는 i++로 교체되든, i=i+1 또는 i+=1로 교체되든 결과에 어떠한 영향도 주지 못한다는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-11-04 10:24:56

    안녕하세요 길벗수험서 운영팀입니다.

     

    for(i=1; i<=5; ++i, hap+=i) 

       System.out.printf("합은%d %4d입니다.\n", i, hap);

     

    위의 코드를 아래로 단순화 시켜 보죠.

      for(①; ②; ③) 

         ④;

      

    해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.

    1회 : ①, ②(조건 참), ④

    2회 : ③, ②(조건 참), ④

    3회 : ③, ②(조건 참), ④

    4회 : ③, ②(조건 참), ④

    5회 : ③, ②(조건 참), ④

    종료 : ③, ②(조건 거짓) <탈출>

     

    처음 수행될 시 증가값에 해당하는 부분(++i, hap+=i)은 수행되지 않으므로 hap은 초기값인 0인 상태 그대로 출력됩니다.

    '합은 1   0입니다.'

     

    간혹 i가 전치연산자이므로 먼저 계산되어야 한다고 생각하시는 분들이 있으나, 전치후치 연산이 먼저 또는 나중에 수행되기 위해서는 먼저 '식'이 수행되어야 하고, 둘째로 하나의 '식'에 대해서만 전 후가 적용된다는 것입니다.

     

    식은 세미콜론; 또는 쉼표, 로 구분되며 for문은 일반적으로 3개의 식으로 구성됩니다.

    for ( 식1; 식2; 식3 )

    해당 문제의 경우는 쉼표까지 사용하여 식3을 두개로 나눔으로써

    for ( 식1; 식2; 식3, 식4) 로 되었습니다.

     

    여기서 ++i 는 홀로 수행되는 단일 식으로 식 수행 전에 수행하든, 후에 수행하든 결과가 동일해집니다.

    즉, 이 ++i는 i++로 교체되든, i=i+1 또는 i+=1로 교체되든 결과에 어떠한 영향도 주지 못한다는 것입니다.

     

    행복한 하루되세요 :)

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