02-5. 瞬移的機器人

https://teachinglondoncomputing.org/resources/inspiring-unplugged-classroom-activities/the-teleporting-robot-activity/

Computer Science activities with a sense of fun: The Teleporting Robot V1.0, 17 March 2014

Created by Paul Curzon, and Peter McOwan, 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

本來完整的拼圖上總共有17個機器人,但是當你重新拼一次的時候,發現竟然會憑空少了一個!

2-5 meltingsnowman.pdf

這是一個簡單的魔術演算法範例,當然也可以用於解釋何謂電腦的演算法。

請學生們依照以下的步驟測試這份拼圖:

  1. 數數看有幾個機器人。
  2. 按照「指定的方法」調換拼圖的位置。
  3. 再數數看有幾個機器人。

不管學生知不知道這個魔術背後的原理,只要照著步驟的順序執行,就一定會呈現相同的效果。這也是電腦程式的效果,只要一步步執行設計好的指令,每次都會得到相同的結果。

這個魔術也告訴我們,一件本來簡單的事會因為我們頭腦混亂而被覺得它無比的複雜。所以在進行設計時必需把握一個重要的原則:使用介面必須清楚且容易使用。在運算思維的觀點上上,這代表我們必須先把問題簡化,去理解使用者最關心的部份是什麼,再針對這些部份來進行程式的設計。

請學生利用下方的雪人拼圖,一起來學習這個概念。

PDF檔下載:

2-4 meltingsnowman.pdf

這個單元可以學習到:

  • 運算思維
  • 人機互動
  • 可用性
  • 避免造成錯誤的設計

活動說明:

1. 大型版本的機器人拼圖,用來說明與展示用。另外每個學生一份小型的雪人拼圖,用於解出魔術背後的謎團。

2. 首先用機器人拼圖做示範。告訴所有人,前方的拼圖是有智慧且富有生命力的,裡面有一個機器人具有瞬間移動的能力,現在你要證明這件事。

3. 布置:將大型版本的拼圖張貼在教室前方,讓拿著一支白劍的灰色機器人在左上角、四隻綠色的章魚怪都在最上面那一排、兩個穿著紅色系裙子的機器人則在最下方(其中一個裙子正好被最底下的兩塊拼圖左右切成一半)。

4. 先請學生數一數,拼圖上面總共有幾個機器人(不包含那四隻章魚怪,算出來應該總共會有17個)。接著你開始將拼圖塊重新洗牌、組合,實際上你的動作只是把上面、中間這兩排的拼圖同時左右對調位置而已,最底下那兩塊保持不動

5. 重新請學生數一數拼圖上面機器人的數量,他們會發現竟然在不知不覺的情況下,一個機器人不見了…拼圖上只剩下16個

6. 再從頭布置一次,這次洗牌、組合的動作放慢一點,讓學生觀察究竟發生了什麼事情。也許有人會去計算頭與腳的數量,試圖想看出端倪,其實這對於結果根本沒有任何影響。

7. 發下小型版本的拼圖給學生,讓他們試著探索其中的奧祕。也許有人會將手指放在雪人的頭、腳,試圖模擬它們的移動,結果他們會發現,這些頭與腳根本沒有消失過,那不見的機器人它究竟到哪去了?

運算思維:

其實這個魔術只是一種幾何圖形的組合,透過人類大腦的限制交互影響之下造成一種錯覺而已。它告訴我們,原來人類是這麼容易被欺騙的,就算事情眼睜睜地在你面前發生,你可能還是搞不懂自己為什麼被騙了。

如果一套工具在設計的時候就沒有注意到易用性,當我們覺得實在很難用的時候,可能真的不是我們不夠聰明,而是這工具的使用介面也許出了什麼問題。同樣的,當我們在設計一個程式時,為了不讓使用者搞出一個難以收拾的結果,我們也必需考慮到它的易用性。

好吧,那這個魔術到底是怎麼回事?其實這不僅僅是單一個機器人所造成的結果,最底下那一排的每個機器人其實都為這魔術做出了巨大的貢獻。當你完成交換拼圖塊的動作後,這些機器人都「變高了」,從最左下角的那個機器人開始觀察起,那顆頭原本是切齊眼睛上緣的,移動完拼圖之後,切齊的位置變低了(也就是它稍微長高了一些些)。依序往右觀察那些機器人,是不是每個都稍微長高了一些呢?因為中間那排的機器人,要負責接到底下那排機器人的上緣,讓它們能夠長高。這樣發展下去,將會有一個機器人整個被「移稙」到另一個機器人的下半身上,所以它就「消失了」。

我們用一個比較簡單的方式來解釋這件事。請觀察底下左方的圖形,原本它有5條的垂直線。現在我們從圖形中間斜斜地切開它,從最左下角的角落切到最右上角的角落。接著將兩塊切下來的圖案左右交換重新組合,我們會發現,垂直線變成4條了,但是每個一垂直線也跟著長高了一些。

當然,這個拼圖的設計比這些垂直線條複雜多了,只是它們都是依照同樣的邏輯而已。我們的大腦在處理五條垂直線的訊息,比同時要處理十幾個機器人來得容易多了,這個就是腦力的限制,我們沒辦法同時處理太多訊息!

先前我們提過,魔術師在發展演算法的時候,是意圖讓觀眾覺得複雜、不容易看出規則的。但是程式設計師的目標卻剛好相反,他們要為了使用者考慮,將不必要的東西給去除,然後設計出容易使用的東西。偏偏我們常看到程式設計師把自己當成魔術師一般,設計出一系列難用的軟體。