프로그래밍의 기초(의사 코드 트레이스)
배열 a의 모든 요소의 합계를 구할 생각으로 다음 프로그램을 작성했다. 배열의 인덱스는 1부터 시작한다. 실행한 후의 s의 값은?
integer array: a ← {4, 7, 1, 9, 3}
integer: s ← 0
for (i from 1 to length(a) − 1 step 1)
s ← s + a[i]
endfor
- A20
- B21
- C24
정답과 해설 보기
정답: B. 21
length(a)는 5이므로 i는 1부터 4까지 움직이고, s = 4 + 7 + 1 + 9 = 21이 됩니다. 마지막 요소 a[5] = 3이 더해지지 않으므로, 올바른 합계 24보다 3 작아집니다. 인덱스가 0부터 시작하는 언어에서의 작성법(0부터 요소 수 − 1까지)을 1부터 시작하는 배열에 그대로 적용하면, 이처럼 하나 어긋나는 오류(오프 바이 원 오류)가 일어납니다.