2010학년도 대학수학능력시험

직업탐구영역 ( 프로그래밍 )해설지

[정답]

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

[해설]

1.[출제의도] 객체지향 프로그래밍 언어의 종류에 대한 이해

[정답] ①

[해설]

객체지향언어는 실생활에서 나타나는 다양한 현상을 객체라는 단위로 모델화하여 프로그래밍하며 상속성, 다형성, 캡슐화의 특징을 갖고 있는 고급언어이다. 자바, C++ 언어 등이 객체지향 프로그래밍 언어에 속하며, <보기>에서 기계어는 번역과정이 필요 없는 저급언어이고, 포트란은 절차지향언어로 분류되는 고급언어이므로, 발문을 만족하는 객체지향언어는 자바와 C++이다.

2.[출제의도] 반복문의 의미 파악

[정답] ⑤

[해설]

반복문은 for문이나 do~while문을 이용하여, 주어지는 횟수에 따라 같은 일을 반복하는 명령문이다. 문제에서 주머니 (나)는 한 번 반복할 때 마다 구슬 5개를 받고 2개를 주므로 3개씩 증가한다. 이를 5회 반복하므로 5회 실행 후 주머니 (나)에 증가되는 구슬의 개수는 5*3=15이다. 초기상태로 15개의 구슬을 가지고 있었으므로 최종적으로 갖게 되는 구슬의 개수는 15+15=30개이다.

3.[출제의도] 재귀함수의 이해

[정답] ①

[해설]

함수 중 자신을 다시 호출하는 함수를 재귀함수라 하며, 같은 계산을 수치값을 변화시키며 반복시킬 수 있는 방법을 제공한다.

제시문의 함수 fn은 처음 전달되는 인수의 값은 더해지고 이후로 하나씩 감소하며 빼기, 더하기를 반복하다가 전달되는 인수가 1이 되면 종료하는 함수이다.

처음 전달되는 인수는 5이므로 계산은 5-4+3-2=2로서 출력값은 2가 되며, 계산 순서대로 나열하면 5-4+3-2가 된다.

4.[출제의도] 순서도의 흐름을 이해하고 있는지를 평가

[정답] ④

[해설]

순서도는 인터넷 사이트의 회원 여부와 나이를 이용하여 할인율을 적용한 후 요금을 출력하는 과정을 나타내고 있다. 순서도는 초기 요금(정상 요금)은 2,000원이며, 회원일 경우 10%, 60세를 초과하는 사람은 30%, 7세 미만의 어린이는 20%를 추가 할인하는 순서도이다.

그림에서 제공되는 입력정보는 회원이며 나이는 17세이기 때문에 회원 할인 10%를 적용받게 된다. 따라서 할인 요금은 2000*10/100=1800이 된다.

5. [출제의도] 변수선언 및 활용에 대한 이해

[정답] ②

[해설]

제시문에서 등번호는 정수형, 타율은 실수형, 나이는 정수형, 이름은 문자형, 수비위치는 문자형을 암시하고 있다.

답지 ①번은 등번호를 문자형으로 선언하였기 때문에 오답

답지 ②번은 타율을 실수형으로 선언하였고 사용의 예도 적절하므로 정답

답지 ③번은 나이를 참/거짓을 나타내는 Boolean으로 사용한 것도 적절하지 못하며,

C 언어에서는 Boolean, 비주얼베이직 언어에서는 Bool이라는 선언 명령이 없으므로

오답

답지 ④번은 이름을 정수형으로 선언하였으므로 오답

답지 ⑤번은 수비위치를 실수형으로 선언하였으므로 오답이다.

6. [출제의도] 함수의 이해

[정답] ④

[해설]

시계의 시침과 분침이 이루는 두 각을 구하기 위해서는 주어진 시간에 시침이 이동한 각도와 분침이 이동한 각도를 구하여 큰 각에서 작은 각을 빼서 하나의 각을 구하고, 다시 이것을 360에서 빼서 두 번째 각을 구할 수 있다. 이 두 개의 각 중 작은 것이 프로그램에 의해서 출력된다.

주어진 시간의 시에 대한 변수는 h, 분에 대한 변수는 m이고 시침이 이동하는 각도에 대한 변수는 hag, 분침이 이동하는 각도에 대한 변수는 mag로 선언하였고, 시침은 한 시간에 30도, 1분에 0.5도를 이동하므로 시침의 이동 각도 hag=h*30+m*0.5가 되며, 분침의 이동각도는 1분에 6도이므로 mag=m*6이 된다.

시침과 분침의 각의 차(ag)를 구하여 함수 fn에 인수로 전달되며, 함수 fn은 먼저 전달되는 인수가 음수이면 양수로 바꾼 후, 180보다 큰 각(즉, 두 각 중 큰 각)일 경우 작은 각을 구하기 위해서 360에서 전달되는 인수를 빼주도록 되어 있다.

7.[출제의도] 제어문의 활용

[정답] ③

정․오답 해설

제시문에서는 4 개의 작업과 중요도가 제시되고, 중요도와 이동해야 할 거리를 이용하여 작업 우선도를 계산하여 로봇이 작업을 수행하는 순서를 물어보고 있다. 학생들이 인지해야 할 사항은 한 작업이 완료되면 그 위치에서 이동거리 S를 산정하여 작업우선도를 다시 계산해야 한다는 것이다.

로봇이 처음 계산하는 작업우선도는 A:15, B:18, C:12, D:33이므로 가장 먼저 수행할 작업은 C이고, C의 작업을 완료한 후 작업우선도는 A:18, B:15, D:24이므로 두 번째 수행할 작업은 B이며 다음의 작업우선도는 A:15, D:27이므로 세 번째 수행할 작업은 A이고 마지막은 D이다.

8.[출제의도] 입력되는 값을 분석하여 명령문을 파악하고, 데이터를 명령문에 의해서 계산하여 처리할 수 있는 능력을 평가

[정답] ③

[해설]

프로그램에서는 입력되는 데이터를 100으로 나누어 얻어지는 몫과 나머지를 이용하여 계산식과 데이터를 찾아내도록 되어 있다.(몫은 계산식, 나머지는 데이터)

switch문(Select Case문)에 의해서 몫이 1일 경우 덧셈을, 2일 경우 뺄셈을, 3일 경우 곱셈을 하고 그 외의 숫자가 입력되면 프로그램을 종료하도록 되어 있다.

입력되는 106은 6을 더하라는 뜻이고, 302는 2를 곱하라는 뜻이고, 205는 5를 빼라는 뜻이므로 6*2-5=7이고 마지막 입력되는 400에 의하여 프로그램이 종료되므로 출력되는 값은 7이다.

9.[출제의도] 순서도의 활용

[정답] ③

[해설]

입력되는 수를 2로 계속 나누며 자리수에 따라 10의 배수를 곱하여 실제 수는 10진수이지만 출력 형태가 2진수로 나타나는 순서도이다.

입력되는 값은 11이므로 순서도를 따라 가게 되면 이진수의 형태인 1011이 출력되게 된다.

10. [출제의도]프로그래밍의 이해

[정답] ①

[해설]

본 문항은 주어진 데이터에서 같은 값의 개수를 찾아내는 프로그램으로, 성적 처리시 응답자 통계를 산출하는 데 사용되는 프로그램을 이해하는 능력을 평가하는 문항이다.

프로그램은 학생들의 응답된 답지번호가 배열 데이터로 주어져 있고, for(For)문을 이용하여 각 답지의 개수를 더한 후 그 수 만큼 차례로 *를 출력하게 된다.

데이터가 저장된 배열을 보면 1이 두 개, 2가 한 개, 3이 한 개, 4가 한 개이므로 출력 결과는

**

*

*

*

와 같다.

11.[출제의도] 논리연산자의 활용

[정답]⑤

[해설]

본 문항은 학생들이 실 생활의 현상을 논리 연산자로 표현할 수 있는 능력을 평가하는 것으로, 기름탱크와 두 주유소가 연결되어 있고, 밸브가 3 개 있을 때, 한 주유소로만 기름이 공급되는 조건을 찾아내는 문제이다.

두 주유소 중 어느 하나라도 공급이 되기 위해서는 밸브A는 반드시 열려있어야(1) 하고, 주유소 (가)에 기름이 공급되기 위해서는 밸브B는 반드시 열려있어야(1) 한다. 하지만 주유소 (나)에는 기름이 공급되지 않아야 하므로 밸브C는 닫혀있어야(0) 한다.

진리표에서 Y가 1이 되는 조건은 ⑤번 밖에 없으므로 정답은 ⑤번이다.

A	B	C	Y
0	0	0	0
0	0	1	0
0	1	0	0
0	1	1	0
1	0	0	0
1	0	1	0
1	1	0	1
1	1	1	0

[진리표]

12.[출제의도] 삽입정렬의 의미 파악

[정답] ③

[해설]

본 문항은 학생들이 삽입정렬의 의미를 알고 적용할 수 있는가를 평가하는 문항이다.

프로그램은 주어진 데이터를 입력받는 수와 가까운 순서대로 정렬하는 것으로, 입력되는 값에 따라 정렬을 오름차순이나 내림차순 등 여러 가지 형태로 정렬할 수 있다.

프로그램은 어떤 수가 입력되면 먼저 입력되는 수와 각 데이터와의 차의 절대값을 구하여 d() 배열에 차례로 저장한 다음 이것을 삽입정렬을 이용하여 원래의 데이터 c()를 정렬한 다음 출력하게 된다.

발문에서 입력값은 5이므로 5와의 차의 절대값이 가장 작은 순서로, 그리고 절대값이 같을 경우는 본래 데이터의 순서대로 출력되므로 그 결과는 5 4 6 1 9가 된다.

13.[출제의도] 검증코드의 활용

[정답] ⑤

[해설]

본 문항은 배열을 이용하여 알고리즘을 수행한 후 검증 코드를 만들 수 있는가를 평가하는 문항이다.

배열 요소의 값들 중 첨자가 홀수인 값들은 3을 곱하여 더하고 0이거나 짝수인 값들은 그냥 더하여 변수 S에 저장한다.

변수 S에 저장된 값과 P의 합이 10의 배수가 되도록 P값을 만든 후 배열의 마지막 요소에 저장하

배열 요소의 값들을 알고리즘에 따라 수행하면 배열의 첨자가 0이거나 짝수이면 배열의 값을 변수 S에 더하고 홀수이면 3을 곱하여 더해 S를 구한다. 이 S를 배열의 마지막 요소의 값 즉, 검증 코드값은 9가 된다.

14.[출제의도] 최대공약수 구하기

[정답] ③

[해설]

본 문항은 학생들이 기본 문법을 이해하고 있는가를 최대공약수 구하는 알고리즘을 이용해서 평가하는 문항이다.

학생들의 이해를 돕기 위해 두 수가 프로그램에 주어져 있으며, 이를 함수의 인수로 전달한 후 치환 알고리즘을 이용하여 최대공약수를 찾게 된다.

함수의 인수와 if(IF)문, do~while(Do~Loop While)문을 이해하고 있는가를 평가하는 것이 목적이다.

24와 36의 최대공약수는 12이므로 프로그램은 12를 출력하게 된다.

15.[출제의도] 기초연산자의 활용

[정답] ①

[해설]

본 문항은 프로그래밍의 기초가 되는 연산자를 이해하고 있는가를 평가하는 문항이다. 특히 많이 사용되는 연산자로 몫을 구하는 연산자(C언어:/, 비주얼베이직언어:\)와 나머지를 구하는 연산자(C언어:%, 비주얼베이직언어:Mod)를 제대로 이해하고 있는지를 묻고 있다.

발문은 낱개의 사탕을 10개씩의 묶음으로 묶고, 묶이지 않는 나머지 잔여분이 몇 개인지를 계산하는 연산자를 묻고 있으므로, 묶음의 개수는 몫, 잔여분은 나머지가 된다.

16.[출제의도] 최대값과 최소값 구하기

[정답] ⑤

[해설]

본 문항은 배열에 저장된 값들의 최대값과 최소값을 구하고, 그 위치의 첨자를 찾아내는 것으로서 학생들이 배열을 이해하고 이용할 수 있는 능력을 평가하는 문항이다.

프로그램에는 배열 x()에 데이터가 주어져 있고, a는 최소값, c는 최대값을 저장하는 변수로 사용되고, b는 최소값의 위치, d는 최대값의 위치를 저장하는 변수로 사용되었다.

for(For)문을 이용하여 7개의 데이터를 비교하여 최소값과 그 위치, 최대값과 그 위치를 계산하게 된다.

데이터에서 최소값은 3이고 그 위치는 2, 최대값은 9이고 그 위치는 5이다.

.

17.[출제의도] 프로그래밍 단계에 대한 이해

[정답] ②

[해설]

본 문항은 학생들이 프로그래밍 단계를 이해하고 있는가를 평가하는 문항이다.

발문의 의미는 문제 하나하나에 대한 답안을 보고 정답인지 채점하여 그 배점을 합산한 값을 찾는 것이다.

첫 번째 문제는 옳은 내용이나 답안이 X이므로 틀렸고,

두 번째 문제는 옳지 않은 내용이고 답안이 X이므로 맞은 답안이므로 2점 추가,

세 번째 문제는 옳은 내용이고 답안이 O이므로 맞은 답안이어서 4점 추가,

네 번째 문제는 옳지 않은 내용이지만 답안이 O이므로 틀렸기 때문에 맞은 문제의 배점

을 합산하면 6이다.

18.[출제의도] 프로그래밍의 이해

[정답] ⑤

[해설]

본 문항은 실제 프로그램에 활용된 기본문법을 이해하고 해독하는 능력을 평가한다.

발문에서는 다중 for 문(For 문), if 문(If 문), 연산자계산 순서를 알고, 프로그램 전체구조와 의도를 파악하고 있는지를 종합적으로 묻고 있다.

다중문의 반복 변수 a와 b 를 배열의 첨자 (a,b)와 같이 배열구조로 설명하면,

a=1의 경우에 b=1,2,3 은  (1,1), (1,2), (1,3)

a=2의 경우에   b=2,3 은       (2,2), (2,3)

a=3의 경우에     b=3 은            (3,3)  으로 대응된다.

if 문(If 문)의 연산 - 덧셈 연산(a+b)를 먼저 수행하고, 비교 연산을 하는 조건식 -은 6번 실행한다. 따라서 보기의 ㄷ항은 맞는다.

그리고, 조건에 맞는 경우는 (1,1), (1,2) (2,3), (3,3)의 네 경우로 (가)의 sum=sum+b 는 네 번 실행된다. 그러므로 보기의 ㄴ항도 맞는다.

최종 계산된 sum=1+2+3+3=9 가 출력되므로 보기의 ㄱ항도 맞는다.

19.[출제의도] 프로그래밍의 분석 및 이해

[정답]④

[해설]

본 문항은 이진수 변환 알고리즘을 이용한 프로그램을 실생활에 응용한 시스템에 대하여 이해하고 이와 비슷한 시스템의 개발 원리를 알고 있는지를 판단하는 문항이다.

제시문에서는 여섯 학생이 서 있는 테이블 위에 응답버튼이 있고, 아나운서의 코멘트에 따라 버튼을 눌러 응답하고, 이렇게 응답된 학생들의 고유번호가 합산되어 프로그램에 입력되면 이진수 변환 알고리즘에 의해 정답자의 테이블에 해당하는 문자가 출력되는 내용을 알려 준다.

<보기>의 ㄱ : 프로그램의 (가) 부분은 입력값과 상관없이 for(For)문에 의하여 6번이

실행되므로 틀린 말이다.

<보기>의 ㄴ : 여섯 학생의 고유번호는 20~25, 즉 1~32이므로 모두 더하면 63으로 맞는

말이다.

<보기>의 ㄷ : 테이블 A의 학생의 고유번호는 1, 즉 홀수이고 나머지는 모두 짝수이므로

A의 학생이 버튼을 눌렀다면 하나인 홀수가 더해지므로 그 입력값은 항상

홀수가 되므로 맞는 말이다.

20.[출제의도] 프로그래밍의 분석 및 이해

[정답] ②

[해설]

19번 문항과 세트 문항으로서 시스템의 설명은 19번과 같다.

입력값(n)이 25일 때, 프로그램에 의하여 ADE가 출력된다.

입력값은 각 테이블에 해당하는 고유번호, A(1), D(8), E(16)의 합과 같다.