附錄一 配對程式設計學習單
◎ 配對程式設計以兩人一組為原則進行程式設計。
◎ 配對程式設計的角色分配:
操作者:負責操作鍵盤、滑鼠,並進行設計程式及輸入程式的工作。
觀察者:提供參考資料(如:講義、筆記等)幫助操作者發展程式、並 負責檢查程式、排除錯誤等工作。
◎ 配對程式設計實施的要點:
操作者與觀察者要在一定時間後互換角色,請聽從老師的指示交換角 色。
操作者與觀察者的地位相同,因此必須為小組的任務共同負責。
◎ 範例影片一
本片描述一個配對程式設計的過程。志弘與仁輔兩個人要透過配對程式 設計完成一個任務,請各位快速地瀏覽下列題目後仔細觀看影片,因為 答案就在影片中~~~
討論一:影片開始誰是觀察者? 誰是操作者?
討論二:志弘做了哪些事?你認為符合他的角色嗎?
討論三:仁輔做了哪些事?你認為符合他的角色嗎?
◎ 範例影片二
本片同樣是描述對程式設計的過程,根據範例影片一的討論結果,請觀 察觀察妮基妮基妮基—妮基———藍衣黑藍衣黑藍衣黑藍衣黑髮女髮女髮女髮女與瑞秋瑞秋瑞秋瑞秋————時尚雜誌女時尚雜誌女時尚雜誌女的配對行為,並回答下列時尚雜誌女 的問題:
討論一:你認為誰是觀察者?
你認為誰是操作者?
討論二:就你的觀察,瑞秋的行為符合配對程式設計的原則嗎?為什麼?
討論三:就你的觀察,妮基的行為符合配對程式設計的原則嗎?為什麼?
討論四:若範例影片二的專案最後失敗了,你覺得誰該負責?為什麼?
討論五:若範例影片二的情形發生在你的小組,你會如何解決?
附錄二 程式設計測驗
1.請問以下的程式執行後機器車會走出什麼樣軌跡?請用線條畫出來。
2.有一機器車的程式如下,請問程式執行後機器車會走出什麼樣軌跡?
(黑色的光感應值為 0;白色的光感應值為 100)
1:/******************程式開始******************/
2: int x = 10;
3: int y = 2;
4: int L = 9*x;
5: int M = x+10*y;
6: car.travel(x);
7: car.rotate(L);
8: car.travel(M);
9: car.stop();
10: /******************程式結束******************/
10cm
1:/****程式開始****/
2: while (true){
3: car.travel(1);
4: if(car.light_sensor()<50){
5: car.rotate(90);
6: }
7: }
8:/****程式結束****/
3.請問以下的程式執行後機器車會走出什麼樣軌跡?請畫出來。
1:/******************程式開始******************/
2: int counter = 1;
3: while (counter <= 3){
4: car.travel(20);
5: car.rotate(90);
6: counter = counter +1;
7: }
8: car.stop();
9:/******************程式結束******************/
10cm
4.有一張尋寶圖,裡面記載的尋寶指示如下:
(1)在十字路口遇到黑色方塊時,右轉。
(2)在十字路口遇到障礙物時,後退 2 公分,左轉。
(3)其它情況,直走。
依照這樣的方式行走,最後就會找到寶藏。
試寫一程式讓機器車找到寶藏,走到藏寶地點即算成功,不必不必不必不必考慮是否讓車子 停下來。
註:地圖上 表示障礙物; 表示黑色方塊(光感應值 0)。
/************************程式開始*******************/
/************************程式結束*******************/
5.請設計一程式讓機器車可以由起點走到終點,停車。
(黑色部份光感應值為 0,其餘白色部份為 100)
/************************程式開始*******************/
/************************程式結束*******************/
起點 終點
附錄三 程式設計態度問卷
以下問題是針對這幾週的程式設計學習活動,請據實表達您的想法。請在每 題勾選您同意的程度。
問 題 非常 非常 同意 不同意
1.我能夠瞭解程式指令
(如:while, if – else, counter = counter + 1 等) □ □ □ □ □
2.我能讀得懂整段的程式碼 □ □ □ □ □
3.當程式執行錯誤時,我可以找出程式的錯誤 □ □ □ □ □
4.我能夠想出程式問題的解法 □ □ □ □ □
5.我能夠將問題解法寫成程式碼 □ □ □ □ □
6.我覺得學習程式設計很有成就感 □ □ □ □ □
7.我覺得學習程式設計很有挑戰性 □ □ □ □ □
8.我覺得學習程式設計很有趣 □ □ □ □ □
9.我希望以後有機會學習更多的程式設計 □ □ □ □ □
附錄四 配對程式設計態度問卷
以下問題是針對這幾週的配對程式設計學習活動,請據實表達您的想法。請 在每題勾選您同意的程度。
問 題 非常 非常 同意 不同意
1.配對程式設計時,我比平常更認真學習 □ □ □ □ □
2.我與夥伴常能討論出更好的解法或程式碼 □ □ □ □ □ 3.配對程式設計時,我與夥伴都會提出自己的想法 □ □ □ □ □
4.我與夥伴都會一起設計與修改程式碼 □ □ □ □ □
5.程式錯誤時,我與夥伴會試著解釋錯誤的原因 □ □ □ □ □ 6.配對程式設計時,我從夥伴身上也學會一些東西 □ □ □ □ □
7.我與夥伴互相信任對方 □ □ □ □ □
8.我知道操作者應該做的工作 □ □ □ □ □
9.我知道觀察者應該做的工作 □ □ □ □ □
10.我喜歡擔任操作者 □ □ □ □ □
11.我喜歡擔任觀察者 □ □ □ □ □
12.我覺得觀察者角色是可有可無的 □ □ □ □ □
13.我的小組並不會特別去區分誰是操作者或觀察者 □ □ □ □ □
14.我的夥伴常不參與我們的配對活動 □ □ □ □ □
15.我覺得配對程式設計讓我學得更好 □ □ □ □ □
16.配對程式設計讓學習更有趣 □ □ □ □ □
17.我希望以後有機會能再以配對的方式學習 □ □ □ □ □
附錄五 課堂觀察表
單元: 班級: 觀察日期: 觀察者:
一、配對實施情形(角色交換、互動情形…等)
二、學生學習情形 1. 觀念理解情形
2. 上課氣氛
3. 工具操作
三、學生常問的問題
四、改進建議
附錄六 講義示例
22
22----111 1 程式的循序結構程式的循序結構程式的循序結構程式的循序結構
程式的內容次序與程式執行的結果有密切的關係,不同的次序會導致不同的 執行結果,會依照其程式內容依序執行之,而 java 程式執行的方式即是依序由 上至下執行。
例如:在單元一當中,機器車校正的程式(CorrectCar.java),有一段是 這樣寫的:
1:/******************程式開始******************/
2: car.travel(100); //向前100公分 3: car.rotate(360); //轉360度
4:/******************程式結束******************/
【
【
【
【馬上做馬上做馬上做馬上做】】】】
若是我們將 CorrectCar.java 的第2行和第3行對調,那麼機器車的動作就 會變成先轉 360 度,然後再向前走,現在請按照上述說明更改 CorrectCar.java 檔,看看機器車是不是真的改變動作了呢?
22
22----222 2 變數變數變數變數
顧名思義,變數在程式執行的過程中會產生變化,我們進一步以「儲存程式 執行資料與運算結果的位置」來定義變數,則更為貼切。
不同的變數型態,所需要記憶空間的大小也不盡相同,變數的型態有那些,常用 者列舉如下:
變數型態 變數描述 所佔位元數 適用範圍
Int 整數 32 -2147482648~2147483647
float 單精度之浮點數 32 一般有小數之情形
double 倍精度之浮點數 64 同 float,表示範圍更大
boolean 布林型態 1 True / False
在我們樂高程式設計裡面,最常用到的變數形態為「整數(int)」,常常 用來代表要行走的距離,或者是計算碰撞的次數。變數的宣告方式如下:
1:/******************變數宣告方式******************/
2: intint x = 30; //宣告一個整數的變數 x 並將30存入 intint 3: intint y = 3*x; //宣告一個整數的變數 y 並將x的三倍存intint 入
在第2行,intintintint 為要宣告的變數種類;在此的「=」類似數學中的「x 等於 30」,它的意思是將在它右邊的值,存入它左邊的變數,我們可以把「=」想像 成是「指定」的意思。
22
22----333 3 運算子運算子運算子運算子
程式中為了要操作與使用變數,我們必須藉由運算子(operator) ,也就是 運算符號的幫助,來處理這些資料。在符合 Java 語法與可執行的兩大前提下,
運算子與變數的結合,我們稱為運算式。
如同在數學中時常運用到的加、減、乘、除四則運算,程式語言中也有對應 的運算子。
【程式中的運算】
加法(+),例:x+y 減法(-),例:x-y
乘法(*),例:x*y 除法(/),例:x /y
2 2 2
2----444 4 例題與解析例題與解析例題與解析例題與解析
例題:【【【【檔案名稱檔案名稱檔案名稱檔案名稱:::Ex2:Ex2Ex2】Ex2】】】
請設計一個程式,讓機器車先向前走x公分(x = 30),然後左轉y度(y = 3x),之後再向前走z公分(z = y - x)。
問題解析問題解析 問題解析問題解析::::
1. 機器車要完成這個題目,必需要有兩種動作,「前進」及「轉彎」。
2. 我們可以利用變數來儲存題目中要求的 x、y、z 三個未知數。
3. 我的想法:
○2 ○3
○1
x
y z
1. 宣告變數代表機器車前進或轉彎的數值 2. 命令機器車往前走 30 公分
3. 命令機器車向左轉(3×30)=90 度 4. 命令機器車往前走(90-30)=60 公分
4. 綜合上述內容我們可以寫出以下的程式:
1:/******************程式開始******************/
2: int x = 30; //宣告一個型態為「整數」的變數x,並存入 30
3: int y = 3*x; //宣告一個變數y,並將x 的值乘以三倍存入 y
4: int z = y-x; //宣告一個變數z,並將y-x 的值存入 5: car.travel(x); //前進x 公分,當x 為正車子前進,為 負車子後退
6: car.rotate(y); //左轉y 度,當y 為負車子左轉,為負 車子右轉
7: car.travel(z); //前進z 公分 8: car.stop(); //停車
9:/******************程式結束******************/
註:在程式中,「//」符號後面的字為說明文字,不屬於程式
◎ 試一試試一試試一試 試一試
(1) 將第2行的 x 改為 60,再執行一次,會走出怎樣的路徑?
我的想法:
(2) 將第6行的 car.rotate(y)改寫成 car.rotate(3*x)是否能走出同樣的路 徑?
我的想法:
(3) 如果把第6行和第7行對調,會走出怎樣的路徑?
我的想法:
2 2 2
2----555 5 牛刀小試牛刀小試牛刀小試牛刀小試
習題一【【【【檔案名稱檔案名稱檔案名稱檔案名稱:::Ex2Hw1:Ex2Hw1Ex2Hw1】Ex2Hw1】】】
請設計一段程式讓機器車可以走出一寬 30 公分,長 60 公分的長方形
習題一程式碼 習題一程式碼 習題一程式碼 習題一程式碼::: :
【課堂筆記】
30cm
60cm
我的想法:
/**********************************程式開始**********************************/
/**********************************程式結束**********************************/
習題二【檔案名稱:Ex2Hw2】
請設計一個程式使機器車能以順時針方向,走出如下圖五所示的ㄇ字型迷 宮。(注意:請自行預估機器車要行走的距離。)
習題二程式碼 習題二程式碼 習題二程式碼 習題二程式碼::: :
【課堂筆記】
80cm
70cm
20cm
我的想法:
/**********************************程式開始**********************************/
/**********************************程式結束**********************************/
習題三【檔案名稱:Ex2Hw3】
請設計一個程式使機器車能走出下面的圖形,先走 20 公分,然後轉一個彎,
而每轉一次彎,行走的距離就增加 20 公分,最後走出如下圖所示的路徑
習題三程式碼 習題三程式碼 習題三程式碼 習題三程式碼::: :
【課堂筆記】
60˚
20cm 60˚
60˚
我的想法:
/**********************************程式開始**********************************/
/**********************************程式結束**********************************/
60˚
習題四【檔案名稱:Ex2Hw3】
請在 Ex2Hw3.java 中撰寫一程式,使得機器車能走一個邊長 20 公分的正三 角形。
註:(1)本題請使用變數的觀念。
(2)機器車走完正三角形後,車頭的方向要與出發時相同。
習題 習題 習題
習題四四四四程式碼程式碼程式碼程式碼::: :
【課堂筆記】
我的想法:
/**********************************程式開始**********************************/
/**********************************程式結束**********************************/