책 내용 질문하기
156페이지 33번 질문입니다
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
156
조회수
195
작성일
2020-04-07
작성자
탈퇴*원
첨부파일

33번 코드 중, 반복문에서 


for(i=1;i<=10;++i,hap+=i); 이렇게 나와있는데 

 

for(i=1;i<=10;++i)

{
    hap += i;

}

 

이렇게 코딩한 것과 결과가 다르게 나오더라구요

 

저는 두 코드가 같다고 생각해서 i,hap이 두 코드 모두 11,55라고 생각했는데

왜 문제에서의 코드는 hap이 65가 되는건지 잘 이해가 안가서 여쭤봅니다

두 코드에 어떤차이가 있는건가요?

답변
2020-04-08 10:49:09

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

 

for문의 수행 순서를 알아두실 필요가 있습니다.

 

for문을 간략화 시키면 다음과 같습니다.

  for(①; ②; ③) 

     ④;

  

for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.

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

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

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

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

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

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

 

이게 말씀하신 후자의 코드입니다. (5회로 줄였다고 가정하고..)

 

전자의 코드는 ④번이 사라지고, ③번이 두개로 늘어나겠네요.

1회 : ①, ②(조건 참)

2회 : ③-1 ③-2, ②(조건 참)

3회 : ③-1 ③-2, ②(조건 참)

4회 : ③-1 ③-2, ②(조건 참)

5회 : ③-1 ③-2, ②(조건 참)

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

 

위 방식에서 i의 초기값은 ①번에서 주어지고, 증가값은 ③-1에서 주어집니다.

후자의 코드는 ①번 이후에 5회의 합산이 이루어지지만, 전자의 코드는 ①과 ③-1번을 수행한 이후에야 5회의 합산(③-2)이 이루어지기에 값이 달라지게 되죠.

 

후자의 코드 : 1+2+3+...+10

전자의 코드 : 2+3+4+...+11

 

이렇게 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-04-08 10:49:09

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

     

    for문의 수행 순서를 알아두실 필요가 있습니다.

     

    for문을 간략화 시키면 다음과 같습니다.

      for(①; ②; ③) 

         ④;

      

    for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.

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

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

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

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

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

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

     

    이게 말씀하신 후자의 코드입니다. (5회로 줄였다고 가정하고..)

     

    전자의 코드는 ④번이 사라지고, ③번이 두개로 늘어나겠네요.

    1회 : ①, ②(조건 참)

    2회 : ③-1 ③-2, ②(조건 참)

    3회 : ③-1 ③-2, ②(조건 참)

    4회 : ③-1 ③-2, ②(조건 참)

    5회 : ③-1 ③-2, ②(조건 참)

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

     

    위 방식에서 i의 초기값은 ①번에서 주어지고, 증가값은 ③-1에서 주어집니다.

    후자의 코드는 ①번 이후에 5회의 합산이 이루어지지만, 전자의 코드는 ①과 ③-1번을 수행한 이후에야 5회의 합산(③-2)이 이루어지기에 값이 달라지게 되죠.

     

    후자의 코드 : 1+2+3+...+10

    전자의 코드 : 2+3+4+...+11

     

    이렇게 됩니다.

     

    행복한 하루되세요 :)

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