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.0172 sec