史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 關閉主題
 
主題工具 顯示模式
舊 2012-06-05, 02:26 PM   #1
275x
註冊會員
榮譽勳章

勳章總數
UID - 353817
在線等級: 級別:0 | 在線時長:0小時 | 升級還需:5小時
註冊日期: 2012-06-04
文章: 1
精華: 0
現金: 1 金幣
資產: 1 金幣
預設 疑問 - 程式語言題目不會><求解答

有點多><

1. 考慮下列 ALGOL 程式片段:
for index := l , 4, 13,
41 step 2 until 47,
3 * index while index < 1000,
34, 2, -24 do
sum := sum + index
此 for 敘述可將那些數值依序加入 sum 中

2. 考慮下列 ALGOL 程式片段:
SUM :=0; J :=1; N :=25;
FOR I :=1 STEP J UNTIL N DO
BEGIN
SUM :=SUM+A[i];
J:=J+2*I;
N:=N-2*J
END;
如果在進入 FOR 迴圈時,計算 J 值和 I 值,此後每次執行迴圈之後重新計算 J 值,則會求
得陣列中那些元素之和?

3. 考慮下列 ALGOL 60 的 for 迴圈:
i:=1;
FOR count:=1 step count until 3*I do
i:=i+1;
寫出 i, count, step count, until 3*i 的變化。

4. 寫出下列兩種由計數控制迴圈(counter-controlled loop)組成之程式執行後所印出的結果。
C 語言 ADA 語言
void test() procedure TEST is
{int i, sum; I, SUM:INTEGER;
sum=8; begin
for(i=1;i<10;i++) I:=5; SUM:=8;
sum+=i; for I:=1..10 loop
printf("%d\n",i); SUM:=SUM+I;
} end loop;
PUT(I);
NEW_LINE;
end TEST;

5. 考慮下列程式,有三個副程式P,Q及R,P呼叫Q,Q呼叫R。
請繪出採用深存取(deep access),在副程式R可以引用的變數。
請繪出當R執行時,淺存取(shallow access)的中央環境表及隱藏堆疊的內容。
procedure P;
integer X , Y ;
begin
:
end ;
procedure Q ;
real B , A , U , X ;
begin
: end ;
procedure R;
integer Z , Y , A ;
real W, V ;
begin
: end ;

6. 試就以下程式段分別以清除法及保留法說明執行結果為何?
procedure B;
var P:integer=6;
begin
write(P);
P:=P*5;
write(P);
P:=P-10;
end; {B}
procedure A;
begin
B;
….
B;
end; {A}

7. 請寫出下列程式
(a)採取靜態領域法時,在位置、、中的變數在何處定義。
(b)採取動態領域法時,在位置、、中的變數在何處定義。
(c)請繪出當執行到SUB1時,中央堆疊之變化,標示靜態鏈及動態鏈。
(d)請繪出當執行到SUB1時,顯示堆疊(display stack)關係圖。
(e)請繪出採用深存取(deep access),在副程式SUB1可以引用的變數。
(f)請繪出當執行到SUB1時,淺存取(shallow access)的中央環境表及隱藏堆疊的內容。
program MAIN_2;
var X : integer;
procedure BIGSUB;
var A, B, C : integer;
procedure SUB1;
var A, D : integer;
begin { SUB1 }
A := B + C + X;  
end; { SUB1 }
procedure SUB2;
var B, E : integer;
procedure SUB3;
var C, E : integer;
begin { SUB3 }
SUB1;
E := B + A:  
end; { SUB3 }
begin { SUB2 }
SUB3;
A := D + E;  
end; { SUB2 }
begin { BIGSUB }
SUB2;
end; { BIGSUB }
begin
BIGSUB;
end. { MAIN_2 }

8. 考慮以下程式:
program P;
var x, y: integer;
procedure A (var Z : integer);
var x : integer;
begin x:=1; B; Z := x end A;
procedure B;
begin x := x + 1 end B;
begin
x:=5; A(y); write(y)
end.
假如用(1) static scoping (2) dynamic scoping,則程式印出結果為何?

9. 此程式呼叫順序 MAIN → A → C → F → B → D,
(a)請繪出當執行到 D 時,中央堆疊之變化,標示動態鏈及靜態鏈
(b)請繪出當執行到 D 時,顯示堆疊(display stack)關係圖。
program MAIN
procedure A;
procedure B;
procedure D;
….
end D;
end B;
procedure C;
procedure E;

end E;
procedure F;

end F;
end C;
end A;
end.

10. 下列 Pascal 程式執行結果為何?若 Pascal 語言改採動態領域(dynamic scoping)的方式,結
果將如何?
program A;
var X, Y: integer;
function B(D : integer): integer;
begin
B := X+D
end;
function C(D : integer) : real;
var X : real;
begin
X := 5.1; C := X+B(D+1)
end;
begin
X := 3; Y := 0; writeln(C(Y))
end.

11. 考慮下面的 C 語言程式片段,並回答下列問題。
int abc(int *k) {
*k +=4;
return 3 * (*k) - 1; }
void main(){
int i = 10, j = 10, result1, result2;
result1 = (i / 2) + abc(&i);
result2 = abc(&j) + (j / 2); }
(1)如果在運算式中的運算元估算的順序是由左到右,則 result1 及 result2 的值為何?
(2)如果在運算式中的運算元估算的順序是由右到左,則 result1 及 result2 的值為何?
12. 使用本文呼叫法與傳名呼叫法的結果
begin
integer x;
procedure SUB(y);
integer x;
x:=2;
y:=x+y*3;
print(y);
end SUB;
x:=1;
SUB(x);
end;

13. 下面的程式在執行後,GLOBAL 與陣列 LIST 之值為何?請考慮下列二種參數傳遞的方式:
(1) call by name (2) call by value
Procedure BIGSUB;
integer GLOBAL; integer array List[1:2], GLOBAL;
procedure SUB(PARAM);
integer PARAM;
begin
PARAM:=1;
GLOBAL:=GLOBAL-1;
PARAM:=3
end;
begin
List[1]:=4;
list[2]:=6;
GLOBAL:=2;
SUB(LIST[GLOBAL])
end;

14. 底下類似 Algol (Algol-like)的程式,當參數傳遞時採用:
(一)x 用名字法,y 用引用法
(二)x 與 y 皆用名字法時輸出值分別為何?
Integer i; Integer Array A[1:2];
Procedure P(x, y); Integer x, y;
Begin
x:=x+1; y:=y+1;
write(x, y);
x:=x-1; y:=y-1;
END Proc P;
i:=1;
A[1]:=6; A[2]:=12;
P(i, A[i]);
write(i, A[1], A[2]);
P(A[i], i);
write(i, A[1], A[2]);
END;

15. 程式 sub1(x,y,z)的定義如下:
procedure sub1(var x, y, z : integer)
var a, b : integer;
begin
a:=x+y;
b:=x*z;
z:=a+b-z;
y:=a+b+z;
end;
若以 call-by-reference 呼叫 sub1(m,m,n),其中 m=2, n=1,則呼叫執行完畢後,m, n 之值為何?

16. 程序 sub1(x,y,z)的定義如下:
procedure sub1(var x, y, z : integer)
var a, b : integer;
begin
a:=x;
b:=y;
z:=a+b+z;
y:=a+z;
end;
若以 call-by-name 呼叫 sub1(m+n,m,n),其中 m=2, n=1,則呼叫執行完畢後,m, n 之值為何?

17. 以下是一個程式:
program MAIN;
var a, b, c: integer;
procedure sub1(var x,y,z:integer);
begin
x:=y+z;
y:=x+z;
end;
begin
a:=3;
b:=8;
c:=5;
sub1(a+b,a,b);
print a;
end.
若參數的傳遞是以傳址法(call by reference)的方式處理,則上述程式的輸出結果為何?

18. 若從單純的呼叫/返回(simple call-return)方式中,除去下列各項限制,則各得到何種控制
結構(control structure)?
(1) 需用明顯呼叫
(2) 從頭開始執行
(3) 立即轉移控制
(4) 單一執行順序
(5) 不允許遞迴呼叫
275x 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
舊 2012-06-05, 10:18 PM   #2 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

大哥,這樣的作業文,太扯了啦,
每一題都不會寫...

要不要考慮換個科系唸呢?
完全沒有興趣的科系,唸了也痛苦呀...
__________________
姜太公釣魚~ 願者上鉤
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
舊 2012-06-05, 11:12 PM   #3 (permalink)
論壇主管
 
不飛 的頭像
榮譽勳章
UID - 236817
在線等級: 級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時級別:212 | 在線時長:45947小時 | 升級還需:274小時
註冊日期: 2002-12-05
VIP期限: 無限期
住址: 鄭燮之板橋
文章: 14345
現金: 13161 金幣
資產: 2914062 金幣
預設

抱歉
本論壇不代替回復作業問題,

此主題關閉。
__________________
不飛的不飛 ... 因為曾經端座在雲霄之上 ... 所以不飛 ,
因為期待您能與不飛抬頭共列翱翔天昊 ... 所以更是不飛 !

不飛不想飛 ... 畢竟殘破雙翼在苔階沾濕 ... 所以低頭 ,
只好安靜地蹲在這練習 ... 學習要如何才能飛的更高更遠 !

不飛不曾飛 ... 終於知道青澀期代表蒼狗 ... 所以情殤 ,
一甲子的意境等於六十年的期盼的凝固 ... 所以就此棲巢 !
不飛 目前離線  
送花文章: 959, 收花文章: 7607 篇, 收花: 53000 次
發文 關閉主題



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
尋找古老的程式語言Turbo C lin8093 一般電腦疑難討論區 0 2003-09-09 10:29 PM


所有時間均為台北時間。現在的時間是 06:34 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1