프로그래밍언어론

2006년 시행 행정고등고시 (기술직) 제2차시험

계산기 사용가능 여부	불가능

응시번호 :                  성명 :

					프로그래밍언어론				2

제 1 문.	객체지향 언어에 대한 다음 물음에 답하시오.                      (총 20점)

1)	상속(inheritance)이란 무엇인지 설명하고, 이를 통해 얻을 수 있는 장점을 설명하시오. (5점)

2)	C++와 유사한 객체지향 언어로 작성된 다음 프로그램에서 문장 ①의 수행이 완료되었을 때의 출력 결과를 쓰고, 그 이유를 설명하시오. (5점)

class A {

void f( ) { printf (“2＼n”) ; }

void g( ) { f( ) ; }

}

class B :  public A { // B는 A를 상속함

void f( ) { printf (“3＼n”) ; }

}

int main( ) {

B b ; // B의 instance 생성

…

b.g( ) ; ← ①

…

}

3) 객체지향 언어에서 서브타입 폴리모피즘(subtype polymorphism)을 설명하고, 이 폴리모피즘의 구현을 위하여 method의 동적 바인딩(dynamic binding)이 필요한 이유를 설명하시오. (10점)

제 2 문.	다음 문법 G를 보고 아래 물음에 답하시오.                       (총 15점)

G ＝ < {E}, {0,+,-,(,)}, P, E >

여기서 P는

E :: ＝ 0 □ E + E □ E - E □ ( E )

1)	문법 G에서 다음 문장의 좌우선유도과정(leftmost derivation)을 보이시오. (5점)

0 + 0 - 0

2)	문법 G가 모호함(ambiguous)을 증명하시오. (5점)

3)	다음 조건을 만족하면서 모호하지 않도록 문법을 수정하시오.(단, 생성규칙은 6개를 넘지 않아야 한다) (5점)

	<조 건>
조건 1 : +가 -보다 높은 우선순위를 가진다. 조건 2 : -는 오른쪽부터 먼저 결합한다. 조건 3 : +는 왼쪽부터 먼저 결합한다.

제 3 문.	바인딩에 관한 다음 물음에 답하시오.                             (총 10점)

1)	정적 변수(static variable)만이 제공되는 언어에서 재귀호출(recursion)이 지원되지 못하는 이유를 서술하시오. (5점)

2)	정적  바인딩(static  binding)과  동적  바인딩(dynamic  binding)의  핵심되는 장․단점을 하나씩 드시오. (5점)

제 4 문.	Pascal, C, C++ 같은 언어는 포인터변수(pointer variable)와 동적 메모리할당(dynamic memory allocation)을 지원한다. 메모리와 관련된 포인터변수의 대표적인 문제점 2가지를 설명하시오.                                 (5점)

중앙인사위원회 출제관리과장