책 내용 질문하기
for문 문의
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
113,120,121,504,514,518
조회수
218
작성일
2019-05-04
작성자
탈퇴*원
첨부파일
고생이 많으십니다 java에 쓰인 for문에 대해 문의드립니다. ㅇ 문의요약 ++i 와 i++의 차이를 문의드립니다. 113쪽 문제1의 for문은 i++로 되어 있고, 아래와 같이 해석하고 풀이하였습니다. 횟수 / i / j - - 0 1 0 0 2 1 1 (여기서 i=1인 것은, i++이므로 횟수1에서 그 계산을 마친 다음에 1을 증가시키고, 그것을 2회차에 연이어 쓴 것임) 3 2 3 4 3 6 5 4 10 6 5 15 7 6 21 8 7 28 (i가 7일때까지 j를 구한 다음) - 8 - (i++이므로 위 계산이 끝난 후의 i는 8이 되었고 조건은 i<8이므로 for문 탈출) 따라서 i=8, j=28 ㅇ문의1 - 120쪽 문제20 for문에서 ++a로 증가하는 경우로, 514쪽의 해설을 보았습니다만, 뭔가 잘못 이해된 것 같아서 여쭤봅니다. 1. ++a임에, a=0으로 초기값이 주어졌다 하더라도 hap+=a 식에서는 a가 1이 증가하여 hap+=1이 될것 같습니다. 정리하면 횟수 / a / hap - - 0 1 / 0 -> 1 (++a이므로 계산식에서는 1로 취급)/ 1 2 / 1 -> 2 (상동) / 3 중략 10 / 9 -> 10(이제 a=10이고 <10이 아님에 for문 끝) / 55 따라서 a=10, hap=55 일단 제가 뭘 잘 모르니 해설을 그냥 받아들인다라면.. ++a인 경우도 a++와 같이 이해하되, 다만 do while과 비슷하게 조건이 거짓이 되는 경우까지 한번 더 셈을 한다는 것이 있다는 것이 a++과의 차이라면 그것까지는 이해가 됩니다만.. ㅇ 문의2 - 518쪽 문제25의 해설 디버깅 상에서, 횟수1을 보면 i=1일 때, hap=0입니다. 그렇다면 문20이나 문25나 횟수1에서 hap은 초기값을 끌어다 쓴다고 생각해야 하겠는데... 제가 어떻게 이해하고 있는지 대강 짐작되시리라 생각합니다. 그간 문제풀이를 할 때는 모두 정답을 내었고 한번도 이런 고민을 안했는데 디버깅의 이해와 25번 문제에서 막혀버려 답답함에 문의를 드립니다. ㅇ 문의3 지금은 java를 보고 있는데, c에서도 똑같이 해석하면 되는 것인지도 궁금합니다. 이상으로 문의드립니다. 감사합니다.
답변
2019-05-07 11:35:59

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

 

먼저 for문의 3번째 식에 들어가는 ++i와 i++의 차이는 전혀 없습니다.

전치수식(++i)과 후치수식(i++)으로 값이 달라지는 경우는 여러 인자가 들어가는 복합식에 포함되는 경우 뿐입니다.

(ex :  sum = sum + i++   또는 sum = sum + ++i)

 

for문의 진행

 

for(; ; ) {

;

}

 

위의 for문이 3회 반복한다고 가정했을 때, 순서는

1: , (조건 참),

2: , (조건 참),

3: , (조건 참),

4: , (조건 거짓) <탈출>

입니다.

4회 때 증가식(3번)을 수행하고 조건식(2번)을 거짓으로 하고 빠져나가기 때문에 한 번 더 수행된다고 보여지는 것이죠.



[1]

120쪽의 문제 20번도 위의 것들을 고려하면서 풀어보세요.

쉼표(,)로 구분되는 식은 별개의 식입니다.

++a를 수행하고 난 후, hap+=a를 수행하는 것이지 앞의 전치수식이 뒤의 식에 영향을 미치지는 않습니다.


 

[2]

위의 for문을 생각해보세요.

첫 번째 회전이라고 함은 for문 내의 식(4번)이 수행되어야 하는 타이밍입니다.

때문에 증가식인 ++i, hap+=i는 아직 수행되지 않은 시점이죠.

 

 

[3]

java의 경우 '사용자 정의 함수'와 '구조체' 부분이 C와 조금 다릅니다.

그래도 C와 비교하면서 각 코드의 역할을 살펴보면 이해하는데 어려운 점은 없으니, 학습하시는 중 어려운부분이 있으면 질문주세요.

 

행복한 하루되세요 :)

  • 관리자
    2019-05-07 11:35:59

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

     

    먼저 for문의 3번째 식에 들어가는 ++i와 i++의 차이는 전혀 없습니다.

    전치수식(++i)과 후치수식(i++)으로 값이 달라지는 경우는 여러 인자가 들어가는 복합식에 포함되는 경우 뿐입니다.

    (ex :  sum = sum + i++   또는 sum = sum + ++i)

     

    for문의 진행

     

    for(; ; ) {

    ;

    }

     

    위의 for문이 3회 반복한다고 가정했을 때, 순서는

    1: , (조건 참),

    2: , (조건 참),

    3: , (조건 참),

    4: , (조건 거짓) <탈출>

    입니다.

    4회 때 증가식(3번)을 수행하고 조건식(2번)을 거짓으로 하고 빠져나가기 때문에 한 번 더 수행된다고 보여지는 것이죠.



    [1]

    120쪽의 문제 20번도 위의 것들을 고려하면서 풀어보세요.

    쉼표(,)로 구분되는 식은 별개의 식입니다.

    ++a를 수행하고 난 후, hap+=a를 수행하는 것이지 앞의 전치수식이 뒤의 식에 영향을 미치지는 않습니다.


     

    [2]

    위의 for문을 생각해보세요.

    첫 번째 회전이라고 함은 for문 내의 식(4번)이 수행되어야 하는 타이밍입니다.

    때문에 증가식인 ++i, hap+=i는 아직 수행되지 않은 시점이죠.

     

     

    [3]

    java의 경우 '사용자 정의 함수'와 '구조체' 부분이 C와 조금 다릅니다.

    그래도 C와 비교하면서 각 코드의 역할을 살펴보면 이해하는데 어려운 점은 없으니, 학습하시는 중 어려운부분이 있으면 질문주세요.

     

    행복한 하루되세요 :)

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