作者coolsprite ( )
看板FCUProblems
标题[考古] 程式语言/黄溪春/97期末考
时间Sat Jan 17 15:44:17 2009
[开课学院]:
资电学院
[开课系所]:
资讯系
[课程名称]:
程式语言
[老师名称]:
黄溪春老师
[开课学期]:
[类型]:
97-1期末考
1.现代的程式语言有哪两种「Abstraction」的观念?
并分别概述其意义(8%)
2.说明Ada程式语言的「Specification Package」与
「Body Package」的目的分别为何?(8%)
3.何谓「Abstract class」?其目的为何?(8%)
4.C++程式语言「class members」的存取控制,可以
是[Private]、[Public]、[Protected],其意义为何?(9%)
5.请以 C++ 或是 JAVA程式语言,说明物件
「Allocation」&「Deallocation」的作法?(10%)
6.针对下列程式,回答下列问题:
(1)画出程式执行到注记(a)时,Stack配置情形
(2)若程式采用static-scoping处理外参考,在注
记(b)的各项变数分别定义在哪?并说明搜
寻过程。
(3)若程式采用dynamic-scoping处理外参考,在注
记(a)的各项变数分别定义在哪?并说明搜
寻过程。
(4)用Shallow access实做dynamic-scoping,当程
式执行到注记(a)时,画出各项变数的stack
情形。
┌───────────────────────────┐
│procedure Bigsub is │
│ A,B: Integer; │
│ procedure Sub1(C:Integer) is │
│ B: Integer; │
│ procedure Sub2 is │
│ D: Integer; │
│ begin -- of Sub2 │
│ A=B+C+D;
<-----------(a) │
│ end; -- of Sub2 │
│ begin --of Sub1 │
│ D=A+B+C;
<-----------(b) │
│ Sub2; │
│ end; --of Sub1 │
│ procedure Sub3(A:Integer) is │
│ D: Integer; │
│ begin -- of Sub3 │
│ D=A+B+C;
<-----------(c) │
│ Sub1(3); │
│ end; -- of Sub3 │
│ begin -- of Bigsub │
│ Sub(3); │
│ end; -- of Bigsub │
└───────────────────────────┘
7.针对下列程式,若变数 i,j 与阵列X[1..5]:={2,4,6,8,10}为全域性;
请分别用:
(1)Pass-by-value (2)Pass-by-reference (3)Pass-by-name
等方式执行参数传递,并写出过程与执行结果
┌───────────────────┐
│procedure sub(a,b,c,d)
<--- 0 │
│begin │
│ a:= b+c;
<--- 1 │
│ b:= i+1;
<--- 2 │
│ c:= c+1;
<--- 3 │
│ j:= a+b;
<--- 4 │
│ writeln(a,b,c,d);
<---R1 │
│end; │
│begin │
│ i:=1; │
│ j:=2; │
│ sub(i,j,X[i],X[2]); │
│ writeln(i,j,X[i],X[2]);
<---R2 │
│end; │
└───────────────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.134.50.110
1F:推 XX9 :thx 01/17 19:38