[問題] 編寫程式的思維如何教?

看板C_and_CPP作者 (擅戰士)時間15年前 (2009/12/15 06:14), 編輯推噓16(16042)
留言58則, 19人參與, 最新討論串1/2 (看更多)
因為某位學妹(其實不只她一個) 對老師的上課風格不適應 目前有在教某位學妹和學弟 教語法和用法是沒問題 但是如何要實現一個程式要如何教學呢 好比如他們之前有個程式 十進位轉成n進位 (n為輸入值) 我一看到這題目想了幾分鐘 應該會用到哪些語法就大概有個譜了 問題是 我如何將這種思維的過程教給他人 我大一程式也都是聽不懂 是抄寫網路+老師放水才過的 其實那時候根本連回圈都不懂 = =||||| 是後來確定要走什麼領域 在某次寒假或暑假買書自學的 重點是...我用的書(洪維恩)也沒教編程的思維過程 然後我自己是怎麼會的我也不清楚 = =a -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.115.26 ※ 編輯: Martial 來自: 163.25.115.26 (12/15 14:16)

12/15 14:27, , 1F
愛和信念最重要了 XD 還是讓他們看例子然後動手吧。
12/15 14:27, 1F

12/15 14:27, , 2F
多看多想多嘗試 久了就會了
12/15 14:27, 2F

12/15 14:27, , 3F
的確不容易, 可能需要玩點推理益智遊戲 XD
12/15 14:27, 3F

12/15 14:41, , 4F
不停的寫 就跟算數學一樣
12/15 14:41, 4F

12/15 14:51, , 5F
不停的寫 不停的看
12/15 14:51, 5F

12/15 14:52, , 6F
多寫多練習
12/15 14:52, 6F

12/15 14:58, , 7F
你舉的例子,很大部份不是靠什麼思維,而是實實在在的
12/15 14:58, 7F

12/15 14:59, , 8F
知識,那是因為你腦子裡裝的東西夠多了,拿出來用而已
12/15 14:59, 8F

12/15 15:00, , 9F
很多知識、概念都沒有的人,你要他用思考、推理去解
12/15 15:00, 9F

12/15 15:00, , 10F
也是強人所難
12/15 15:00, 10F

12/15 15:00, , 11F
ps:可以申學妹的MSN嗎? XD
12/15 15:00, 11F

12/15 15:02, , 12F
多寫多看,沒有其它法門~
12/15 15:02, 12F

12/15 15:10, , 13F
快去Programming版看神仙顯靈 XD
12/15 15:10, 13F

12/15 15:20, , 14F
十進位轉成n進位 看你用手算怎麼算
12/15 15:20, 14F

12/15 15:20, , 15F
寫程式只是把你用手算的過程變成loop
12/15 15:20, 15F

12/15 15:24, , 16F
不過計概以及計算機程式課程 有部份算是在把這觀念帶上
12/15 15:24, 16F

12/15 16:19, , 17F
學妹圖勒?
12/15 16:19, 17F

12/15 16:50, , 18F
推stonehomelaa, 程式的實作前, 是先想人怎麼算, 然後才
12/15 16:50, 18F

12/15 16:51, , 19F
轉換成程式碼, 並同時搞清楚需要用到什麼語法....
12/15 16:51, 19F

12/15 16:52, , 20F
可能也有例外啦XD 也推221大說的, 要靠知識經驗累積:)
12/15 16:52, 20F

12/15 17:19, , 21F
程式只是實作你的演算法 演算法可大可小
12/15 17:19, 21F

12/15 17:20, , 22F
影像處理需要 十進位轉二進位的小問題 也需要演算法
12/15 17:20, 22F

12/15 17:21, , 23F
你可條列式的寫出需要的演算步驟 再一步步教他怎麼實現
12/15 17:21, 23F

12/15 17:21, , 24F
例把手算的方法 詳細列出步驟 也算是一種演算法的開發
12/15 17:21, 24F

12/15 17:23, , 25F
演算法包含一些相關知識 10轉2 需要知道int是怎麼存的
12/15 17:23, 25F

12/15 17:24, , 26F
連0000~1111等於0~15都不懂的話 就真的連頭緒都沒有
12/15 17:24, 26F

12/15 17:27, , 27F
懂關係後還要會說明 110=1*4+1*2+0*1=6
12/15 17:27, 27F

12/15 17:28, , 28F
有了這些觀念後 再來是對語言的熟悉 + - * / %
12/15 17:28, 28F

12/15 17:31, , 29F
或是 << >> 熟練度也很重要
12/15 17:31, 29F

12/15 17:32, , 30F
熟練才知道每個動作做完的效果
12/15 17:32, 30F

12/15 17:33, , 31F
知道 %可以得到餘數 /可以得到商數 基本上就算不用迴圈
12/15 17:33, 31F

12/15 17:33, , 32F
也可以完成二轉十的半成品
12/15 17:33, 32F

12/15 17:36, , 33F
最後再補上"什麼樣的條件可停止" 的概念 去完成迴圈
12/15 17:36, 33F

12/15 19:10, , 34F
我看過有些人看到 i = i + 1 腦袋就打結了
12/15 19:10, 34F

12/15 19:10, , 35F
他搞不懂i為什麼會等於 i+1...
12/15 19:10, 35F

12/15 19:11, , 36F
更不用說變數在執行迴圈時的變化
12/15 19:11, 36F

12/15 19:13, , 37F
i = i + 1 從組語來看就清楚了
12/15 19:13, 37F

12/15 19:17, , 38F
i = i+1 的 “=” 是assign而不是等於
12/15 19:17, 38F

12/15 19:35, , 39F
我認為要先解釋問題的結構,明白問題結構,程式結構自然浮現.
12/15 19:35, 39F

12/15 20:56, , 40F
i = i+1 是一種美麗的錯誤, 如果寫成 i <- i+1 會好懂得多
12/15 20:56, 40F

12/16 00:06, , 41F
個人認為mantour網友解釋得不錯,這樣子確實比較好理解
12/16 00:06, 41F

12/16 02:52, , 42F
比較好理解是什麼意思? =在C++中從來不會是別的意思.
12/16 02:52, 42F

12/16 09:13, , 43F
但是在數學上是別的意思呀, 你先學數學還是先學 C 呢? XD
12/16 09:13, 43F

12/16 09:25, , 44F
但可沒人都把C跟數學全當一回事,基本keyword要不要記住而已.
12/16 09:25, 44F

12/16 09:32, , 45F
把=搞錯,在程式的討論範圍之內不是一回事. 理由只有一句話:
12/16 09:32, 45F

12/16 09:33, , 46F
"你記錯了". 不管怎麼搞錯,指導他只要這麼一句話就夠了.
12/16 09:33, 46F

12/16 09:42, , 47F
我意思是,不要忙著做很多比喻,否則,你還要分神維護這些比喻
12/16 09:42, 47F

12/16 09:43, , 48F
與被比喻物之間的一致. 對被教導者來說也是更多的記憶詞.
12/16 09:43, 48F

12/16 14:44, , 49F
一種符號多種意思本來就會搞錯嘛, 學過當然知道跟數學不一樣
12/16 14:44, 49F

12/16 14:44, , 50F
跟他說你記錯了也沒用, 你還是要讓他懂等號變成什麼樣的意思
12/16 14:44, 50F

12/16 14:45, , 51F
學過東西之後就忘了怎麼學會它的, 很多事就變得很自然
12/16 14:45, 51F

12/16 14:46, , 52F
但是當你要面對完全沒有背景的人時, 請站在他的立場幫他想
12/16 14:46, 52F

12/16 14:47, , 53F
比喻本來就是學習很重要的一種手段
12/16 14:47, 53F

12/16 14:47, , 54F
就好像學 Java 時你就會去想, 像是 fopen 的東西不知道在
12/16 14:47, 54F

12/16 14:48, , 55F
Java 裡是要用什麼 API 呢? 這就是一種比喻了
12/16 14:48, 55F

12/17 02:04, , 56F
比喻跟聯想能力確實再學習過程頗重要的
12/17 02:04, 56F

12/17 04:06, , 57F
未看先猜有人伸圖
12/17 04:06, 57F

12/18 19:56, , 58F
唯一有效的教法就是訓練他們練習寫程式
12/18 19:56, 58F
文章代碼(AID): #1B9obEQt (C_and_CPP)
文章代碼(AID): #1B9obEQt (C_and_CPP)