Re: [課業] 程式語言考題一問

看板Examination作者 (皇家典藏20年禮炮)時間10年前 (2015/04/22 07:07), 10年前編輯推噓5(502)
留言7則, 5人參與, 最新討論串3/3 (看更多)
※ 引述《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
當時好像也是差不多方向考慮,不過沒全拿就是了qq
04/22 09:02, 3F

04/22 09:04, , 4F
去年lisp改很鬆,當場唬出來(可能有唬中)拿快滿分傻眼
04/22 09:04, 4F

04/22 09:05, , 5F
國考考過一輪才知道中文維基有多爛阿......
04/22 09:05, 5F

04/22 09:25, , 6F
推著眼點跟Scoping的想法
04/22 09:25, 6F

05/15 18:21, , 7F
感謝高手
05/15 18:21, 7F
文章代碼(AID): #1LDjWj6K (Examination)
文章代碼(AID): #1LDjWj6K (Examination)