2010年1月16日 星期六

不懂程式也可以學演算法設計

傳統上要教程式設計或演算法的概念,必須先讓學生學一套程式語言(C, Java等),或者至少要學一套Toy Language(須至少包含iteration statement, selection statement, express等construct),然後出題目讓學生解。在這裡我推薦一個 flash game,是我的學生馮飛郡介紹給我的,可以在玩遊戲的過程中學到程式設計的概念,很適合大一修習計算機概論的學生理解演算法是什麼一回事。

這個 flash game的遊戲目的,是讓一個機器人依照你設計的程序走到指定地點(藍色地板)點燈。你可以使用的基本指令 (Primitives) 有前進一格、向右轉、向左轉、跳起來(以跳到高處)以及點燈這幾種。特別的是你還有兩個函數 f1 及 f2 可以自己設計,然後在你的 Main Method 中呼叫使用。每一個關卡都有規定過關所需的步驟數目,用了少於此數目的步驟數還有額外加分。


這個 flash game 的URL在:
http://theflashgames.blogspot.com/2008/09/lightbot.html


起初幾關還算容易,十幾關後變得超難。想挑戰自己程式設計功力的可以試試。

1 則留言:

  1. 它的設計可惜沒有selection statement,因此不能設計recursive function (會沒辦法測試終止條件),也不能f1 call f2 又 f2 call f1 (會無法終止)。事實上這個game也沒有 iteration primitive,它是用多次呼叫某個function來達成 iteration 的效果,而 nested loop 就是以 main call f1, f1 call f2 來達成的。

    回覆刪除