• 沒有找到結果。

第四章 結果與討論

第三節 綜合討論

在本次診斷性訪談測驗中,研究者根據觀察學生實作程式專案時所見的情 形,提出以下幾項建議:

一、 程式概念

由於 Alice 的程式執行結果能以動畫形式呈現,故物件、物件內建方法及控 制結構(if/else、loop、do together 及 do in order)皆可輕易化為程式執行動畫中 可被學生觀察到的具體現象。對於這些可被具體觀察的項目,學生較能將其與對 應的程式概念進行連結,訪談者通常僅需提示「需要執行OO動作」,學生便能 發現自己所缺漏的部分。反之,諸如變數及參數這種屬於程式內部資料管理機制 的程式概念,無法直接透過動畫具體呈現其功能,因此學生往往無法將這些概念 與程式的執行過程進行連結。建議教師在講授此類概念時,除了強調其功能及使 用方法外,另可搭配 print(列印)指令,將變數及參數值之變化情形列印出來,

使其成為程式執行過程中可被觀察的對象。

大部分的學生對於程式概念的理解僅有單一面向,會認為「OO控制結構是 專門用來執行XX動作」。以 loop 為例:許多學生認為重複結構 loop 只能針對特 定物件動作重複執行,因此在控制陣列中不同的物件時,需要訪談者提示才知道 可以使用 loop。建議教師在講授程式概念時,可搭配多樣化的例題進行講解,協 助學生徹底理解該概念的應用範圍和使用時機。

二、 程式解題技巧

在實作程式專案時,學生往往在觀察完題目所需執行的流程及動作後,便直 接開始進行解題,並未規劃程式流程或思考問題的解決方法,導致如身高縮放錯 誤、無法順利設定判斷條件等邏輯錯誤。研究者推測此一狀況的發生是由於題目 皆以動畫形式呈現,學生將動畫中的個別動作作為處理單元,認為依照動畫中物

95

件動作選取正確程式碼即可。建議教師應教導學生在面對任何程式問題時,宜先 思考程式的整體流程、判斷條件、輸入-輸出之間的對應關係,如此將有助於避 免許多邏輯錯誤的發生。

和傳統文字類的程式語言(如 Java 或 C++)相比, Alice 程式通常使用物件 而非變數作為主要的操作對象,因此造成學生在面對問題時,較容易以尋找物件 所包含之函式或方法的方式嘗試解題,而非將重要的資訊透過變數進行儲存及處 理。建議教師特別注意協助學生建立變數概念。

三、 數學相關問題

學生在部分題目中所遭遇的困難並非單純因為程式設計技巧不足,而是由於 學生無法正確處理題目中的數學計算或觀念。例如在第二題中,學生在得知方法 resize 的功能為縮放一定倍率後,仍有許多學生無法正確計算物件的比例。而在 第四題使用選擇結構進行輸入數值正負的判斷時,亦有部分學生因為無法將「數 字為正/負」的概念轉化為「大於/小於零」,而無法順利完成判斷條件的設定。

在第六題中,大多數學生在未找到絕對值函式的情況下,也無法透過數學計算將

「負數轉正」,導致迴圈無法順利執行。理論上一般高中生所具備的數學能力應 能順利處理這些計算或設定,究其原因,應非學生真的欠缺相關的數學概念,而 只是未曾想到必須將數學概念運用於程式解題中,因而一時無法將其以程式語法 表現出來而已。教師應可於規劃 Alice 程式範例時,適當地加入一些運用簡單數 學概念的題目,以幫助學生了解數學概念在程式中可能扮演的的角色。

四、 Alice 程式語言與程式設計介面的相關問題

研究者發現在實作 Alice 程式時,有數種情況是由於 Alice 程式語言本身設計 導致學生較容易產生混淆的地方,分述於下。

1. 3D 物件建模:Alice 中的 3D 物件在執行動作時,皆是以物件的中心點為動作 基準點。但是各物件的中心點皆不盡相同,導致物件在執行動作時會因為中

96

心點位置的不同而產生動畫演出上的差異。以方法 reszie 為例,若物件中心點 位於物件正中央時,放大會使其插入地面下,縮小時則會使其浮至半空中。

這個情況除了增加觀察困難,也可能造成學生誤認自己的程式發生邏輯錯 誤。教師除了在製作範例時應注意物件的選用之外,也應提醒學生在練習時,

選取中心點位置相同的物件進行實作。

2. 物件屬性的修改:一般物件的屬性區中包含該物件的顏色(color)、透明度

(opacity)、外觀材質(skin texture)、物件位置(point of view)及裝填風格

(filling style,物件呈現的樣子)等物件外觀方面的設定值。程式設計者若想 在程式執行過程中變動這些外觀項目,必須將屬性區中的對應項目直接拖曳 至程式中,而非透過物件內建的方法(method)。學生常會認為「物件的動作」

皆是透過物件方法來實作,如第一題中使物件改變顏色,有不少學生在物件 方法庫及函式庫中尋找未果,需由訪談者告知物件顏色位於物件的屬性區中 方可正確拖曳。建議教師在教學時,需說明清楚物件屬性、方法及函式的意 義及用途。

3. 視覺化陣列元素的使用:在 Alice 程式語言中,雖然視覺化陣列中的元素多為 物件,但卻無法直接取得個別元素的屬性、方法及函式。若需取用,必須先 拖曳其他物件的屬性、方法及函式後,再使用陣列元素取代該物件。此操作 並不直觀,往往為學生帶來很大的困擾。建議教師在讓學生實作視覺化陣列 相關題目時,強調取用陣列元素屬性、方法及函式的步驟。

4. 自訂元件命名規範不夠嚴謹:當使用者宣告變數、參數及自訂方法時,可使 用數字、結構名稱(如 if、else)、甚至部分標點符號作為該元件的名稱。某些 部分學生在編寫程式的過程中,因為將數字作為變數名稱使用於程式之中,

導致錯誤的程式碼看起來語意通順而無法順利進行除錯,例如:圖 4.25 中 if 判斷式之判斷條件為「若使用者輸入數字大於變數 5」,圖 4.26 中判斷條件為

「若使用者輸入數字大於常數 5」,在 Alice 顯示上兩者之間僅有微小的顏色差 異,若不注意很容易造成誤解。除了建議 Alice 應適度添加命名規範外,也建

97

議教師在課程中強調良好命名習慣的重要性。

圖 4.25 變數名稱混淆範例(變數版本)

圖 4.26 變數名稱混淆範例(常數版本)

5. 視覺化陣列的宣告:當使用者進行視覺化陣列的宣告時,必須點擊 new item 按鈕來增加陣列的長度。但是 Alice 僅提供增加長度的按鈕,並未提供減少長 度的功能,因此若是使用者不小心多按了幾次按鈕使得陣列長度過長,他無 法進行修改,必須刪除整個陣列重新宣告。建議 Alice 應盡速將此進行修正。

98

相關文件