책 내용 질문하기
교재 254 문제 11번
도서
2023 시나공 정보처리기능사 실기
페이지
0
조회수
257
작성일
2023-07-27
작성자
김*훈
첨부파일

계속 문의하는데 해결이 안됩니다..

문제에 보면 i = 1; i <= 10; ++i, hap += i)

이부분에서

디버깅하는걸보면 조금 이해가 안가는데

항상 마지막 부분에서 이해가 안갑니다.

저 위에 식에서 우선순위를 명확하게 교재 154페이지 연산자 우선순위표로 왜 디버깅계산 순서가 그렇게 되는지

명확하게 설명부탁드립니다.

저 위에 식을 크게 네덩어리로 볼 수 있는데 첫번째하고 두번째 넘어가고 세번째식 1더해주고 네번째식 합쳐주고 두번째로 다시가서 비교하는 순서라는게

어디에 나와있는지 무슨근거인지 명확하게좀 설명부탁드릴게요

답변
2023-07-27 10:56:39

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

 

연산자의 우선순위를 계속 염두에 두시는데, 해당 식에서 연산자의 우선순위가 끼어들 곳은 전혀 없습니다.

단순히 for문의 제어 순서만이 해당 문제를 푸는데 필요할 뿐이죠. 

 

for문을 제어 순서는 다음과 같다고 설명드렸습니다. 

  for(①; ②; ③) 

     ④;

 

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

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

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

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

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

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

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

 

이 과정을 11번 문제 for(i = 1; i <= 10; ++i, hap += i);에 적용하면,

  for(①; ②; ③-1, ③-2) 

 가 됩니다.

①은 i=1, ②는 i<=10, ③-1은 ++i, ③-2는 hap+=i 를 의미하죠. 

이것을 i가 1일때부터 11이되어 거짓으로 빠져나갈 때까지 반복해보죠.

 

1회 : ①, ②(1<=10), i=1

2회 : ③-1 ③-2, ②(2<=10), i=2, hap+=2

3회 : ③-1 ③-2, ②(3<=10), i=3, hap+=3

4회 : ③-1 ③-2, ②(4<=10), i=4, hap+=4

5회 : ③-1 ③-2, ②(5<=10), i=5, hap+=5

6회 : ③-1 ③-2, ②(6<=10), i=6, hap+=6 

7회 : ③-1 ③-2, ②(7<=10), i=7, hap+=7 

8회 : ③-1 ③-2, ②(8<=10), i=8, hap+=8 

9회 : ③-1 ③-2, ②(9<=10), i=9, hap+=9 

10회 : ③-1 ③-2, ②(10<=10), i=10, hap+=10 

종료 : ③-1 ③-2, ②(11<=10) <탈출>, i=11, hap+=11

 

위 방식대로 진행하게 되면 ++i와 hap+=i가 i가 2일 때부터 11까지 총 10회 수행한 후에 조건식을 만나 for문을 빠져나가게 됩니다.

 

추가로 세미콜론(;)과 쉼표(,)는 식을 구분하는 구분자이며, 연산자 우선순위는 하나의 식 내에서만 선후의 의미가 있습니다. 예를 들어 위의 ++i는 단일 식이므로, 단순히 i에 1을 더하는 연산이라는 의미 외에는 아무것도 없으며, 이에 따라 i++ 또는 i+=1 등으로 변경되어도 상관이 없다는 의미입니다.

 

for문이 있는 모든 해설에서 저희는 다음과 같이 설명합니다.

'반복 변수 i가 1에서 시작하여 1씩 증가하면서 10보다 작은 동안 n번 문장을 반복 수행한다.'

이것을 위의 식에 적용하면 먼저 '시작'인 i=1을 적용하고,

1씩 증가하여라는 '증가'부분이 2개로 늘어났으니 i를 1씩 증가시키면서 hap에 i를 누적시키고, (i=2, hap=2)

'최종'에 해당하는 i가 10에 도달할 때까지 (i=3, hap=5, i=4, hap=9, ... )

n번을 반복하라지만, 여기서는 반복수행해야할 문장이 없으니 위의 행위만 반복 수행해주면 되는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2023-07-27 10:56:39

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

     

    연산자의 우선순위를 계속 염두에 두시는데, 해당 식에서 연산자의 우선순위가 끼어들 곳은 전혀 없습니다.

    단순히 for문의 제어 순서만이 해당 문제를 푸는데 필요할 뿐이죠. 

     

    for문을 제어 순서는 다음과 같다고 설명드렸습니다. 

      for(①; ②; ③) 

         ④;

     

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

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

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

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

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

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

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

     

    이 과정을 11번 문제 for(i = 1; i <= 10; ++i, hap += i);에 적용하면,

      for(①; ②; ③-1, ③-2) 

     가 됩니다.

    ①은 i=1, ②는 i<=10, ③-1은 ++i, ③-2는 hap+=i 를 의미하죠. 

    이것을 i가 1일때부터 11이되어 거짓으로 빠져나갈 때까지 반복해보죠.

     

    1회 : ①, ②(1<=10), i=1

    2회 : ③-1 ③-2, ②(2<=10), i=2, hap+=2

    3회 : ③-1 ③-2, ②(3<=10), i=3, hap+=3

    4회 : ③-1 ③-2, ②(4<=10), i=4, hap+=4

    5회 : ③-1 ③-2, ②(5<=10), i=5, hap+=5

    6회 : ③-1 ③-2, ②(6<=10), i=6, hap+=6 

    7회 : ③-1 ③-2, ②(7<=10), i=7, hap+=7 

    8회 : ③-1 ③-2, ②(8<=10), i=8, hap+=8 

    9회 : ③-1 ③-2, ②(9<=10), i=9, hap+=9 

    10회 : ③-1 ③-2, ②(10<=10), i=10, hap+=10 

    종료 : ③-1 ③-2, ②(11<=10) <탈출>, i=11, hap+=11

     

    위 방식대로 진행하게 되면 ++i와 hap+=i가 i가 2일 때부터 11까지 총 10회 수행한 후에 조건식을 만나 for문을 빠져나가게 됩니다.

     

    추가로 세미콜론(;)과 쉼표(,)는 식을 구분하는 구분자이며, 연산자 우선순위는 하나의 식 내에서만 선후의 의미가 있습니다. 예를 들어 위의 ++i는 단일 식이므로, 단순히 i에 1을 더하는 연산이라는 의미 외에는 아무것도 없으며, 이에 따라 i++ 또는 i+=1 등으로 변경되어도 상관이 없다는 의미입니다.

     

    for문이 있는 모든 해설에서 저희는 다음과 같이 설명합니다.

    '반복 변수 i가 1에서 시작하여 1씩 증가하면서 10보다 작은 동안 n번 문장을 반복 수행한다.'

    이것을 위의 식에 적용하면 먼저 '시작'인 i=1을 적용하고,

    1씩 증가하여라는 '증가'부분이 2개로 늘어났으니 i를 1씩 증가시키면서 hap에 i를 누적시키고, (i=2, hap=2)

    '최종'에 해당하는 i가 10에 도달할 때까지 (i=3, hap=5, i=4, hap=9, ... )

    n번을 반복하라지만, 여기서는 반복수행해야할 문장이 없으니 위의 행위만 반복 수행해주면 되는 것입니다.

     

    행복한 하루되세요 :)

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