반복문 k 를볼때 k-1 ~ 1까지 1감소하는 문장 안에서.. k는 항상 0이되어야 빠져나가는것이 아닌가요?
1이될때는 안에문장실행시키고..-1해주면서 0이되면 나가는걸로 알고있는데..
문제풀이 디버깅은 어떤건 k값을 0까지 보여주고 안보여주는 것들이 보이네요..
그리고 167page 모의고사 6회 순서도에서 B배열크기을 M 만약 1차배열 크기가 5라고하면
n2는 5가됩니다.
list1 과 list2의 값도 배열의 크기인 5를 갖고 C(n3)ㅇ의 값도 5가됩니다.
n1=n1+1 여기서n1은 그럼 6이되는건가요?
배열마다 각 항들의 순서를 비교해야하는데. 전체적인 배열의 크기만 갖고 비교 증가되니 디버깅하는데
어려움이 있네요..
list1=99999 이렇게하는이유도 알고싶네요
안녕하세요.
1)
140쪽 전문가의 조언에 언급된 내용처럼
반복문의 반복 변수가 반복문을 빠져나온 후 사용되는 경우에 대한 설명입니다.
반복문은 증가치가 적용된 후에 반복문 종료 기준값과 비교합니다.
일반적으로 반복문의 반복 변수가 반복문 이후에는 사용되는 경우가 거의 없어 반복문의 반복 변수을 디버깅할 때는 약식으로 종료 기준값까지만 디버깅을 하는데, 원칙적으로는 앞서 설명했듯이 증가치가 적용된 후 반복문 종료 기준값과 비교합니다.
그래서 반복문을 빠져나올때는 증가치가 마지막에 한 번 더 적용된 후 반복문을 빠져나옵니다.
예를 들어
i가 3이라면
반복문이
K = i-1, 1, -1
로 진행된다면
K는 i-1, 즉 2로 반복문을 1회 수행합니다.
그런 다음 증가치 -1을 적용하여 K가 1이 된 후 종료 기준값인 1과 비교합니다 1보다 작지 않으므로 반복문을 2회 수행합니다.
그런 다음 증가치 -1을 적용하여 K가 0이 된 후 종료 기준값인 1과 비교합니다. 1보다 작으므로 반복문을 빠져나옵니다.
결국 반복문 수행은 2번을 수행하지만 반복 변수의 값은 0이 된 상태로 빠져나오게 되는 것이죠.
2)
N1 = N1 + 1은 List1 < List2가 Yes일 경우만 수행되는 것으로
M이 5라면
A 배열에 값이 B 배열의 값보다 작은 개수만큼만 반복됩니다.
A 1 3 5 7 9
B 2 4 6 8 10
이라면 5번 수행이 되어 N1은 5가 될 것입니다.
3)
N1이 N보다 크고 lSW가 0인 경우는 A 배열의 처리가 끝난 경우로 이후는 B 배열의 값을 C 배열에 옮겨기만 하면 됩니다.
그래서 List1 < List2에서 계속 No가 되도록 하기 위해 List1에 입력될 수 있는 가장 큰 값인 999999를 저장한 것입니다.
오늘도 즐거운 하루 되세요.
오늘도 즐거운 하루 되세요.
-
*2016-04-11 09:50:59
안녕하세요.
1)
140쪽 전문가의 조언에 언급된 내용처럼
반복문의 반복 변수가 반복문을 빠져나온 후 사용되는 경우에 대한 설명입니다.
반복문은 증가치가 적용된 후에 반복문 종료 기준값과 비교합니다.
일반적으로 반복문의 반복 변수가 반복문 이후에는 사용되는 경우가 거의 없어 반복문의 반복 변수을 디버깅할 때는 약식으로 종료 기준값까지만 디버깅을 하는데, 원칙적으로는 앞서 설명했듯이 증가치가 적용된 후 반복문 종료 기준값과 비교합니다.
그래서 반복문을 빠져나올때는 증가치가 마지막에 한 번 더 적용된 후 반복문을 빠져나옵니다.
예를 들어
i가 3이라면
반복문이
K = i-1, 1, -1
로 진행된다면
K는 i-1, 즉 2로 반복문을 1회 수행합니다.
그런 다음 증가치 -1을 적용하여 K가 1이 된 후 종료 기준값인 1과 비교합니다 1보다 작지 않으므로 반복문을 2회 수행합니다.
그런 다음 증가치 -1을 적용하여 K가 0이 된 후 종료 기준값인 1과 비교합니다. 1보다 작으므로 반복문을 빠져나옵니다.
결국 반복문 수행은 2번을 수행하지만 반복 변수의 값은 0이 된 상태로 빠져나오게 되는 것이죠.
2)
N1 = N1 + 1은 List1 < List2가 Yes일 경우만 수행되는 것으로
M이 5라면
A 배열에 값이 B 배열의 값보다 작은 개수만큼만 반복됩니다.
A 1 3 5 7 9
B 2 4 6 8 10
이라면 5번 수행이 되어 N1은 5가 될 것입니다.
3)
N1이 N보다 크고 lSW가 0인 경우는 A 배열의 처리가 끝난 경우로 이후는 B 배열의 값을 C 배열에 옮겨기만 하면 됩니다.
그래서 List1 < List2에서 계속 No가 되도록 하기 위해 List1에 입력될 수 있는 가장 큰 값인 999999를 저장한 것입니다.
오늘도 즐거운 하루 되세요.
오늘도 즐거운 하루 되세요.