뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝...

24
62 附錄一 Lego Mindstorms 學習工具、程式編譯環境設 定程序 ======= 軟體安裝 ================= 1) 安裝 Java SDK 1.3.1. ex : C:\jdk1.3.12) 安裝 LeJOS Java SDK 的相同目錄中. ex : C:\jdk1.3.1\LeJOS3) 安裝 JCreator. ======= 軟體設定 JavaLeJOSJCreator================ 4) 若使用 Win98, 將下列指令加入 autoexec.bat 即可 set JAVA_HOME=C:\jdk1.3.1 set LEJOS_HOME=C:\jdk1.3.1\lejos set PATH=%PATH%;%JAVA_HOME%\bin;%LEJOS_HOME%\bin set RCXTTY=USB (如果是用 com port, 則是 COM1 or COM2) set CLASSPATH=. 5) 若使用 Win2000, 請按照下列步驟 開啟「控制台」,開啟「系統」 選「進階」==>「環境變數」==> 在「使用者變數」==> 「新增」==>「變 數名稱」加入 RCXTTY 、「變數值」加入 USB 6) 在「系統變數」==> 選「變數」PATH ==> 選「編輯」==> 「變數值」在開 始處加入 c:\jdk1.3.1\bin;c:\jdk1.3.1\lejos\bin; 7) JCreator 的設定 選「configure==> option==> JDK tools

Transcript of 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝...

Page 1: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

62

附錄一 Lego Mindstorms學習工具、程式編譯環境設

定程序

======= 軟體安裝 =================

1) 安裝 Java SDK 1.3.1. (ex : C:\jdk1.3.1)

2) 安裝 LeJOS於 Java SDK的相同目錄中. (ex : C:\jdk1.3.1\LeJOS)

3) 安裝 JCreator.

======= 軟體設定 (Java、LeJOS、JCreator)================

4) 若使用 Win98, 將下列指令加入 autoexec.bat即可

set JAVA_HOME=C:\jdk1.3.1

set LEJOS_HOME=C:\jdk1.3.1\lejos

set PATH=%PATH%;%JAVA_HOME%\bin;%LEJOS_HOME%\bin

set RCXTTY=USB (如果是用 com port, 則是 COM1 or COM2)

set CLASSPATH=.

5) 若使用 Win2000, 請按照下列步驟

開啟「控制台」,開啟「系統」

選「進階」==>「環境變數」==> 在「使用者變數」==> 「新增」==>「變

數名稱」加入 RCXTTY 、「變數值」加入 USB

6) 在「系統變數」==> 選「變數」PATH ==> 選「編輯」==> 「變數值」在開

始處加入 c:\jdk1.3.1\bin;c:\jdk1.3.1\lejos\bin;

7) JCreator 的設定

選「configure」==> 「option」==> 「JDK tools」

Page 2: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

63

==> 在下拉頁視窗,選「compiler」==> 選「new...」==> 在「name」鍵

入「LeJOS Compiler」。

==> 在「command」處,按「⋯」的按鈕,選「c:\jdk1.3.1\LeJOS\bin\lejosc.exe」。

==> 在「parameters」處,不要勾選「use class-path」==> 按「確定」結束。

==> 在下拉頁視窗,選「Run Application」==> 選「new...」==> 在「name」

鍵入「LeJOS Run」。

==> 在「command」處,按「⋯」的按鈕,選「c:\jdk1.3.1\LeJOS\bin\lejos.exe」,

並且勾選「Capture Output」。

==> 在「parameters」處,不要勾選「use class-path」==> 按「確定」結束。

8) 至此軟體設定完畢,重新開機。

========= Lego Mindstorms驅動程式的安裝 ==================

9) 開機完成後,接 USB的 IR TOWER,出現安裝驅動程式畫面,驅動程式在

Robolab 程式光碟中,讓程式自動搜尋即可。

至於 com port的 IR TOWER,在開機前先行接上即可。

========== JCreator程式編譯環境設定 ===========

10) 在 JCeator撰寫程式,需先開啟一個新的 workspace(「new...」==> 選

「workspace」),再開啟一個新的 project(「new...」==> 選「project」。

Lego的程式碼可直接在 JCreator的編輯區撰寫後,compile(「Build」==>

「compile file」),再 excute (「Build」==> 「Execute file」),RCX 要靠近 IR

Tower,以利傳輸程式。

11) JCreator 的 complier和Application run預定值皆為 Java,若要 compile lego 的

程式,在程式撰寫完畢需在「Project」中, 選「Project setting」==> 在「JDK

Tools」tab中,依序勾選「complier」中的「LeJOS Complier」「Run Application」

中的「LeJOS Run」。

Page 3: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

64

附錄二 實驗組的講義

單元五 重複迴圈(for)

壹、觀念介紹 人類之所以使用電腦,在於利用電腦的高運算速度與可大量重複執行同樣的動

作,例如我們可以編寫 Java程式,印出 1000個” Hello Dali ”字串,即使我們可以利用編輯器中「複製-貼上」功能快速完成這項作業,我們沒有必要寫出 1000行 System.out.println("Hello Dali ");這樣的程式。因為程式語言中提供了 for迴圈結構,可以重複執行工作,使用 for迴圈結構不僅可精簡我們的程式,也讓程式變得容易維護與修改。 二、 使用 for迴圈結構時,我們必須考量三個部分: 1、一開始的情況:我們稱之為「初始條件」,一般都從 1開始。 2、判斷的條件:能繼續執行 for迴圈的範圍為何,一旦條件不符合,就會結束迴圈。 3、每次變化的程度:如每次加 1、加 2、或減 2等等。 三、 和 If-else結構一樣,程式中也可使用多層 for迴圈結構,協助我們解決問題。 貳、操作範例 【例題 5-1】:請設計一個 Java程式,能計算與顯示 1+2+……+10之總和。 1、解析:本題利用 for迴圈結構,來控制數值的範圍。設計一變數為和(sum),再設計另一個變數 i從 1開始加入 sum中,i每次增加 1(公差),直到 10為止,並顯示計算之後的結果。 2、程式: 001://檔名:EX51.java

002://說明:計算 1-10 之和

003:public class EX51 {

004: public static void main (String args[]) {

005: int sum=0;

006: for (int i=1;i<=10;i++)// i++的意思是 i=i+1,i每次增加 1

007: {

008: sum=sum+i;

009: if (i<10)

010: System.out.print (i+"+");

011: else

012: System.out.print (i);

Page 4: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

65

013: }// for 程式區塊結束

014: System.out.println("="+sum);

015: }// main 程式區塊結束

016:} //計算總和 結束

3、說明: 006行 定義變數 i從 1開始,每次增加 1,直到 i=10。 008行 為主要算式。 009行 印出+號與連結數字,直到 1+…+9+10為止,10之後不再出現+號。 010行 設定程式能印出”1+2+3+…..+10”。 014行 設定程式能印出”1+2+3+…..+10=”與計算結果。 在此要提醒同學:在 010行、012行使用 System.out.print()指令,其目的是讓資能在同一行顯示出來,而 014行使用的 System.out.println()指令,有換行的效果,可使資料逐行印出。 【練習 5-1】:請參考例題 5-1,另建一 Java程式(檔名為 App51.java),使之能計算與顯示 2+4+……+200之總和,程式中必須使用 for迴圈結構。 【老師的提示】:i每次增加 2的運算式是 i+=2,或 I=i+2 【我的程式碼】 【練習 5-2】請撰寫程式(檔名為 App52.java),程式執行後印出以下圖案。

*

**

***

****

*****

******

*******

********

*********

********** 【老師的提示】 我們使用一個字串(string)變數,名稱為 str1,代表每一行印出的星星。 每執行一次程式,會印出一行星星,我們共執行了 10次。 第二行開始,每一行都比前一行多一個星星,有遞增的現象。 使用 for迴圈結構,使程式有擴展的彈性。

Page 5: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

66

【我的程式碼】 參、實作習題 在這實作單元中,我們會提供運用循序、自訂函數觀念的機器車程式範例。

請同學使用計次迴圈觀念設計相同結果的程式,同學可自行比較兩者的差

異。 【例題 5-2】:設計一 Java程式,執行後使機器車直線前進,每前進一秒後,馬達輸出馬力依序由第一級加速至第五級。 1、解析:我們可使用循序控制結構,寫出五段車子依不同馬力前進的程式段落,同時我們也利用單元四中自訂函數的觀念,建立一個前進函數,以

簡化程式的內容。 【參考指令】 指令 意義 範例 1 Motor.X.setPower(Y);

設定機器車馬達 X的馬力 Y。 Y的值是 1-5。 X的值是 A、B、C

Motor.A.setPower(1);//設定馬達A的輸出馬力等級為1

2、程式: 範例 5-2的程式碼如下,檔名是 EX52.java,請同學參考: import josx.platform.rcx.Motor; import josx.platform.rcx.Sound; public class EX52{ // 使用範例 4-1中的 moveForward() 函數 public void moveForward(int time1) throws InterruptedException{ Motor.A.forward(); Motor.C.forward(); Thread.sleep(time1); Motor.A.stop(); Motor.C.stop(); } public static void main(String [] args) throws InterruptedException{ int sec1 = 1000; EX52 motorCar = new EX52(); // 以馬力 1往前走 Motor.A.setPower(1); Motor.C.setPower(1); motorCar.moveForward(sec1); // 以馬力 2往前走 Motor.A.setPower(2);

Page 6: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

67

Motor.C.setPower(2); motorCar.moveForward(sec1); // 以馬力 3往前走 Motor.A.setPower(3); Motor.C.setPower(3); motorCar.moveForward(sec1); // 以馬力 4往前走 Motor.A.setPower(4); Motor.C.setPower(4); motorCar.moveForward(sec1); // 以馬力 5往前走 Motor.A.setPower(5); Motor.C.setPower(5); motorCar.moveForward(sec1); }//主程式結束 }//全部程式結束

Page 7: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

68

【習題 5-1】:設計一程式(檔名為 task51.java)使用迴圈的方式,重寫範例 5-2。 【老師提示】本題要改寫範例 5-2中五段逐次加速的結構。同學可在主程式中加入計數迴圈結構,以簡化程式。我們可設定這樣的條件:設定馬力

等級的變數是 i,i是介於 1-5之間的整數,所以我們須先設定 i是整數型態的變數,之後 i逐次遞增 1,直到 i的上限(5)結束,即 for (int i=1; i< 6; i=i+1) 。當然,在起始條件之後,須以一組{}符號包含滿足條件時,要重複執行的程式。 【我的程式碼】 【習題 5-2】:設計一程式(檔名為 task52.java),使用迴圈的結構撰寫程式,執行程式後車子會依序進行以下動作:車子分別以馬力五、馬力三、馬力

一的速度分段前進,每段 2秒鐘,最後停下來。 【老師提示】這是一種遞減的計數,同學可仿上題,將馬力變數 i一開始設為 5,而 i必須大於 0,每次減 2,請同學先試寫出 for ( )括號中的式子…… 【我的程式碼】 專心聽講,Final Project 等著你(妳)……

Page 8: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

69

附錄三 控制組的講義

※ 控制組與實驗組的講義的第一部分(壹、貳)是相同的,在本附錄中省略該部分。請參考附錄二實驗組的講義。

參、繪圖實作

本單元將應用 for結構,使我們的繪圖程式產生更多圖形的變化。 【例題 5-2】設計一程式(檔名為 EX52.java),程式執行後如下圖,視窗

上出現按鈕,使用者點選「多重矩形」後視窗上會繪出該圖案,

如下圖所示。

1、解析:我們沿用單元三中範例 3-2程式的架構,進行本題的作業。我們

可使用所學過的指令來完成工作。 //程式 EX52.java import java.awt.*; import java.awt.event.*; public class EX52 extends Frame implements ActionListener { int kind; Button b1,b2; public EX52()//設定視窗物件,程式碼省略……. { …… }

public void actionPerformed(ActionEvent e)//接收處理監聽事件,程式碼省略

Page 9: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

70

{ …… }

public void paint (Graphics g)//繪圖功能,處理事件執行後傳送來的訊息? { switch(kind)//設定兩種繪圖功能如下 { case 1:{g.drawLine(100,80,200,200);//畫直線功能 break;} case 2:{ g.drawRect(80,80,160,160);//畫空心矩形功能 g.drawRect(90,90,140,140); g.drawRect(100,100,120,120); g.drawRect(110,110,100,100); g.drawRect(120,120,80,80); g.drawRect(130,130,60,60); g.drawRect(140,140,40,40); break;} }//switch結束 }//繪圖功能結束

public static void main(String args[])//主程式部分 { …… }//主程式結束

}//全部程式結束 但是關於畫空心矩形的程式碼,我們能以更精簡的語法,即使用 for迴

圈,來取代 重複出現的 drawRect()指令。 2、程式:範例 5-2程式中,「空心矩形」繪圖部分可改寫如下: case 2:{ for(int i=0;i<=6;i++)

Page 10: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

71

{ g.drawRect(80+10*i,80+10*i,160-20*i,160-20*i); //利用 for結構畫空心矩形

} break;} 3、解析:我們在程式中引入一變數 i,來作為圖形變化的依據。如本題是

圖形左上角座標 X、Y方向逐次增加 10單位,因此造成每一個新矩形的長度,都比前一個矩形短 20單位,之後依此類推。至此同學應了解:繪圖之前應先預想程式執行後的圖案內容,進而規劃

座標的變化,才能繪出有意義的圖案。 【習題 5-1】:參考例題 5-2之內容,另建一程式(檔名為 task51.java),

執行後產生一視窗,視窗上有二個按鈕,點選後分別繪出一

組「平行線」(五條以上)、一組「多重矩形」(五個以上)。 【我的程式碼】 【習題 5-2】:建一程式(檔名為 task52.java),執行後產生一視窗,視窗

上有按鈕(數個),點選後分別繪出有意義、具美感的圖案,

老師以同學創意高低評分。 【我的程式碼】

專心聽講,Final Project 等著你(妳)……

Page 11: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

72

附錄四 成就測驗

班級:______ 座號:_____ 姓名:______________

一、選擇題(10%,每題 5分)

( )1、請問下列哪一個選項中的程式敘述,能順利執行與結束?

A、 for (int a=10;a<=1;a++ ) B、 for ( int b=10;b<=0;b-- )

{ 程式敘述 } { 程式敘述 }

C、 for (int c=1;c<=10;c++ ) D、 for (int d=10;d>=1;d++ )

{ 程式敘述 } { 程式敘述 }

( )2、某程式片段如下:

……

012行 System.out.println(“□□□□□□□”);

013行 System.out.println(“□ □ □ □”);

014行 System.out.println(“◎◎◎◎◎◎◎”);

015行 System.out.println(“◎ ◎ ◎ ◎”);

……

今將 012行與 015行的內容交換,執行程式後印出的圖案為何?

A、 □□□□□□□ B、◎ ◎ ◎ ◎

□ □ □ □ □□□□□□□

◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎

◎ ◎ ◎ ◎ □ □ □ □

C、◎ ◎ ◎ ◎ D、◎ ◎ ◎ ◎

□ □ □ □ ◎◎◎◎◎◎◎

◎◎◎◎◎◎◎ □ □ □ □

□□□□□□□ □□□□□□□

Page 12: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

73

1) 二、填答題(90%)

1、請參考以下程式並回答問題:(20%)

001:public class mytask1 { //程式開始,檔名為 mytask1.java

002: public static void main(String args []){ //主程式開始

003: int score;

004: score =75;

005: if(score>=90)

006: System.out.println(“你是在A的等級中”);

007: else if(score >= 70)

008: System.out.println(“你是在B的等級中”);

008: } //主程式結束

010:} //程式結束

(1) 本程式的目的是____________________________________________________,

使用了______________結構。

(2) 執行本程式,在螢幕上印出哪些內容?___________________________________

Page 13: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

74

2、請參考以下程式並回答問題:(20%)

001:public class mytask2 { //程式開始,檔名為 mytask2.java

002: public static int sumFact(int d, int e) { //建立函數

003: return (d*4+e*5+f*3)/2;

004: }//建立函數一結束

005: public static void main(String args []){ //主程式開始

006: int a, b, c, result1;

007: a=15;

008: b=60;

010: c=0;

011: result1=sumFact(a, b,c); //呼叫函數

012: System.out.println(result1);

013: }//主程式結束

014:}//程式結束

(1) 本程式共宣告_______個變數,請列出_________________。

(2) result1的算式是___________,其值為______。

3、請使用 while控制結構寫出一程式,列印出”******”六個星號。(20%)

public class mytask3 { //程式開始,檔名為 mytask3.java

public static void main(String args []){ //主程式開始

}//主程式結束

}//程式結束

Page 14: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

75

4、請設計一程式使機器車往左轉,往前走 3秒,右轉後停止。(15%) import josx.platform.rcx.Motor; public class mytask4 { //本程式開始,檔名為 mytask3.java

public void a(int time1) throws InterruptedException{ Motor.A.forward(); Motor.C.forward(); Thread.sleep(time1); Motor.A.stop(); Motor.C.stop(); } public void b(int time2) throws InterruptedException { Motor.C.forward(); Thread.sleep(time2); Motor.C.stop(); }

public void c(int time3) throws InterruptedException{ Motor.A.forward(); Thread.sleep(time3); Motor.A.stop(); }

public static void main ( String [] args) throws InterruptedException {

mytask3 motorCar = new mytask3();

//請寫下你的程式

}

}

Page 15: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

76

5、請設計一程式使機器車加速至第四級:(15%)

import josx.platform.rcx.Motor;

public class mytask5 { //程式開始,檔名為 mytask4.java

public static void main ( String [] args) throws InterruptedException

{ //請寫下你的程式

}

} //程式結束

-本試題結束-

Page 16: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

77

附錄五 評分標準

班級:______ 座號:_____ 姓名:______________

一、選擇題(10%,每題 5分)

( )1、請問下列哪一個選項中的程式敘述,能順利執行與結束?

A、 for (int a=10;a<=1;a++ ) B、 for ( int b=10;b<=0;b-- )

{ 程式敘述 } { 程式敘述 }

C、 for (int c=1;c<=10;c++ ) D、 for (int d=10;d>=1;d++ )

{ 程式敘述 } { 程式敘述 }

( )2、某程式片段如下:

……

012行 System.out.println(“□□□□□□□”);

013行 System.out.println(“□ □ □ □”);

014行 System.out.println(“◎◎◎◎◎◎◎”);

015行 System.out.println(“◎ ◎ ◎ ◎”);

……

今將 012行與 015行的內容交換,執行程式後印出的圖案為何?

A、 □□□□□□□ B、◎ ◎ ◎ ◎

□ □ □ □ □□□□□□□

◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎

◎ ◎ ◎ ◎ □ □ □ □

C、◎ ◎ ◎ ◎ D、◎ ◎ ◎ ◎

□ □ □ □ ◎◎◎◎◎◎◎

◎◎◎◎◎◎◎ □ □ □ □

□□□□□□□ □□□□□□□

選擇題 評分標準:

2) 答案:C 1 分。

3) 答案:D 1 分。

Page 17: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

78

二、填答題(90%)

1、請參考以下程式並回答問題:(20%)

001:public class mytask1 { //程式開始,檔名為 mytask1.java

002: public static void main(String args []){ //主程式開始

003: int score;

004: score =75;

005: if(score>=90)

006: System.out.println(“你是在A的等級中”);

007: else if(score >= 70)

008: System.out.println(“你是在B的等級中”);

008: } //主程式結束

010:} //程式結束

(3) 本程式的目的是____________________________________________________,

使用了______________結構。

(4) 執行本程式,在螢幕上印出哪些內容?___________________________________

填答題 評分標準:

1、只採用第二小題 (2) 答案:”你是在 B等級中”。 1 分。

Page 18: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

79

2、請參考以下程式並回答問題:(20%)

001:public class mytask2 { //程式開始,檔名為 mytask2.java

002: public static int sumFact(int d, int e) { //建立函數

003: return (d*4+e*5+f*3)/2;

004: }//建立函數一結束

005: public static void main(String args []){ //主程式開始

006: int a, b, c, result1;

007: a=15;

008: b=60;

010: c=0;

011: result1=sumFact(a, b,c); //呼叫函數

012: System.out.println(result1);

013: }//主程式結束

014:}//程式結束

(3) 本程式共宣告_______個變數,請列出_________________。

(4) result1的算式是___________,其值為______。

填答題 評分標準:

2、

(1) 宣告四個變數,名稱:A、B、C、result1。 1分

(2) 算式是 (d*4 + e*5 + f*3) 1 分

其值為 180 1分

Page 19: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

80

3、請使用 while控制結構寫出一程式,列印出”******”六個星號。(20%)

public class mytask3 { //程式開始,檔名為 mytask3.java

public static void main(String args []){ //主程式開始

}//主程式結束

}//程式結束

填答題 評分標準:

3、 int I=0;  計次變數設定並給與起始值 1 分

while (I < 6) { 正確寫出 while的指令,即含 while 指令、條件式、大括號 1分

正確寫出條件式的設定,符合題意可以讓程式印出 6個星星 1分

System.out.print(“*”); 正確寫出列印指令 1分。可以讓程式印出 6個星星 1分

I++;  計次變數的變化。使程式印出正確的結果 1分

}

另 Java的程式有大小寫之分、指令結束必須有分號,但在這評分標準中則大小寫視為相同,指令結束有無分號皆視為正確。

分數的歸類:

程式的理解:包含 選擇題 1、2,填答題 1、2,共 6分。只有填答題 2的第二小題有部分給分,其餘不會有部分給分。

程式的設計:填答題第三題採分給分,視答案給予分數,滿分是 7分。

※ 其餘是實作練習相關考題,不予給分,省略該部分

Page 20: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

81

附錄六 實驗組態度問卷

班別: 性別: 男 女 本問卷內容共有 13 題,1-9 題請勾選你同意的程度,10-11 題請勾選合適的

項目,12-13題請盡可能詳細寫下你的意見和想法。謝謝⋯ 註:問卷中「本活動」指的是本學期所講授的 Java及 Lego等學習活動

非常同意 非常不同意

1. 本活動能夠提高我學習程式設計的興趣

2. 老師發的講義對我的學習很有幫助

3. 在程式練習與實作時,我清楚知道自己在做什麼

4. 我覺得程式編輯軟體 JCreator容易使用

5. 編譯程式時,我了解錯誤訊息的意義(如mytask1.java:14 ‘;’ expected)

6. 我 能 夠 明 瞭 操 控 機 器 車 的 程 式 指 令 ( 如

Motor.A.forward();)

7. 我能夠很容易完成 Lego的學習活動(project設定 撰

寫、編譯程式 傳送程式至機器車)

8. 我能自己設計一個簡單的機器車操控程式

9. 如果下次再使用機器車來學習程式設計,我會很高興參加

10. 你覺得那一種教學順序對你學習程式設計是有幫助?

每一單元先教 Java再教 Lego 每一單元先教 Lego觀念再教 Java 教學順序的先後對我沒影響

11. 程式撰寫遇到困難時,你最常用的解決方式是: 自己參考講義 找會的同學問 和同學討論 問老師 其他:_____________________________________________________________

12. 你覺得使用機器車來學習程式設計的優點有哪些?有哪些待改進之處? 優點: 要改進的地方: 13. 除了以上各項外,你對本次活動還有其他建議?

Page 21: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

82

附錄七 控制組態度問卷

班別: 性別: 男 女 本問卷內容共有 12題,1-9題請勾選你同意的程度,10題請勾選合適的項目,

11-12題請盡可能詳細寫下你的意見和想法。謝謝⋯ 註:問卷中「本活動」指的是本學期所講授的 Java程式設計學習活動

非常同意 非常不同意

1. 本活動能夠提高我學習程式設計的興趣

2. 老師發的講義對我的學習很有幫助

3. 在程式練習與實作時,我清楚知道自己在做什麼

4. 我覺得程式編輯軟體 JCreator容易使用

5. 編譯程式時,我了解錯誤訊息的意義(如

mytask1.java:14 ‘;’ expected)

6. 我 能 夠 明 瞭 老 師 所 授 的 繪 圖 指 令 ( 如

drawLine();fillOval();)

7. 我能夠順利完成老師指定的作業(project 設定 撰

寫、編譯程式 執行視窗程式)

8. 我能自己設計一個簡單的視窗繪圖程式

9. 如果下次再以設計「繪圖程式」為主題學習程式設

計,我會樂意參加

10. 程式撰寫遇到困難時,你最常用的解決方式是: 自己參考講義 找會的同學問 和同學討論 問老師 其他:_____________________________________________________________

11. 你覺得以「繪圖程式」作為學習程式設計的主題,優點有哪些?有哪些待改進之處?

優點: 要改進的地方: 12. 除了以上各項外,你對本次活動還有其他建議?

Page 22: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

83

附錄八 晤談問卷

◆ 教材 A_ 教材份量是否適中?比例上有無需要調整之處? B_ 你認為單元一至七中,哪一單元讓你最有興趣?原因是…… C_ 你認為最困難(抽象)的單元(觀念)是?原因是…… D_ 針對每一單元的教學順序(Lego先或是 Java先),你們的看法是……理由

是…… ◆操作軟硬體環境 A_ 從同學問卷結果中發現,同學認為 JCreator不太好用?原因是…… B_ 針對設備是否足夠,你們的意見是……

◆教學過程 A、 老師的教學方式有無需要改進之處? B、 在問卷中你們認為講義有助於你們學習,但是同時在面臨難題時你們的解決方式則以「請教會的同學」為主,那麼講義究竟給你們什麼樣的幫助?

C、 在實作遇到困難時你有沒有向老師發問、請老師解惑的經驗?在統計「面臨難題時,你們的解決方式」,發現「問老師」選項的比例偏低。你認為是什麼

理由造成這樣的結果? D、 活動進行時,會不會發生不知道自己在作什麼的感覺?原因是……. ◆整體活動 A_ 你們認為完成一般 Java程式,和完成 Lego程式所得到的成就感,有什麼不同?

B_ 為何同學會認為完成 Lego的學習活動(Project設定->寫程式->編譯與傳送->車子 運轉)並不容易?你們的看法是……

C_ 其他的意見

Page 23: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

84

附錄九 實驗組實作記錄表

Lego分組實作紀錄表 本表之目的,在於紀錄同學學習的狀況,請組長詳實填寫,下課前送交老師。 第 單元 月 日 星期 第 節 組長: 完成項目 座號 姓名

Task1 Task2 Task3(if)

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

□程式是否完成 □傳輸是否正常 □車子順利運轉 □執行是否正確

※註記符號:完成作業→ˇ、有做但未順利完成→Δ(完全沒做則不必劃記) 特殊事項:(請組長記錄重要事項,如同學常發生的問題有哪些?同學有無討論?

同學的創意?或上課心得……) 請同學確認無誤,簽名後由組長繳回老師處。 同學簽名處:_______ _______ _______ _______

Page 24: 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝 ꥷ땻rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/92663/6/800606.pdf62 뿽ꑀ Lego Mindstorms 뻇닟ꑵ꣣ꅂ땻ꚡ뵳쒶샴맒덝

85

附錄十 控制組分組實作記錄表

專題實作紀錄表 本表之目的,在於紀錄同學學習的狀況,請組長詳實填寫,下課前送交老師。 第 單元 月 日 星期 第 節 組長: 完成項目 座號 姓名

Task1 Task2 Task3(if)

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

□程式是否完成 □編譯是否成功 □執行是否正確

※註記符號:完成作業→ˇ、有做但未順利完成→Δ(完全沒做則不必劃記) 特殊事項:(請組長記錄重要事項,如同學常發生的問題有哪些?同學有無討論?

同學的創意?或上課心得……) 請同學確認無誤,簽名後由組長繳回老師處。 同學簽名處:_______ _______ _______ _______