책 내용 질문하기
2권 273쪽 예상문제 은행입니다.
도서
2021 시나공 정보처리기사 실기
페이지
273
조회수
490
작성일
2021-07-02
작성자
탈퇴*원
첨부파일

java로 구현된 프로그램을 분석하여 실행 결과를 쓰라는 문제입니다.

반복문을 실행할 때 이해가 안되고 자꾸 틀리는 부분인데 이해할 수 있도록 설명 부탁드립니다.

int i = 0, hap = 0

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

이렇게 되어있는데 제가 반복문을 실행해보면

처음 시작은 0부터니까 

i   hap

0   0

두번째는 for문에서 i에 1값을 주고 시작하고 i는 5보다 작으니까 넘어가고 전치연산이니까 i에 1을 더합니다. hap은 i값과 hap값을 더하니까 2입니다. 두번째는 i가 2니까 5보다 작고 전치연산으로 해서 i는 3 hap값은 이전에 2와 i를 더해서 5 이런식으로 반복합니다.

i   hap

0   0 

1   2

2   5

3   9

4   14

5   20

6

이렇게 결과가 나왔으며 답은 i 1번부터 하는데 전치연산에 의해 6까지 나왔으니까 6에 20까지 해야하는게 아닙니까?? 다른거 풀 때도 항상 전치 후치 때문에 답이 틀리는데 ㅠㅠ

합은1    0입니다.

합은2    2입니다.

합은3    5입니다.

합은4    9입니다.

합은5    14입니다.

합은6    20입니다.





 

답변
2021-07-02 09:53:32

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

 

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회 : ③, ②(조건 참), ④

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

 

여기서 이상한 점을 느끼셔야 합니다.

회원님께서 "for문에서 i에 1값을 주고 시작하고 i는 5보다 작으니까 넘어가고 전치연산이니까 i에 1을 더합니다. hap은 i값과 hap값을 더하니까 2입니다." 라고 하셨음에도 불구하고 실제 코드의 첫 회전에서는 ④번(합은? ?입니다.)을 출력할 때 ++i와 hap+=i가 수행조차 되지 않고 있음을 알 수 있죠.

 

그리고 마지막에 ③(++i, hap+=i)을 수행하고, ②에서 조건이 거짓이 되며 반복문을 빠져나가므로 i의 값은 6으로 증가하지만 출력은 하지 않는 상황이 오는 것이죠.

 

for문의 기본적인 수행 과정을 착각하고 계신 점이 있는 것 같습니다. QR을 통해 강의 영상도 함께 확인하시면서 for문의 정확한 수행 과정을 기억해 두세요.

 

추가로 전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다. 즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐, 문제와 같이 쉼표로 두 식이 구분되어 때는 그저 1을 증가시키는 것 외의 다른 것을 고려치 않으셔도 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2021-07-02 09:53:32

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

     

    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회 : ③, ②(조건 참), ④

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

     

    여기서 이상한 점을 느끼셔야 합니다.

    회원님께서 "for문에서 i에 1값을 주고 시작하고 i는 5보다 작으니까 넘어가고 전치연산이니까 i에 1을 더합니다. hap은 i값과 hap값을 더하니까 2입니다." 라고 하셨음에도 불구하고 실제 코드의 첫 회전에서는 ④번(합은? ?입니다.)을 출력할 때 ++i와 hap+=i가 수행조차 되지 않고 있음을 알 수 있죠.

     

    그리고 마지막에 ③(++i, hap+=i)을 수행하고, ②에서 조건이 거짓이 되며 반복문을 빠져나가므로 i의 값은 6으로 증가하지만 출력은 하지 않는 상황이 오는 것이죠.

     

    for문의 기본적인 수행 과정을 착각하고 계신 점이 있는 것 같습니다. QR을 통해 강의 영상도 함께 확인하시면서 for문의 정확한 수행 과정을 기억해 두세요.

     

    추가로 전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다. 즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐, 문제와 같이 쉼표로 두 식이 구분되어 때는 그저 1을 증가시키는 것 외의 다른 것을 고려치 않으셔도 됩니다.

     

    행복한 하루되세요 :)

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