Learn-By-Study versus Learn-By-Programming
剛剛有大一的學生到實驗室問計概助教一個教科書上的問題.該學生對於書上寫了:
要注意 Escape Character 的使用... 例如 "\1234" 會被視為 "\123" 與 "4" (懶得去抄英文原文, 直接用中文寫)
感到很奇怪, 不懂是什麼意思, 為什麼不是 "\1" 與 "234" ?
我覺得會注意到這個問題代表該位學生很認真地在看書, 想我自己剛學 Programming 時根本也沒注意過這個問題. 但是我覺得該位學生的提問方式, 其實曝露出了她在唸書時的習慣, 很可能是延續唸一般科目的方式, 只在書本上思考跟學習.
事實上, 在她已經會基本的 C Programming 情況下, 一個簡單的程式可以為這個問題帶來解答的線索.
這個簡單的程式在一般的系統中應該會給出 S4 的列印結果. 再多試一下改成這樣 :
會給出 T4 的列印結果.
從這兩個簡單的程式, "\1234" 會被視為 "\123" 與 "4" 是一個學生自己就可以驗證的事實, 因此真正的好問題應該是,
"\123" 是什麼 ? 為什麼系統會認得它 ? 為什麼會印出 S ? 為什麼它不在我學過的 "\n", "\t" 等等特殊字元裡面 ?
從而該位學生或許有辦法根據以上修改過的問題, 進一步分辨 Control Characters 以及 Printing Characters, 以及更深入了解 ASCII Code Table, 最終得到 "\123" 會被印出 S 是因為 123 是 S 在 ASCII 中的 Octal Representation 之猜測.
當然, 不能期待剛接觸 C Programming 幾個月的學生可以獨立得到最後的結論, 但至少在看書之外, 動手去找尋原因, 嘗試, 猜測以修正問題, 對於 Programming Learning 是很重要的.
下午5:57
|
標籤:
programming learning
|
This entry was posted on 下午5:57
and is filed under
programming learning
.
You can follow any responses to this entry through
the RSS 2.0 feed.
You can leave a response,
or trackback from your own site.
0 意見:
張貼留言