[2025. 중등임용 정보ㆍ컴퓨터B] 프로그램 검사를 위한 순서도

프로그램 검사를 위한 순서도

정답

㉠ 0, ㉡의 조건: \(a \ge 5\), 추가 조건식 및 값: \(b>0\), 참

출제 의도

순서도에 따른 변수 갱신 과정을 추적하여 주어진 출력이 나오도록 입력 값을 결정하고, 분기 테스트와 조건 테스트의 차이를 이해하여 부족한 조건식의 참/거짓 검증을 보완하는 테스트 데이터를 설계할 수 있는지를 평가한다.

풀이 과정

순서도는 (1) 입력 a, b 후 c를 3으로 초기화하고, (2) 조건 \(a<5\) 또는 \(b>0\)이 참이면 \(c=b-a\)로 갱신하며, (3) 조건 \(a=3\) 그리고 \(c<2\)가 참이면 \(c=c+1\)을 수행한 뒤 c를 출력한다.

테스트 케이스 1에서 \(a=3\), \(c\)의 최종 출력이 \(-2\)이므로 첫 번째 조건은 \(a<5\) 때문에 참이어서 \(c=b-a=b-3\)이 된다. 이어서 두 번째 조건에서 \(a=3\)은 참이므로 \(c<2\)도 참이어야 \(c\)가 1 증가한다.

$$ \text{최종 }c=(b-3)+1=b-2=-2 \Rightarrow b=0 $$

따라서 ㉠은 0이다.

테스트 케이스 2에서 \(b=-1\)이고 출력 \(c=3\)이 되려면, 첫 번째 조건이 거짓이어서 \(c\)가 3에서 바뀌지 않아야 한다. \(a<5 \lor b>0\)가 거짓이려면 \(a<5\)가 거짓이고 \(b>0\)도 거짓이어야 하므로 \(a\ge 5\)이며 \(b\le 0\)이어야 한다. 이미 \(b=-1\)이므로 \(a\ge 5\)이면 된다.

$$ a<5\ \text{거짓},\ b>0\ \text{거짓} \Rightarrow a\ge 5 $$

따라서 ㉡에 해당하는 조건은 \(a \ge 5\)이다.

이제 테스트 케이스 1, 2로 분기 테스트는 만족하지만, 조건 테스트에서 첫 번째 분기점의 조건식 \(a<5\)와 \(b>0\) 중 \(b>0\)은 두 케이스 모두 거짓만 검사된다. 조건 테스트를 만족하려면 \(b>0\)이 참인 경우를 추가로 한 번 검사해야 한다.

$$ \text{추가로 필요한 조건식: } b>0,\quad \text{테스트해야 할 값: 참} $$

<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>