2008 대수능 11월 15일 본수능

직업탐구영역 프로그래밍 과목 해설지

[정답]

문 항	1	2	3	4	5	6	7	8	9	10
정 답	③	⑤	④	①	②	③	②	③	①	④
문 항	11	12	13	14	15	16	17	18	19	20
정 답	③	④	④	⑤	③	②	⑤	④	①	②

[해설]

1. [정 답] ③

[해 설]

프로그램의 오류를 수정하는 작업을 디버깅이라 한다. 따라서 질문 1의 답변은 맞다. 일반적으로 프로그램 작성이 편리한 언어는 고급 언어이다. 어셈블리어는 저급 언어에 속하므로 질문 2의 답변은 틀리다. 질문 3의 어떤 사실이나 개념의 값 또는 값들의 집합은 데이터인데 순서도로 답했으므로 틀리다. 질문 4의 컴퓨터에서 실행되는 일련의 명령들의 집합을 프로그램이라 한다. 따라서 이 답변은 맞다. 그러므로 1과 4는 맞고 2와 3이 틀리므로 8명을 구제한다.

2. [정 답] ⑤

[해 설]

답변 내용을 보면

길동 : 언어를 선정할 때에는 업무의 성격에 적합한 언어를 선택해야 한다. 따라서 개발자가 선호하는 언어를 우선해야 한다는 것은 틀리다.

영수 : 대표적인 객체지향 언어로는 기계어가 있다고 했는데 기계어가 아니라 자바, C++ 등이 대표적인 객체지향 언어이다. 기계어는 저급 언어이다.

나머지 순이, 영희, 철수의 답변은 옳다.

3. [정 답] ④

[해 설]

프로그램 개발 과정은 다음과 같이 8단계로 나눌 수 있다.

따라서 (가)에는 입출력 설계에 해당하는 부분이, (나)에는 프로그램 입력(코딩) 부분이, (다)에는 모의 테스트(모의 실행) 부분이 들어가면 된다. <보기>의 ㄱ은 코딩 단계이고, ㄴ은 모의 테스트 단계이며, ㄷ은 입출력 설계 단계이다.

4. [정 답] ①

[해 설]

단계1은 1구역이므로 4분, 단계2는 3구역이므로 공기 사용량이 3배이므로 15분, 단계3은 2구역이므로 2*x분, 단계4는 1구역이므로 5분이다. 이들을 다 합한 것이 40분이므로

4+15+2*x+5=40

24+2*x=40

2*x=16

x=8

따라서 단계3에서 최대 관찰 시간은 8분이다.

5. [정 답] ②

[해 설]

상품명과 구매자명은 문자열로, 단가는 정수형으로, 수수료율과 할인율은 실수형으로 변수를 선언하면 된다.

C 언어에서 문자열은 문자 배열을 선언하여 사용한다.

각 언어의 자료형은 다음과 같다.

자료형	C 언어	비주얼 베이직
문자	char	String
정수	int	Integer
실수	float	Single

6. [정 답] ③

[해 설]

[A]에서 저급 언어에 해당되는 것은 [기계 중심적인 언어], [0과 1로 구성된 언어]가 해당되므로 변수 X에는 2가 저장된다.

[B]에서 고급 언어에 해당되는 것은 [자바], [파스칼], [포트란], [비주얼 베이직]이 해당되므로 변수 Y에는 4가 저장된다.

7. [정 답] ②

[해 설]

첫째 [X>=12]와 [Y<=20000]는 논리곱이므로 두 조건을 동시에 만족해야 한다. 여기에 속하는 학생은 길동이다. 둘째 [Z<=3]에 해당되는 학생은 철수이다. 첫째와 둘째는 논리합이므로 둘 중 어느 곳만 만족해도 되므로 길동, 철수가 해당된다.

8. [정 답] ③

[해 설]

[b % 3]은 b를 3으로 나눈 나머지이므로 0, 1, 2가 나올 수 있다. 여기에 1을 더한 [b%3+1]은 1, 2, 3이 출력된다. 그런데 문제에서 주어진 코드를 보면 b=1일 때 2로, b=2일 때 3으로, b=3일 때 1로 각각 저장되므로 b=b%3+1(비주얼 베이직인 경우 b=b Mod 3+1)이 된다.

9. [정 답] ①

[해 설]

코드에서 주어진 변수 bi는 총점에 프로그래밍 과목 점수를 1000으로 나눈 값이 저장된다. 따라서 이 값을 학생별로 저장하면 다음과 같다.

이름	bi	석차
길동	270+0.090	1
순이	265+0.095	4
영수	270+0.080	2
선영	265+0.100	3
철수	265+0.080	5

10. [정 답] ④

[해 설]

각 변수의 변화 과정을 보면 다음과 같다.

b	s	x	a[b]
1	8	30	40	x<a[b]의 조건을 만족하므로 b=b*2
2			20	x<a[b]의 조건을 만족하지 않으므로 b=b*2+1
5			30	x=a[b]의 조건을 만족하므로 b를 출력한다.

11. [정 답] ③

[해 설]

조건 (b<s)가 참인 동안 배열의 요소값 a[b]와 찾고자하는 값 x와 같은 것이 없으면 -1을 반환하므로 ㄱ은 옳다. 또한 검색에 성공하면 b값을 반환하므로 b는 배열의 첨자이다. 따라서 ㄹ도 옳다. ㄴ의 변수 b는 배열에 저장된 값이 아니라 첨자이며, ㄷ에서 배열 a는 정렬과는 관계없다.

12. [정 답] ④

[해 설]

좌석은 2차원 배열로 그 위치가 표시된다.

3	5	7
9	11	13

따라서 좌석 A에 해당되는 번호는 7이다.

13. [정 답] ④

[해 설]

주차 시간 T가 360이므로 조건 [T<= 60]와 [T<5*60]은 아니오로 이동한다. 그러면 변수 M=10000이 되고 [T=T-24*60]에서 T=-1080이 되므로 조건 [T<= 0]의 조건을 만족하므로 M을 출력한다. 따라서 출력되는 M은 10000이다.

14. [정 답] ⑤

[해 설]

배열 x의 요소값이 1인 첨자에 해당되는 배열 y의 요소값을 배열 y[7-a]와 교환한다. 따라서 배열 x의 요소값이 1인 첨자는 1, 2이므로 배열 y의 요소값 2, 3과 7, 6이 교환된다.

그러므로 배열 요소값 y[1]+y[2]의 값은 13이다.

15. [정 답] ③

[해 설]

제어 변수 a의 값은 1, 4, 7, 10, 13까지 변화하면서 수열의 합을 저장하는 변수 b에 더해지므로 출력값은 1+1/4+1/7+1/10+1/13이 된다.

16. [정 답] ②

[해 설]

주어진 프로그램은 버블 정렬이다.

정렬 과정을 보면 다음과 같다.

a=0	초기:	23	15	17	35	77
	b=0 :	15	23	17	35	77	1번 교환
	b=1 :	15	17	23	35	77	2번 교환
	b=2 :	15	17	23	35	77
	b=3 :	15	17	23	35	77
a=1부터는 이미 정렬이 완료되어 자료 교환이 없음

17. [정 답] ⑤

[해 설]

print1 함수를 호출하면 첨자가 4부터 0까지 1씩 줄어들면서 배열 a에 들어 있는 문자들이 출력된다. 즉 EDCBA가 출력된다.

print2 함수를 호출하면 첨자가 0, 2, 4로 변화면서 배열 a에 들어 있는 문자들이 출력된다. 즉 ACE가 출력된다. 따라서 전체 출력 결과를 보면 다음과 같다.

EDCBAACE

18. [정 답] ④

[해 설]

단계 1 : 오름차순으로 정렬하면 10 11 12 13 15 18 19

단계 2 : 자료의 개수는 7

단계 3 : 자료의 개수가 홀수 이므로 (7+1)/2=4

따라서 4번째 값인 13이 출력된다.

19. [정 답] ①

[해 설]

a	b	c	su
1	1	0	15
	2	2	7	c0[2]의 요소값 ‘G' 출력
2	1	1	3
	2	3	1	c0[3]의 요소값 ‘Y' 출력
3	1	1	0
	2	1	0	c0[1]의 요소값 ‘R' 출력

20. [정 답] ②

[해 설]

입력값 30일 때 출력 결과가 GYR이므로 이를 출석점검 시스템 그림에서 보면 임원 좌석 [B(2) C(4) D(8) E(16)]임을 알 수 있다. 따라서 R인 경우 왼쪽, G인 경우 오른쪽에 해당되므로 R, G, R인 경우 A, D, E에 해당된다.