U E D R , A S I H C RSS

Programming Language Class/2006/End Term Examination

전체내용

범위 : 6장 ~ 11장 (concept of programming language 6th ed)
02, 05 년에 언어 디자인시 고려해야할 점에 대한 문제가 출제되어서 그쪽으로 공부를 많이 했지만 나오지 않았다는 점에서 의외였음. 디자인 이슈를 공부할 생각이라면 Pointer, Array, Abstraction, Subprogram 의 디자인 이슈에 대해서 공부하는 것이 좋을 듯함.
가디드 커맨드의 내용이 나왔다는 점이 약간 의외였음.

다 푼다음에 드는 생각은 가장 어려운 문제는 1번이었음. -_-;

문제

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판에 자세한 내용있음)

해설

1.
d)
가디드 커맨드가 selector, loop 에서의 동작이 다르기 때문에 이를 조심해야한다. (책참조)
셀렉터의 경우 런타임 에러 발생, 루프시에는 루프를 벗어난다.

e)
  • upto terminate 해석에 따라서 답이 달라짐 종료 직전 -> 답은 True, 종료 시점을 의미한다면 답은 False

~cpp
for variable in [reverse] discrete_range loop
...
end loop
// reverse 키워드가 선언된 시점에서만 역으로 반복됨에 조심할 것
만약에 upto 라는 단어에 두가지의 의미가 상존하는 것으로 보이기 때문에 정확한 답을 대답하기 힘들 것으로 보이며, 맞고 틀림은 해설의 정확성에 따라 결정될 것으로 보인다.


up to ... (1) <어느 위치·정도·시점이> …까지(에), …에 이르기까지;<지위 등이> …에 이르러:up to this time[now] 지금껏, 지금[이 시간]까지는/I am up to the ninth lesson. 나는 제 9과까지 나가고 있다./He counted from one up to thirty. 그는 1에서 30까지 세었다./He worked his way up to company president. 그는 그 회사의 사장으로까지 출세했다. (2) [대개 부정문·의문문에서] 《구어》 <일 등>을 감당하여, …을 할 수 있고[할 수 있을 정도로 뛰어나]:You’re not up to the job. 너는 그 일을 감당하지 못한다./This novel isn’t up to his best. 이 소설은 그의 최고작에는 미치지 못한다./This camera is not up to much. 《구어》 이 카메라는 별로 대단한 것은 아니다./Do you feel up to going out today? 오늘은 외출할 수 있을 것 같습니까? 《병자에게 묻는 말》 (3) 《구어》 <나쁜 짓>에 손을 대고;…을 꾀하고:He is up to something[no good]. 그는 어떤[좋지 않은] 일을 꾀하고 있다./What are they up to? 그들은 무슨 짓을 하려는 것인가? (4) 《구어》 <사람이> 해야 할, …나름인, …의 의무인:It’s up to him to support his mother. 그야말로 어머니를 부양해야 한다./I’ll leave it up to you. 그것을 네게 맡기마./It’s up to you whether to go or not. 가고 안가고는 네 맘에 달려 있다./The final choice is up to you. 마지막 선택은 네 손에 달려 있다.
- 네이버 사전에서

----
ProgrammingLanguageClass
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:02
Processing time 0.0161 sec