Re: [課業] 程式語言考題一問
※ 引述《pringles27 (拉拉)》之銘言:
: 好奇的地方是reference不是共用記憶體
: 所以y在裡面時不是應該已變為2了嗎?
: 還是須等到}結束才把結果回寫回記憶體呢?
: 是我觀念有誤嗎? 請大大解惑??
這題 20 分,當時我全拿,這樣應該夠資格解釋。
先回答原 po 您的疑惑,您的觀念沒錯,是補習班工讀生搞錯了。
這題其實在考 Scoping,但沒考到 Scoping 的實作,算客氣了。
以 Scoping 來說,又分成:
Dynamic Scoping
Static Scoping
出題老師在題目中沒講是那一種,代表他不夠謹慎。
還好題目程式只有兩層,用那一種最後答案都會一樣。
call by value 人人都會,不講了。
講第二小題的 call by reference
若使用 Dynamic Scoping
因為 by reference 的關係 Function A 的 X 與 Program B 的 Y 共用同
一塊記憶體空間。
當 Function A 使用到沒宣告變數 Y,會沿著副程式呼叫順序反方向找 Y
執行結果為
2 2
2
若使用 Static Scoping
因為 by reference 的關係 Function A 的 X 與 Program B 的 Y 共用同
一塊記憶體空間。
當 Function A 使用到沒宣告變數 Y,會往副程式的上一層找 Y
執行結果仍為
2 2
2
======================下面沒有西斯點分隔線==============================
Scoping 再往下還有重點:
Hole In Scope 議題
保留法、預設值法
Scoping 的實作
Dynamic Scoping --> Dynamic Link
Static Scoping --> Static Link
這兩個的重點就又一堆
做這種程式語言理論類題目我是不建議用實際的程式語言去驗它,因為
Fortran 只提供靜態記憶體配置
Pascal 使用全部運算
C 語言使用捷徑運算
C 語言事實上只有 Call By Value (我知道有指標,但它底層仍是 by value)
C 語言是 Static Scoping
如果題目考 Dynamic Scoping 結果拿 C 語言去驗它,出來的答案一定是錯的
補習班請工讀生寫的擬答常常有問題,有時候工讀生會把維基百科的內容貼
過來當擬答,維基百科最為人詬病的就是文章語法不通順、巷議街談道聽塗
說,像資訊管理、系統分析這類科目很重視語法通順、用字精準,貼維基文
章當作擬答只會降低補習班自身專業形象。
國考出的題目也常常模擬兩可,甚至有誤。
君若不信,請用 LISP 去寫 103 年高考程式語言第四題看看。
推
04/22 07:49, , 1F
04/22 07:49, 1F
推
04/22 08:15, , 2F
04/22 08:15, 2F
※ 編輯: fcouple (211.76.33.33), 04/22/2015 08:45:04
推
04/22 09:02, , 3F
04/22 09:02, 3F
→
04/22 09:04, , 4F
04/22 09:04, 4F
→
04/22 09:05, , 5F
04/22 09:05, 5F
推
04/22 09:25, , 6F
04/22 09:25, 6F
推
05/15 18:21, , 7F
05/15 18:21, 7F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
課業
5
16