第四章 結果與討論
第三節 心智模型
心智模型主要從學生的第一階段的程式小專題及二階段成就測驗的設計程 式題的程式碼,配合個別訪談及課堂觀察進行分析。從訪談的結果發現,機器 人程式設計的學生和傳統程式設計的學生,表達程式概念的方式和Pennington
(1987)及 Wiedenbeck(1999)的發現類似。
Pennington(1987)將學生對程式概念的方式主要分為「領域模型(domain model)」和「程式模型(program model)」兩種,Wiedenbeck 及 Ramalingam(1999)
參考Pennington 的分類方式,探討學習物件導向程式設計的學生和學習程序性 程式設計的學生表達程式概念的方式,結果發現學習物件導向程式設計的學生 傾向以領域模型描述程式概念,學習程序性程式設計的學生傾向以程式模型描 述程式概念。
使用機器人的學生們在表達他們對程式的概念時,傾向以機器人或生活上 的例子說明。一位學生在期末訪談時舉例說明while 的時候說:「車子(指機器 人)撞到(指障礙物)就轉彎,情況一,車子一直撞它就會一直轉彎,如果都 沒有撞到,它就不會轉彎。」。雖然訪談時,學生們都已接觸過傳統式的程式設 計教學,但是學生仍常會以機器人的例子來表達他們的想法。以Pennington
(1987)的分類方式來看,學生比較傾向以領域模型表達他們對程式的理解。
傳統組的學生在表達程式概念時,以Pennington(1987)的分類方式來看 傾向以程式模型來說明程式設計的概念。一位學生解釋程式設計的概念的例 子:「while 是可以重覆執行,直到使用者輸入停止的條件。可用於處理大數量 的資料,或不符合指令條件。」;另一位學生解釋while 概念時表示:「就是當 這個啊(指while(x<5)),x 不等於五,就會執行這些(指 while 內的程式碼),
如果等於的話就是結束」。學生常以輸入、輸出、加到某數、重覆,這些用詞來 解釋程式碼,比較偏向由程式語言本身的結構說明程式概念。
從學生們的專題程式及第一階段成就測驗設計程式題的程式碼,分析結果
圖4-2(a)是具迷思概驗學生的程式碼,箭頭標記的部份是要讓機器人行走 在灰色線上的策略,當感應到太黑時(car.light_sensor()<40)修正,感應到太 白時(car.light_sensor()>60)修正,應是用一組 if-else 來完成這個工作,如圖 4-2(b)。
(a)錯誤 (b)正確
圖4-2 學生 while 和 if-else 誤用程式碼例 1
從第一次成就測驗當中發現另一種和上述不正確的心智模型類似的情況,
學生會將if 和 while 攪混,而出現 while 和 else 配對的情況,顯示學生容易對 while 和 if 的概念產生混淆,如圖 4-3。
(a)錯誤 (b)正確
圖4-3 學生 while 和 if-else 誤用程式碼例 2
從學生的個別訪談得知,在第一階段的課程中,學生將循序的概念應用在 while 迴圈中,他們並未真正瞭解 while 迴圈的概念,只知道 while(true)是會「不 斷重複」當while 的條件判斷不是 true 時,它和 if-else 的意義相同。因此在程 式專題和成就測驗時,具迷思概念的學生就會使用while 來取代 if-else。
從課堂觀察到學生誤用while 的情況,第四單元的習題三題目要求是:「…
當機器車碰撞到障礙物時,停車。」學生知道機器人程式應停止,而且知道 while(true)可以不斷重覆,因此撰寫出如圖 4-4 的程式碼。圈起來的部份學生利 用while(car.touch_sensor())來讓機器人停止,那位學生表示:「因為『當機器車
if (car.light_sensor()>50){
car.rotate(1);
if (car.light_sensor()>50){
car.rotate(1);
} else{
car.travel(1);
}
while (car.touch_sensor()){
car.stop();
} }
就是每走一小步就偵測一次感應器,因此使用while 迴圈是不可免。第四和第 五單元加入光感應器之後,只要使用觸碰感應器或光感應器,學生的程式都必 須加入while 迴圈或 while 迴圈內含 if-else 的巢狀結構。若是學生不瞭解每走一 步要偵測一次的策略,就很容易型成「while 和 if-else 誤用」的迷思概念。
第二階段的教學活動將for 迴圈的概念教給學生,並教師於每次上課都會 複習if-else、for 迴圈、while 迴圈的觀念。第二階段的課堂觀察並未觀察到學 生「while 和 if-else 誤用」情況有無改進,因為在課堂的練習題很少發現學生使 用while 迴圈,大多都是使用在第二階段教的 for 迴圈來解題。第二階段成就測 驗,研究者有規劃一題需使用while 迴圈及 if-else 解題,用以驗證學生是否仍 具有在第一階段產生的while 迴圈的迷思概念。能正確回答的學生都已具備正 確的while 迴圈的概念,而答錯的學生大部份是以 for 迴圈解題,少有看到「while 迴圈和if-else 誤用」的迷思概念。從最後的個別訪談當中,我們發現大部份的 訪談對向都已具備有正確的while 迴圈概念。
二、傳統組
傳統組的學生在小專題的程式碼方面也有少部份的學生具有「while 和 if-else 誤用」的迷思概念,如圖 4-5(a)箭頭所指的部份。這個專題是設計一個 比大小的程式,學生以x 表示玩家猜大或小,bs 為骰子的大或小,在此可以用 一組if-else 來完成這項功能,但很明顯學生誤用 while 來取代 if-else。在專題中 僅少數學生,但是在第一階段成就測驗時,發現部份學生也出現用while 和 else 配對的情況。從課堂的觀察,學生具有「while 和 if-else 誤用」迷思概念的情 況並不明顯。
(a)錯誤
(b)正確
圖4-5 學生 while 和 if-else 誤用程式碼例 3
在最後個別訪談詢問「while 和 if 的差別」時,一位學生在剛開始描述時,
出現了while 和 if 混淆的陳述「就它(指 if)可能條件說x大於零或是什麼,
輸入值大於零的話它才繼續一直跑,如果不是的話他可能就會執行其他的指令
(指else)。」,再追問「你這邊說它(指if)會一直執行?」學生回答「可能。」。
三、小結
機器人組和傳統組,在表達心智模型的方式有差別,以Pennington(1987)
的分類方式,機器人組的學生傾向領域模型的表達方式,而傳統組的學生傾向 以程式模型來表達。這個結果類似Wiedenbeck 及 Ramalingam(1999)探討學 生理解程序性和物件導向的程式的結果。
使用機器人的學生較容易產生領域模型,學生以機器人問題領域的思考方 式解題。本研究發現機器人組的學生對while 迴圈的概念較傳統組容易產生
「while 和 if-else 誤用」的迷思概念。因為控制機器人常需要搭配 while 迴圈,
若學生對於每走一步就偵測一次的策略不熟悉就容易出現「while 和 if-else 誤 用」的迷思概念。但是在兩階段的教學結束後,大部份的學生都已矯正成為正 確的心智模型。從個別訪談的結果沒有發現學生有「while 和 if-else 誤用」的 相關陳述,以及第二階段成就測驗的程式碼分析僅只有少數學生可能仍具有
「while 和 if-else 誤用」的迷思概念。
使用機器人能較容易產生領域模型,而傳統程式設計較容易產生程式模 型,Pennington(1987)指出若能交互運用二種模型來解讀程式會有最佳的程 式理解。若能妥善運用機器人易形成領域模型之特性,輔以傳統之程式設計教 學是否能更提升程式設計之學習效果,會是一有趣之議題。