1. True, False 판단 문제 출제
a) c언어에서, switch문의 조건 넣는 부분에 모든 ordinal type이 들어갈 수 있는가?
b) 일반적으로 서브프로그램의 파라메터 전달시 참조유형으로 전달해야하는가를 묻는 문제.
c) C언어가 독립 컴파일을 지원하는지 유무.
d) if에서 Dijkstra's Guarded Command 에서 Boolean Expression 중 어떠한 것도 참이 아닌경우 구문을 벗어나는지 묻는 문제
e) Ada 에서 for loop 를 이용한 iteration 소스. 루프 종료후 condition variable 처리에 대한 문제 출제.
2. 다음의 소스를 제출
~cpp
void fun(A, B, C, D)
{
A = A + A;
D = A + C
return
}
.
.
.
X = 2, Y = 3, Z = 6
fun(X, X, X+Y, Z)
print Z;
a) 상기 소스에서 fun 함수의 파라메터 전달 방식이 Pass-By-Value, Pass-By-Name 의 경우로 나누어서 출력 결과값을 나타내라 (소스는 대충 비슷한거 같은데 확실하지 않음. -_-;; 기억에 의존하다 보니 ㅋㅋ)
b) 각 방식의 바인딩 타임의 차이를 설명하라.
3. operator 우선순위에 의거한 functional side effects문제
a) functional side effects의 정의를 쓰시오.
b) 다음의 소스의 결과 SUM의 값을 적으시오. (evaluation order is left-to-right)
~cpp
int fun(int *i)
{
*i += 3;
return 2*(*i)-1;
}
int i = 10, j =16
SUM = fun(&i) + fun(&j) +(i+j)/2
// 시험 끝난 결과 연산자 우선 순위상 ()의 평가가 먼저인지 function evaluation 이 먼저인지 때문에 헷갈려 했음
// C 에서 돌려본 결과 function evaluation 이 먼저되며, 이는 조건상 left-to-right 로 연관지어서 답을 적을 수 있을듯함.
4.
a) 비지역 변수의 참조에 Static-Chain 기법에 대한 설명을 할 것
b) 언어 개발자들이 Static-Chain 에 비해서 display 기법을 채택하게 되는 이유를 제시하시오.
c) display 에 대한 설명을 하시오. (Qsd = Psd, Qsd < Psd, Qsd > Psd 를 나누어서 설명. 5판에 자세한 내용있음)