Presentation is loading. Please wait.

Presentation is loading. Please wait.

程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.

Similar presentations


Presentation on theme: "程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通."— Presentation transcript:

1 程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通

2 程序是一個黑盒子 傳入參數 黑盒子 程式碼呼叫 傳回值 程序 使用界面

3 建立Java的類別方法 存取敘述 static 傳回值型態 方法名稱 (參數列); { …………… public:方法可在程式任何地方呼叫
程式敘述; private:方法只能在同一個類別 class內進行呼叫 ……………. }

4 沒有傳回值和參數列的方法 Public class Ch5_3_1 { //類別方法:顯示星號三角形
Private.static void writeTriangle( ) //變數宣告 int I,,j; //巢狀迴圈 for (I=1;I<=5;I++) for(j=1;j<=i;;j++) System.out.print(“*”); System.out.print(“\n); } //類別方法:顯示1加到5 public static void add2Five( ) { //變數宣告 Int i; Int total=0; //迴圈敘述 for(i=1;i<=5;i++) System.out.print(“1”+i); total+=i; } System.out.println(“\從小到大的總合:”+total); //主程式 public static voidmain(String[] args) //類別方法的呼叫 writeTriangle( ); //另一種類別方法的呼叫 Ch5_3_1.add2Five();

5 類別方法的參數傳遞 public class Ch5_9 { //主程式
public static void main(String[] args) int n=5;//變數宣告 printStars(n);//呼叫類別方法 } static void printStars(int n)//類別方法 { int i,j,k;//變數宣告 for(i=1;i<=n;i++)//迴圈敘述 for(j=n-i;j>=0;j--) System.out.print(" "); for(k=1;k<=i;k++) System.out.print("* "); System.out.print("\n"); }

6 類別方法的傳回值 } public class Ch5_8 { //類別方法:平方 static int square(int a)
return(a*a);//傳回值 } //類別方法:三次方 static int cube(int a) return(a*a*a);//傳回值 public static void main(String[] args) { int a=9;//宣告變數 //呼叫類別方法 System.out.println("square="+square(a)); System.out.println("cube="+cube(a)); }

7 傳值或傳址參數 傳值呼叫(Call by Value) 傳址呼叫(Call by Reference)
只是將變數的值傳入方法,方法另外需要配置記憶體儲存參數值,所以並不會更改參數的值 傳址呼叫(Call by Reference) 將變數實際儲存的記憶體位置傳入,如果在方法變更參數值,也會同時變更原呼叫值 Int、char和double等基本資料型態 傳值 基本資料型態的參數傳遞都是使用傳值方式 String物件 不論是否使用new關鍵字建立的字串物件都是傳值,因為字串物件並不能更改字串內容 Array陣列 傳址 Java的陣列是一種物件,其參數傳遞方式是傳址方式

8 Java的類別變數和範圍 成員變數宣告 方法參數範圍 區域變數範圍 Class class_name { 成員變數宣告: …….
public void method_name( ) ………. 區域變數宣告; } 成員變數宣告 方法參數範圍 區域變數範圍

9 遞迴程式設計 遞迴的特性 遞迴方法在每次呼叫時,都可以使問題逐漸縮小 方法需要擁有一個終止條件,以便結束遞迴方法的執行。

10 範例:計算1到參數a的和 設a=5 5 5 5+4 5+10=15 return 5+4 4+3 4+6=10 return 4+3
a=a+(a-1)+(a-2)+(a-3)+..+1 設a=5 5 5+4 4+3 3+2 2+1 1 (終止條件) (a)遞迴呼叫的進行 5 =15 return =10 return =6 return return 1 1 return (b)由每一個地迴呼叫傳回值

11 程式 public class Ch5_13 { static int sum(int a) if a==1 //終止條件
return(1); else return(a+sum(a-1)); } public static void main(String[] args) //主程式 { int a=5; //變數宣告 System.out.println("sum="+sum(a)); }

12 河內塔問題 規則:(1)每次只能移動一個盤子,而且只能從最上面的盤子移動 (2)任何盤子可以搬到任何一根木樁
(3)必須維持盤子的大小是由上而下依序遞增

13 步驟 步驟(a)將最上面n-1個盤子從木樁1搬移到木樁2 (b)將最後一個盤子從木樁1搬移到木樁3 (c)將木樁2的n-1個盤子搬移到木樁3

14 結果 盤子從 1 到 3 盤子從 1 到 2 盤子從 3 到 2 盤子從 2 到 1 盤子從 2 到 3

15 程式內容 //主程式 public static void main(String[ ] args) { //變數宣告
public class Ch5_5_2 { // 遞迴方法:河內塔問題 static void towerofHanoi(int n, int s,int t,int d) if(n==1)//終止條件 System.out.println(“Move”+s+”to”+d); else { //第二步驟 towerofHanoi(n-1,s,d,t); //第三步驟 towerofHanoi(n-1,t,s,d); } //主程式 public static void main(String[ ] args) { //變數宣告 int n=3;//盤子數 //呼叫遞迴的方法 towerofHanoi(n,1,2,3); }


Download ppt "程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通."

Similar presentations


Ads by Google