• 沒有找到結果。

第三章 研究方法

第四節 資料收集工具

本研究設計了 9 題實作題目供研究對象進行解題以收集研究資料,同時以 軟、硬體記錄研究對象的解題過程,以下分別詳述之。

一、實作題目:

研究者根據學生過去的學習經驗與電腦課程內容,列舉出初學 Alice 程式設 計者應學會的程式設計概念,包含物件、內建方法(built-in methods)、運算式、

內建函式、變數、選擇結構、重複結構、陣列、自訂方法(user-defined methods)

和參數,再針對這些概念設計了 9 個複雜度漸進的 Alice 程式設計題目,並由三 位現任高中職電腦科教師進行審閱,再根據其意見進行修正與調整。

每個實作題目均包含複數的程式概念,題號越大的題目所包含的程式設計概 念越多,並且涵蓋之前的題目所使用的概念。如此安排的目的為若是學生依照題

16

(Programming Constructs)

17

動作。此外,本題亦須使用控制結構 Do in order 和 Do together 來控制物件動作發 生的時序。

在場景中建立一個任意物件。

按下執行後,依序執行以下動作

1 物件說「Jump 1.」。 2 讓物件同時執行動作 2.1 與 2.2。

2.1 物件 2 秒內變成其它顏色。

2.2 物件 2 秒內完成跳躍的動作。

3 物件說「Jump 2.」。 4 讓物件同時執行動作 4.1 與 4.2。

4.1 物件 2 秒內再次變成其它顏色。

4.2 物件 2 秒內完成跳躍的動作。

圖 3.2 第一題程式執行示意圖

第二題至第六題為一連續的題組,以內建方法 resize 為主題,每題依序加入 不同的程式設計概念。

第二題:內建函式

本題(圖 3.3)要求程式設計者在場景中建立任兩個身高互異的物件,於程 式執行時,改變矮物件的大小,使其與高物件同高。程式設計者必須使用物件的

18

函式(functions)進行數學運算,並將其設定為物件內建方法所接收的參數。此 題依然需要使用第一題中運用內建方法與控制結構的技巧。

在場景中建立兩個身高相異的物件(以下以身高較高的物件為物件 1,較矮的為物件 2)

按下執行後,依以下順序執行動作 1 物件 2 同時執行動作 1.1 與 1.2:

1.1 物件 2 說「Resize as high as (物件 1 之名稱).」。

1.2 透過物件內建方法 Resize 來進行物件大小的改變,使得物件 2 放大至與物件 1 相同 身高。

圖 3.3 第二題程式執行示意圖

第三題:變數

本題(圖 3.4)要求程式設計者在場景中建立任兩個身高互異的物件,於程 式執行時,改變矮物件的大小,使其與高物件同高後,再恢復為原本身高。延續 前一題所使用的方法,本題新增之程式設計概念為變數(variable)的宣告與使用。

由於矮物件增高至與高物件同高後,必須再恢復為原身高,程式設計者必須使用 一個變數來儲存矮物件原本的身高,才能順利將矮物件縮小為原來的身高。

19

第四題:選擇結構

本題(圖 3.5)要求程式設計者在場景中建立任兩個身高互異的物件,於程 式執行時,先要求使用者輸入一個數字,並根據使用者輸入的數字進行動作。若 使用者輸入的數字為正數,則改變矮物件的大小,使其與高物件同高後,再恢復 為原本身高;若使用者輸入的數字為負數,則改變高物件的大小,使其與矮物件 同高後,再恢復為原本身高。本題加入選擇結構(if/else)的使用,程式設計者必 須能理解判斷條件的設定方法,並能依條件判斷結果執行相對應的動作,方能完 成此題。

第五題:重複結構(固定次數)

本題(圖 3.6)要求程式設計者在場景中建立任兩個身高互異的物件,於程 式執行時,先要求使用者輸入一個數字,並根據使用者輸入的數字進行動作。若 使用者輸入的數字為正數,則重複改變矮物件的大小三次,使其與高物件同高 後,再恢復為原本身高;若使用者輸入的數字為負數,則重複改變高物件的大小 三次,使其與矮物件同高後,再恢復為原本身高。本題必須使用重複結構(loop)

進行實作。若程式設計者並未使用 loop,而是以複製目標動作程式碼三次作為解 題方法,訪談者將介入提問,以確保程式設計者使用重複結構進行解題。

第六題:重複結構(不定次數)

本題(圖 3.7)與第五題相似,差別僅在於重複執行的次數乃是由使用者於 程式執行時輸入之數字所決定;換言之,本題著重於透過變數來控制重複結構的 執行次數。程式設計者必須正確處理變數並運用於重複結構之中,程式方可正確 執行。

20

在場景中建立兩個身高相異的物件(以下以身高較高的物件為物件 1,較矮的為物件 2)

按下執行後,依以下順序執行動作 1. 物件 2 同時執行動作 1.1 與 1.2

1.1 物件 2 說「Resize as high as (物件 1 之名稱).」。

1.2 透過物件內建方法 Resize 來進行物件大小的改變,使得物件 2 放大至與物件 1 相同 身高。

2. 物件 2 同時執行動作 2.1 與 2.2

2.1 物件 2 說「Resize to former height.」。

2.2 透過物件內建方法 Resize 來進行物件大小的改變,使得物件 2 恢復原來的身高。

圖 3.4 第三題程式執行示意圖

21

在場景中建立兩個身高相異的物件(以下以身高較高的物件為物件 1,較矮的為物件 2)

按下執行後,依以下順序執行動作 1. 要求使用者輸入一個數字 N。

2. 若 N > 0,則依序執行動作 2.1 與 2.2。

2.1 物件 2 同時執行動作 2.1.1 與 2.1.2。

2.1.1 物件 2 說「Resize as high as (物 件 1 之名稱).」。

2.1.2 改變物件 2 的大小,使得物件 2 的放大至與物件 1 相同身高。

2.2 物件 2 同時執行動作 2.2.1 與 2.2.2:

2.2.1 物件 2 說「Resize to former height.」。

2.2.2 改變物件 2 的大小,使得物件 2 恢復原來的身高。

3. 若 N < 0,則依序執行動作 3.1 與 3.2。

3.1 物件 1 同時執行動作 3.1.1 與 3.1.2。

3.1.1 物件 1 說「Resize as high as (物 件 2 之名稱).」。

3.1.2 改變物件 1 的大小,使得物件 1 的縮小至與物件 2 相同身高。

3.2 物件 1 同時執行動作 3.2.1 與 3.2.2:

3.2.1 物件 1 說「Resize to former height.」。

3.2.2 改變物件 1 的大小,使得物件 1 恢復原來的身高。

圖 3.5 第四題程式執行示意圖

22

在場景中建立兩個身高相異的物件(以下以身高較高的物件為物件 1,較矮的為物件 2)

按下執行後,依以下順序執行動作 1. 要求使用者輸入一個數字 N。

2. 若 N > 0,則重複執行動作 2.1 與 2.2 三次。

2.1 物件 2 同時執行動作 2.1.1 與 2.1.2。

2.1.1 物件 2 說「Resize as high as (物 件 1 之名稱).」。

2.1.2 改變物件 2 的大小,使得物件 2 的放大至與物件 1 相同身高。

2.2 物件 2 同時執行動作 2.2.1 與 2.2.2:

2.2.1 物件 2 說「Resize to former height.」。

2.2.2 改變物件 2 的大小,使得物件 2 恢復原來的身高。

3. 若 N < 0,則重複執行動作 3.1 與 3.2 三次。

3.1 物件 1 同時執行動作 3.1.1 與 3.1.2。

3.1.1 物件 1 說「Resize as high as (物 件 2 之名稱).」。

3.1.2 改變物件 1 的大小,使得物件 1 的縮小至與物件 2 相同身高。

3.2 物件 1 同時執行動作 3.2.1 與 3.2.2:

3.2.1 物件 1 說「Resize to former height.」。

3.2.2 改變物件 1 的大小,使得物件 1 恢復原來的身高。

圖 3.6 第五題程式執行示意圖

23

在場景中建立兩個身高相異的物件(以下以身高較高的物件為物件 1,較矮的為物件 2)

按下執行後,依以下順序執行動作 1. 要求使用者輸入一個數字 N。

2. 若 N > 0,則重複執行動作 2.1 與 2.2 N 次。

2.1 物件 2 同時執行動作 2.1.1 與 2.1.2。

2.1.1 物件 2 說「Resize as high as (物 件 1 之名稱).」。

2.1.2 改變物件 2 的大小,使得物件 2 的放大至與物件 1 相同身高。

2.2 物件 2 同時執行動作 2.2.1 與 2.2.2:

2.2.1 物件 2 說「Resize to former height.」。

2.2.2 改變物件 2 的大小,使得物件 2 恢復原來的身高。

3. 若 N < 0,則重複執行動作 3.1 與 3.2 |N|次。

3.1 物件 1 同時執行動作 3.1.1 與 3.1.2。

3.1.1 物件 1 說「Resize as high as (物 件 2 之名稱).」。

3.1.2 改變物件 1 的大小,使得物件 1 的縮小至與物件 2 相同身高。

3.2 物件 1 同時執行動作 3.2.1 與 3.2.2:

3.2.1 物件 1 說「Resize to former height.」。

3.2.2 改變物件 1 的大小,使得物件 1 恢復原來的身高。

圖 3.7 第六題程式執行示意圖

24

在場景中建立視覺化陣列(ArrayVisualization),並在上面放置任意五個身高互異的物件

按下執行後,依以下順序執行動作 1 要求使用者輸入一個數字 N。

2 若 N > 0,則依序使陣列上的每個物件同時 執行動作 2.1、2.2。

2.1 透過物件內建方法 Resize 來進行物 件大小的改變,將該物件的身高調 成和最左邊的物件一樣高。

2.2 讓該物件右轉 1/4 圈。

3 若 N < 0,則依序使陣列上的每個物件同 時執行動作 3.1、3.2。

3.1 透過物件內建方法 Resize 來進行物 件大小的改變,將該物件的身高調 成和最右邊的物件一樣高。

3.2 讓該物件左轉 1/4 圈。

圖 3.8 第七題至第九題程式執行示意圖

第七題至第九題的程式執行結果皆相同,僅使用方法不同。因此在每題開始 前,訪談者將直接說明該題所需使用之程式設計概念,確保程式設計者使用符合 要求之概念進行解題。

第七題:陣列

本題(圖 3.8)要求程式設計者在場景中建立五個身高互異的物件,並將其 放置於視覺化陣列中。程式執行時,先要求使用者輸入一個數字,並根據使用者 輸入的數字進行動作。若使用者輸入的數字為正數,則陣列中所有物件依序改變

25

物件大小與最左邊的人同高,並右轉 90 度;若使用者輸入的數字為負數,則陣 列中所有物件依序改變物件大小與最右邊的人同高,並左轉 90 度。本題要求程 式設計者正確地宣告視覺化陣列,並理解物件在陣列中位置與陣列索引值的對應 關係,方能順利對目標物件進行動作。

第八題:自訂方法

本題的程式執行結果如第七題(圖 3.8),但要求程式設計者必須於程式中宣 告兩個自訂方法(user-defined methods),分別包裝輸入數字為正數或負數的兩種 對應動作。程式設計者必須理解如何宣告自訂方法,並於程式呼叫使用該方法。

第九題:參數

本題的程式執行結果如第七題(圖 3.8),但程式設計者於此題中須將程式包 裝成一個自訂方法,並透過傳遞參數的方式,將使用者輸入的數字傳入自訂方法 中,以作為選擇結構判斷的依據。本題的重點在於如何宣告、傳遞與使用參數。

二、資料收集工具:

本次實驗採用螢幕錄製軟體 PowerCam(http://www.powercam.com.tw)將參 與者的解題過程以錄影的形式進行記錄,同時運用軟體功能,搭配外接麥克風將 參與者與訪談者的問答及對話內容同步記錄。

相關文件