第四章 結果與討論
第一節 學生答題情形與困難點分析
本節說明研究者將螢幕錄影與對話錄音,在排除檔案損壞及錄音不清的資料 並轉換為逐字稿後,共取得男生 7 人、女生 6 人,合計 13 份資料中統整分析而 得之各題答題情形,包含學生答題過程中所遭遇的困難,以及訪談者如何提供協 助使學生能順利完成解題。
第一題:物件、內建方法及時序控制結構
本題主要目標為測試學生使用 Alice 程式語言的基本能力,需要學生正確地 宣告物件,並透過使用物件內建的方法(method)和屬性(property)來操作該物 件,以及透過不同的時序控制結構來控制物件進行動作的順序。本題程式碼範例 如圖 4.1,此程式讓一個物件(如程式範例中的 rabbit)依序執行說話、改變顏色 及跳躍的動作,其中變色與跳躍動作須同時進行。
在本次實驗中,13 名學生在第一題中所發生的錯誤類型如表 4.1 所示。
1. 新增動作物件
所有學生在新增動作所需的物件時,皆可順利完成「按下 Add Object 按鈕」、
「選擇並新增物件」這一連串新增動作物件的操作。
27
28
2. 控制物件動作
在使用物件方法(method)及屬性(property)來控制物件進行動作時,所有 學生皆能理解並正確使用內建方法 say 來實作說話動作。但在實作物件跳躍動作 時,有 2 名學生無法立刻反應需使用兩個移動方法(move)來組合出跳躍動作。
其中 1 名學生無法確定自己的動作是否正確,向訪談者反問進行確認:
S01_Q01
S:(完成新增物件 bunny)
S:老師,是 move 嗎?
T:你先看第一個動作是什麼?
S :(開啟 Q1 題目影片)
S:要說話。
S:(將 bunny say 拖曳至主程式區,並設定說話內容為 jump1)
S:跳是這個吧?(指 bunny move)
T:對啊。
另外 1 名學生則需訪談者更進一步,提示跳躍動作是由 move up 及 move down 兩個動作構成:
S02_Q01
T:他的第一個動作是什麼,你要不要再看影片確認一下?
S:(開啟 Q1 題目影片)
S:(將物件區 rabbit 拖曳至主程式區,並在選單選擇 say 後設定說話內容為 jump1)
S:(將左上方 rabbit 拖曳至主程式區,並在選單選擇 move 後,在 move 設定選單上猶疑)
S:跳的話是這個嗎?
T:跳的動作是不是先上再下?
S:(選取 up 0.5 meter,完成 rabbit move 設定)
T:那個高度你自己設。
S:(複製 rabbit move up 0.5 meter 並修改為 rabbit move down 0.5 meter)
約半數的學生(7 名)不知道改變物件顏色的做法為從物件屬性區(properties)
中拖曳顏色屬性至程式中,或是直接將物件拖曳至程式後,於選單中選擇 set color to 選項便可進行改變顏色設定。其中有 2 名學生在訪談者提示需尋找物件顏色之 後,可以找到並進行顏色設定,例如:
29 S11_Q01
S:老師,變色怎麼做?
T:你覺得顏色會是什麼東西?會是動作嗎?
S:他應該是一個 function。
T:顏色的英文是什麼?
S:Color。
T:那就去找 color 。你現在選的是 head,你要選整支兔子。
S:(點選左上方物件區 rabbit)
T:這是動作,methods 都是動作 S:(點選 properties 標籤)
S:(將 color 拖曳進主程式區,並設定為 bunny set color to red)
另外 5 名學生在訪談者明確告知物件顏色位於屬性區後,方能找到並拖曳顏 色屬性至程式中進行設定,例如:
S12_Q01
T:兔子有顏色,它會放在哪裡?
S:(右鍵點擊物件區 bunny,瀏覽選單)
S:兔子的顏色應該在…
S:(右鍵點擊主畫面中 bunny2,瀏覽選單後,點擊 bunny2 upper body 選擇兔子的上半身)
T:像身高是兔子的一部分,顏色也是兔子的一部分,所以它會放在哪裡?
S:他會放在哪裡…
T:如果先不要管變色的話,你覺得兔子的身高、位置、顏色,會放在哪裡?
S:儲存檔案裡。
T:就是這邊(指 properties),這邊有兔子的顏色
S:(將 color 拖曳進主程式區,並設定為 bunny2 upper body set color to red)
3. 動作時序控制
在本題中,需要使用同時控制結構 do together 及循序控制結構 do in order 來 控制物件動作的發生順序,以下先分別討論學生取用此兩種控制結構所遭遇的困 難,再討論學生在組合兩者完成題目時所遭遇的困難。
有 2 名學生在操作過程中,未注意到有特定動作需要同時執行,但在訪談者 提示後,便可正確取用同時控制結構 do together,例如:
30 S12_Q01
T:你覺得這樣跟影片一樣嗎?
S:讓我比對一下。
S:(開啟 Q1 題目影片)
T:你覺得一樣嗎?
S:嗯。
T:你做的是兔子跳到半空中之後,再變顏色。
S:喔,他是邊跳邊變。
S:(將 Do together 拖曳進主程式中,並將兔子跳上及變色的程式碼拖曳至 Do together 中)
在使用同時控制結構 do together 時,有部分學生(8 名)會將跳躍(move up 及 move down)及改變顏色(set color)的程式碼全部放置於同一個 do together 結構中,以致因為向上移動及向下移動兩個動作彼此抵銷,使得物件無法產生跳 躍動作,僅改變顏色(如圖 4.2 所示)。也有學生僅將向上移動及改變顏色程式碼 放置於同一個 do together 結構中,使得物件顏色改變,卻未與整個跳躍動作同時 執行結束(如圖 4.3 所示)。這些學生會發生這樣的錯誤,乃是因為未取用循序控 制結構 do in order 來協助控制物件處理順序。
圖 4.2 程式碼範例-時序控制錯誤情形 1
圖 4.3 程式碼範例-時序控制錯誤情形 2
31
其中有 1 名學生在比對執行結果及題目影片後向訪談者反問確認是否需要取 用控制結構 do in order:
S04_Q01
T:它是整隻變紅以後才跳下來嗎?你再看一下影片。
S:(開啟 Q1 影片)
S:是要用這個(指 do in order)嗎?
S:(將 do in order 移入 do together 中)
另有 1 名學生由訪談者提示應取用控制結構中的其中一個後,猜測應選用 do in order,訪談者於學生取用後向學生講解 do in order 的用途:
S11_Q01
S:(按下 PLAY 進行測試,發現 bunny 跳上同時變色完再跳下)
S:(打開 Q1 題目影片)
T:在下面這些控制結構裡面…有沒有哪些你學過的控制結構你現在還沒用到的?
S:(將 do in order 拖曳至主程式區)
T:好,這是什麼?
S:Do in order。
T:Do in order 是什麼?
S:不太記得,他應該跟這個(指 do together)差不多吧?
T:Together 是…
S:一起。
T:In order 就是依序。
S:依序。
其餘 6 名學生則需要訪談者直接告知需使用 do in order 控制結構來處理依序 執行的動作,例如:
S09_Q01
T:你想想看,跳上跟跳下要依序發生還是同時發生?
S:依序。
T:依序,對。那下面有哪一個控制結構是依序的?
S:(尋找結構控制列約 30 秒)
T:就是 do in order。
S:那不是「另外做」嗎?
32
即便在順利取用兩種時序控制結構後,仍有 9 名學生因無法順利將其組合,
而無法完成目標動作,這些學生皆由訪談者詳細講解物件動作,並告知兩種時序 控制結構的組合方式後方能解題,例如:
S06_Q01
T:你想想看這邊變顏色這個動作應該跟誰同步?
T:你這樣這(do in order)裡頭三個(rabbit move up、rabbit set color、rabbit move down)
還是循序不是嗎?
S:(將 do in order 移出 do together 後刪除 do together)
S:(將 do together 拖曳至 do in order 中)
T:你是 do together 裡頭應該要有 do in order,do together 裡頭先一個變顏色的動作…
S:(將 do together 移出 do in order)
S12_Q01
T:還差一點點,你仔細觀察一下他變色的情況。
33
S:(點擊 cat set color 的 more 選單,將 duration 設成 0.5 sec)
S:(按下 PLAY 進行測試,發現貓還沒跳到最頂就變完顏色)
S:(將 setcat set color 的 duration 調整為 0.25 sec)
S:(按下 PLAY 進行測試,發現貓還沒跳到最頂就變完顏色)
S:(將 setcat set color 的 duration 調整為 2 sec)
S:(按下 PLAY 進行測試,發現貓變顏色過程與整個跳躍動作同步)
第二題:內建函式
本題需要學生在宣告兩個身高互異的物件後,使用物件內建方法 resize 來改 變其中較矮的物件大小,使其放大至與較高物件同樣高度。學生必須了解方法 resize 的功能,並且取用物件內建的函式 height(身高)用於倍率計算,進行正確 的縮放倍率設定,方可完成本題。本題程式碼範例如圖 4.4,此程式讓一較矮物 件(如程式範例中的 plato)透過方法 resize 來改變大小為和較高物件(如程式範 例中的 aliceLiddell)同樣高度,同時在放大過程中說話。
本題共有 13 名學生作答,學生答題所遭遇到的困難及訪談者給予的協助統 整於表 4.2 中。
圖 4.4 程式碼範例-內建函式
1. 取用物件方法 resize
參與實驗的學生中,有 6 名學生不知道必需取用方法 resize 來改變物件大小。
其中 2 名學生在訪談者詢問改變大小是什麼動作以後,即可自行找到並選用方法 resize,例如:
S07_Q02
T:你現在要做的動作是什麼?
S:讓它變得跟它一樣大。
34
S05_Q02
S:(將 dancer stand up 拖曳至主程式區,並點選 more 檢視選項,但未做任何設定)
S:(按下 PLAY 進行測試,發現無任何改變)
S:這一行(dancer stand up)是什麼啊?
T:就是站起來阿,所以你知道有什麼指令可以用來做改變大小的嗎?
resize 使目標 物件縮放
35 S:不知道。
T:OK,那這邊往上拉,有個 resize。這個可以用來改變大小,它的功能是把東西變成…
S:(將 dancer resize 拖曳至主程式,但未設定縮放倍率)
S09_Q02
S:(將joey’s resize 拖曳至主程式區,將縮放倍率設為 2)
S07_Q02
S:(按下 PLAY 進行測試,發現 Euripides 放大至比 Alice 大)
S:(取消用來解釋的 Euripides resize)
T:你現在是要把他放大,用 Alice 的身高當作倍數,放大那麼多倍。但是它是要放這麼多
36 倍嗎?
S:不是。
T:那它應該要放多少倍?
3. 縮放倍率之計算
13 名學生中,在知道方法 resize 後方數字為縮放倍率後,有 11 名仍因無法 正確計算兩物件身高比例而使執行結果發生錯誤。其中 2 名學生於訪談者提問比 例如何計算後即可拖曳正確比例計算式,例如:
S01_Q02
T:你現在要做什麼動作?
S:跟它(Alice)一樣高。
T:跟它一樣高,那這個比例要怎麼算?
S:(點擊 resize 後方清單,將 Mana resize 設定為 Mana resize aliceLiddell’s height / 0.5)
T:要除以誰?
S:它(指 Mana)。
有 7 名學生則在訪談者舉例說明比例關係後,能順利進行計算,例如:
S04_Q02
T:你是不是要計算它比它大幾倍?
S:嗯。
T:那要怎麼算?
S:不知道。
T:好,那我問你 5 是 3 的幾倍大?
S:5/3 倍。
T:是 5 去…
S:除以 3。
T:除以 3 嘛,所以現在是要變成 Alice 的身高是…
S:它(Alice)去除以它(Plato)。
其餘 2 名學生由訪談者直接告知比例計算方式:
S06_Q02
T:你先想想看這個縮放的比例要怎麼算?
S:(在 pj resize howMuch = object only 的 more 清單中尋找)
37
S:(修改 pj resize howMuch = object only 為 pj resize howMuch = object and parts)
T:其實就是 Alice 的身高除以小孩的身高啊!
4. 物件身高函式的取用
4. 物件身高函式的取用