Re: [問題] 請問大家都怎麼教別人遞迴和迴圈的基本 …

看板C_and_CPP作者 (藍影)時間13年前 (2011/06/22 23:40), 編輯推噓8(801)
留言9則, 9人參與, 最新討論串1/5 (看更多)
※ 引述《leeyinf (貓貓)》之銘言: : 我有認識的朋友大學是非資訊(財金)相關科系畢業, : 可是她一直卡在遞迴和迴圈,這個部分... : 我教了可是她還是不太理解, 恕刪。 洽巧本身也是商科生,提一點學習、家教的經驗與意見出來, 覺得效果還不錯,參考一下。 其實財金在商科裡面,我認為算是計算邏輯能力「很強」的系所, 財金裡面有一堆模型推導事實上已用到了線性代數與作業研究之技巧, 只是在工科會用線性代數表示,商科習慣上還是用 Σ 之類符號表示, 最明顯的例子是「一階線性回歸方程式」求法, 這公式在商科統計學和工科線性代數是一樣的東西,只是表達方式不同而已。 甚至有一些公式沒用電腦算,用計算機算會按到死的,這裡不贅述。 我不知道你朋友最後一階段學歷時,有沒有接觸過 SPSS/SAS、Lingo/Lindo 之類的軟體, 我自己是認為這類軟體和一般程式語言 ( C/VB) 在表達敘述上差異很大, 光是 Lingo 裡面的 Set 和 For loop 合用就足夠讓人吃盡苦頭, 故我認為,在商科裡面沒學任何套裝軟體其實反而是件好事。 不論是針對商科生,或是家教遇到完全沒經驗的新手, 我本人是比較建議自己做一份講義給他們看, 因為在任何程式語言接觸前,勢必必須對電腦有基礎的認知,這在計概會有。 但商科的計概在教什麼知道嗎?主要是在做 Office 操作, 因商科最重要的,是報告的編排,Word、Powerpoint 通常都會練到很強。 也於是在教程式語言前,我會先教一份自己編著的 powerpoint, 因為內容很多我就不放上來,大綱大致如下網址所述 (紅1部份) http://edisonx.pixnet.net/blog/post/55584448 上面因為是我家教經驗整理出來的,所以有其他經驗的版友歡迎補充。 ------ loop 問題 我自己通常是視家教學生的狀況再設教學模式,如果學生 excel 會用公式的話, 通常我會先叫學生拉一個 1+2+..+10 的 sheet 給我看,我再跟他說怎麼轉成 C 語言, 這也是我認為 會用 excel 公式的學生比較好教的原因之一。 如果不會用 excel 的話,常常都是用循序漸進的例子 a. Hello, World!! 要印 3 次怎麼印?要印 10 印怎麼印?100次怎麼印? b. 第1行印1,第2行印2,第3行印3,我要印10行,怎麼寫? c. 再切入 1+2+...+10 怎麼寫? d. 套二個 星號 問題,通常分析我都這麼分析 http://edisonshih.pixnet.net/blog/post/32290479 後來發現讓初學者更容易明白的分析法,這部份我沒再製講義,blog. 其它星號問題 http://edisonshih.pixnet.net/blog/post/32457789 這章節相關問題我會給他一份 ppt, http://0rz.tw/LdbgT 要求他一星期做三題,下次上課我「至少」要看到「屍體」, 裡面共 11 題,加上之前的範例,經過三週不斷摸索,我認為不熟也變熟。 最後一部份我比較少在「苛求」,但我會跟他們說: 把之前所有有用到 loop 的程式,寫三種版本: for, do while, while 。 另一我認為「對初學者」要有的要求是: 「記住,以後 for(i=0; i!=n; ++i), 那個 i 一定要從 0 開始寫! 這是要養成你的習慣!」 這麼做原因主要有二,一個是習慣程式語言從 0 開始計數 (這到array那裡就省很多功) 另一原因是初學者在 initial i!=0 的情況下, 配合 array 很容易會出現 over bounding 問題,所以用這方式盡量協助避開這些問題。 ---------- recursive 問題 recursive 問題我覺得書可以幫忙的程度有限、外人可以幫忙的程度也有限。 這問題我不知道原 po 是什麼時候教他的,如果函式基本特別都不熟,那很不適合教。 我舉的第一個例子是錯誤的例子,但卻引出「自身呼叫」的概念 #include <stdio.h> int main() { int a=0; printf("Hello, World %d times!!", a); a=a+1, getchar(); main(); // 注意這裡 return 0; } 去解釋為何結果會變這樣,再把 getchar() 拿掉,讓程式跑到 stack ov 跳出來, 再跟他解釋一遍。 通常 recursive 問題,初學者我只有在「課程快結束」的時候才提到漢諾塔, 這雖然是個經典題目,可是我覺得對初學者太難了,會打擊自信心,影響課程。 接下來的題目都屬於比較偏簡單的東西 sun(1:n), power, fact, fib(套入爬樓梯問題), dec2bin, gcd 不夠直覺, 不會講, 這些都用畫圖去說明,如果會做 powerpoint, 是該花時間做動畫,會做蠻久的。 至於分治算法也是在課程快結束時才會提概念,以 merge sort 為說明 http://en.wikipedia.org/wiki/Merge_sort 這份 code 我覺得很適合。 ------- 家教要培養一個新手到一個普通大學生程度 (可能強一點), C 語言大概花 40 hrs 左右,前提是要配合做作業,配合複習。 以上一點心得與意見,僅供參之。 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.73.222

06/23 00:04, , 1F
這篇超認真, XD 推推
06/23 00:04, 1F

06/23 00:13, , 2F
推認真
06/23 00:13, 2F

06/23 00:27, , 3F
這一篇文章值 754 Ptt幣
06/23 00:27, 3F

06/23 00:46, , 4F
感謝,我會努力消化掉。
06/23 00:46, 4F

06/23 01:06, , 5F
認真推
06/23 01:06, 5F

06/23 03:08, , 6F
還好你沒被抓交替 XDDD
06/23 03:08, 6F

06/23 08:41, , 7F
tropica怎麼懂一堆阿,下輩子去當守門員吧,你一定會出名
06/23 08:41, 7F

06/23 10:05, , 8F
推認真!
06/23 10:05, 8F

06/23 14:38, , 9F
大大S級守門員
06/23 14:38, 9F
文章代碼(AID): #1E0Wpty2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1E0Wpty2 (C_and_CPP)