프로그래밍의 기초(의사 코드 트레이스)
다음 프로그램의 and는 왼쪽 식이 false일 때는 오른쪽 식을 평가하지 않는다(단락 평가). cnt는 전역 변수이다. 실행한 후의 cnt의 값은?
integer: cnt ← 0
○boolean: even(integer: k)
cnt ← cnt + 1
return k mod 2 = 0
for (i from 1 to 5 step 1)
if (i > 3 and even(i))
output i
endif
endfor
- A1
- B2
- C5
정답과 해설 보기
정답: B. 2
i = 1~3에서는 왼쪽의 i > 3이 false이므로 오른쪽의 even(i)는 호출되지 않습니다. i = 4와 i = 5에서는 i > 3이 true이므로 even(i)가 호출되어 cnt는 2가 됩니다. 출력되는 것은 조건 전체가 true가 되는 i = 4뿐입니다. 양쪽을 반드시 평가하는 방식이라면 even은 5회 호출되어 cnt = 5가 됩니다.