제목 | p43쪽 순열3 말이에요~ | ||
---|---|---|---|
자격증 | 정보처리 기사 실기 | ||
도서/쪽 페이지 | / 쪽 | ||
등록일 | 2007-11-09 | 조회 | 693 |
작성자 | - (-) | ||
p43쪽
(-1)x2(-3)x4x(-5)x.........x100의 합계에서
디버깅을 하는데 답이 자꾸 안나와서요 ㅠㅠ
디버깅표
i j MOD(i,2) MOD(i,2)=0 i <5출력
0 1 1 No yes
1 -1 0 Yes yes
첨에 i를 0으로 초기화 시키고 j를 초기화 시켜서, i=i+1에 0을 넣으면 0+1값을 i에 저장시키죠?
그러면 일단 i에 1이 저장되고요~~~~!그 다음엔 MOD(i,2)=0을 판단해야하는데,
일단 짝수인지 홀수인지 알기위해서 나머지를 구해보는 작업을 디버깅에서 해보잖아요
i에 저장된게 1이니깐 MOD(1,2)를해보면 나머지가 0이 아니니깐 NO로 가죠?
그럼 J=Jxix(-1)를 처리해야하는데 j값이 원래 1로 초기화 되있으니깐
J=1x1x(-1)를 해서 j에 -1이 저장되구요
다음에 i<5보다 작으니깐 yes가 되서 다시 올라가서
이번엔 i=i+1에 0이아닌 1을 넣고 또 처리를 하잖아요.
그러면 i에 2가 저장되구요 또 홀수인지 짝수인지 판별하는 mod(i,2)를거치면 2나누기 2는 0이니깐
짝수이므로
yes에가서 j=jxi를 실행하죠!? 그런데 아까 기억하던 j값이 -1이니깐 j=jxi는 -1x2니깐 -2가 아닌가요??????
디버깅할때 보면 i가 1일때 j=-2가 아닌가요????
답안에 보면 -1이라고 나와있는데 ㅠ_ㅠ...이해가 안되요,..도와주세요
|
|||
첨부파일 |
|
제목 | 답변이 올라오기전에.. |
---|---|
등록일 | 2007-11-09 |
제가 지금 책이없어서 디버깅표를 못봐서 확실한 답변을 해드릴 순 없지만요,
i가 1일 때 j=-1이 맞을거 같군요. 책에 있는 디버깅표를 보시면, 자기가 직접한
디버깅표가 아니기 때문에 헤깔릴 수 밖에 없습니다. 그 디버깅표에 대한 설명이
없다면 처음 접하는 사람에겐 더 헤깔리겠죠.
일단 위에 내용만 갖고 설명을하자면, 책에 디버깅표에서 i=1일 때 j=-1로 표시가
되어있는 것은 순서에 의한거지, 결과값은 아니라는 것입니다.
아마도 디버깅표에서 j는 1 -1 -2 6 24 -100... 이런식으로 나왔을거 같습니다.
j가 왜 이렇게 나오냐하면, j의 변수 변화이기 때문입니다.
즉, j는 초기값 1부터 시작해서 계산을할 때마다 -1 -2 6 24 이런식으로 변해간다는걸
보여주는 것이지, i가 들어간 뒤 모든 계산이 끝난다음 j=jxi 이 계산 후에 나온 값이
아니라는 것이죠. i가 1 일때 j는 -1이라는 값을 갖고 있다는 것을 보여주는 것입니다.
님이 말씀 하신 -2는 그다음 i=2일 때 j=-2라고 나와 있을 것입니다.
왜냐면 아래 계산이 모두 끝난 뒤 다시 다음 계산을 위해 올라오면 j=-2값이 들어가 있는
상태로 변하기 때문이죠.
이건 디버깅을 하는 사람의 차이입니다. 저는 시나공 디버깅표를 보면서, 디버깅하는 방법만
대충 알고 난 뒤로는 제 스스로 디버깅표를 만들어서 계산값을 구해 봅니다.
저도 첨엔 님이랑 똑같은 문제로 고민했었거든요. 결국 답은 내가 만든 디버깅표가
나에게 맞는 디버깅표라는 거였죠.
아 물론 j만 그런건 아닙니다. 뒤로 넘어갈수록 j와 같이 변수값이 달리 들어가는게
많을 것입니다.
쉽게 해보려면 i j J라는 3가지 변수를 써서 디버깅을 해보세요.
그럼 쉽게 되지요. i=1 일 때 j=-1 이고 J=2가 되지 않겠어요?ㅎㅎ
여기서 소문자 j는 1부터 계속 변하는 변수라면 대문자 J는 모든 계산이 끝난 뒤의 값이죠.
그럼 대문자 J는 -1부터 값이 변하겠죠~? i=1 일때 J=-1 -2 6 24 이렇게요.
도움이 되셨으려나요?
|
|
첨부파일 |
|