01-5. 旅遊嚮導

https://teachinglondoncomputing.org/resources/inspiring-unplugged-classroom-activities/the-tour-guide-activity/

Computer Science activities with a sense of fun: Tour Guide V1.1, 14 Dec 2014

Created by Paul Curzon, Queen Mary University of London for Teaching London Computing: http://teachinglondoncomputing.org

本教材以創用CC 3.0 姓名標示-非商業性-相同方式分享釋出(creative commons 3.0 BY-NC-SA) https://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh_TW

請你幫忙設計一趟旅行方法,協助一位旅客能夠從旅店出發、遍覽城市的景點後,也能順利地回到旅店。

這個活動是一個演算法(algorithm)的例子,示範一種簡單的循序指令。

它告訴我們如果我們只要依照一種特定的思考方式,將一個問題的解法寫下來,接下來我們只要照著解法一步一步地執行,就能夠順利解決我們的問題。

寫下來的好處是我們可以隨時檢查是不是還能有更好的方式來解決問題,只要用紙筆就能做好這件事(在電腦上編寫程式也是這樣的)。

這個活動也同時介紹了圖形的表示法,以及電腦在解決問題上的思維是如何進行的,藉由移除一些不需要的細節的方式 (抽象化),可以有效地簡化問題。

這個活動跟接下來的「勇者之旅」也有相關之處。

在這個單元可以學習到:

  • 抽象化
  • 資料的表示方法
  • 運算思維
  • 演算法
  • 循序指令
  • 圖形
  • 解決需求

運算思維:

你設計出的旅遊方式,是一種循序式的指令(sequence of instructions),也是為了解決上述旅遊問題的一種演算法(algorithm)。如果我們不寫下來,也許在你思考完之後馬上就跟著忘了,然後還要再重新想一次。寫下來的另一個好處是,別人拿到你的設計時也可以照著做,不會犯下任何的錯誤。

將指令寫下來之後,最重要的是一定要執行(evaluate)一次,也就是說一定要測試看看是否犯了什麼設計上的錯誤,以及是否有達成所有問題解決的需求(requirements)

這個問題如果可以用一張圖形(graph)來表示景點之間的道路連接情形,會比光是坐著空想來得容易多了。電腦科學家通常只用「節點」與「線段」就能表示一張圖形(節點指的是重要的資料,線段指的是資料之間的連結關係)。

在這個例子裡面,我們只關心城市中的重要景點,以及前往景點之間的交通路線,其他不重要的景點,以及景點之間實際的距離有多遠其實並不重要,所以我們在繪製圖形的時候就會將這些資訊給去除,這個動作稱為抽象化(abstraction)

這類的表示方式,我們可以在大眾運輸的路線圖之中看到,像是公車路線圖或是捷運店的分佈圖等。對於表示這類的路線來說,它是一種比較正確且有效率的表示法。(注意,像是每一站之間的距離有多遠,以及公車不會經過的景點,在這張圖上當然是看不到的)

遊戲說明:

1. 每個人需要一張紙本地圖、一個「微笑卡片」、一張路線記錄表以及一支筆。

2. 旅店(hotel)為起點,你設計的路線必須經過城市中所有的景點

3. 第一次在測試你設計出來的路線時,不要寫下來,使用手上的「微笑卡片」來代表這位旅客,在地圖上移動並測試這樣的設計是否符合效率。

4. 接下來在路線記錄表上,一個步驟、一個步驟寫下你設計的路線。

5. 設計路線時要注意,不要漏掉任何一個景點,已經造訪過的景點也不要再經過一次(浪費時間),最後記得要回到旅店

1-2旅遊嚮導(空白表格).doc

答案不只一種,以下為其中一種參考解法:

1-2旅遊嚮導例題解法(表格).doc

回家作業:

試著設計一張你居住地方的「圖形」。現在你是主人,必須招待你的朋友逐一造訪周遭重要的景點,在畫完圖形之後,同樣設計出一份旅遊路線表。(記得,要從你家出發、最後也要回到你家)

繪製圖形輔助程式:

http://163.22.72.196/html5/html5_graph/html5_graph.html

http://163.19.104.4/cstt/html5_graph/graph.html

使用輔助程式繪製你的回家作業,並輸出為PNG檔。操作方式為「按一下」、「長按」與「拖曳」。