第四單元 程序與函數的類別方法.

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一單元 建立java 程式.
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
OUTLINE Android app Devolpment Flow App反組譯解說 實例 簽名詳解 DalvikByteCode
第一章 面向对象程序设计.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第三章 控制结构.
Chapter 5 遞迴 資料結構導論 - C語言實作.
Q1: 追蹤程式: 印出結果? 搶答 while (i<=n) { p=p*i; i=i+2; }
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第十一章 結構.
控制流程 邏輯判斷 迴圈控制.
Visual C++ introduction
物件導向程式設計 (Object-Oriented rogramming)
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
CHAPTER 9 建構方法 ROBERT.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
Java 程式設計 講師:FrankLin.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Java程序设计 第2章 基本数据类型及操作.
第十章 模板 丘志杰 电子科技大学 计算机学院 软件学院.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
Chapter 5 Recursion.
鄧姚文 資料結構 第一章:基本概念 鄧姚文
第二章Java基本程序设计.
|07 函數.
JAVA 程式設計 資訊管理系 - 網路組.
C#程序设计基础 $3 成员、变量和常量.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
樣版.
第二章 Java语法基础.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
挑戰C++程式語言 ──第9章 函數.
第二章 Java基本语法 讲师:复凡.
簡單Java介紹.
遞迴 Recursion.
Quiz1 繳交期限: 9/28(四).
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
JAVA 程式設計與資料結構 第三章 物件的設計.
變數、資料型態、運算子.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
遞迴
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
Summary
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

第四單元 程序與函數的類別方法

模組化程式設計 模組(Modules)擁有特定功能的相關資料和函式集合。 使用者只需知道模組對外的使用界面,就可以使用模 組提供的功能,而不用實際去瞭解模組內部程式碼的 實作和資料結構。 模組化的優點: - 便於分析 - 加速開發 - 維護簡單 - 容易偵錯

模組化程式設計 Top-down Design 先將解決整個問題的方法分解成幾個大模組, 然後再將大模組分解成數個小模組,如此反覆 細分下去。等整個問題的樹狀架構圖完成後, 便從最底層的小模組做起,等完成後便將他們 組合成大模組,如此層層向上至整個軟體完成。

模組化程式設計 Top-down Design 的設計方法需注意下列問題: 模組的獨立性 模組之間的結合 模組之間的溝通

程序是一個黑盒子 傳入參數 黑盒子 程序碼呼叫 程序 使用界面 語法 語意

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

JAVA的類別方法 ch5_3_1.java 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 ch5_3_1.java

JAVA的類別方法 ch5_3_1.java public static void add2Five() { // 變數宣告 int i; int total = 0; // 迴圈敘述 for ( i = 1; i <= 5; i++ ) System.out.print("|" + i); total += i; } System.out.println("\n從小到大的總和: " + total); // 主程式 ch5_3_1.java

JAVA的類別方法 類別方法的參數傳遞 Ch5_3_2.java static void printTable(int lower, int upper) { // 變數宣告 int step = 10; // 增量 int c = lower; double f; // do/while迴圈敘述 System.out.println("攝氏 華氏"); do f = (9.0 * c) / 5.0 + 32.0; System.out.println(c + "\t" + f); c += step; } while ( c <= upper); }

JAVA的類別方法 類別方法的傳回值 ch5_3_3 // 類別方法: 計算n到N的數字 static int nAdd2N(int begin, int end) { // 變數宣告 int i; int total = 0; // 迴圈敘述 for ( i = begin; i <= end; i++ ) total += i; return total; // 傳回值 } // 類別方法: 攝氏轉成華氏 static double c2F(int c) { double f; // 轉換溫度 f = (9.0 * c) / 5.0 + 32.0; return f; // 傳回值 } // 主程式

JAVA的類別呼叫方法 傳值呼叫 call by value 10 x main() { int x=10; func(x); } func(int x) { x=x*x; System.out.println(x); } 10 x 100

JAVA的類別呼叫方法 傳位址呼叫 1 11 x[0] call by reference 2 12 x[1] 13 3 x[2] main() { int x[3]={1,2,3}; func(x); } func(int x[]) { int i; for(i=0 ; i<3 ; i++) x[i]+=10; }

JAVA的類別呼叫方法 ch5_3_4.java 資料型態 方式 int, char,double 傳值 String Array 傳址

JAVA的類別變數和變數範圍 JAVA成員變數在宣告後,如果沒有指定初值,將擁 預定初值,數字為0,boolean型態為false,char型態 為unicode的0,如果是物件其預設值為null。 ch5_4_1

JAVA的類別變數和變數範圍 ch5_4_2.java class class_name { 成員變數宣告; ……………………… public void method_name() } 區域變數宣告;

Case study : Square private static int square(int n) { ……………… } 主程式:求1 到10的平方

Case study : MAX private static int max(int a, int b, int c) { ……. } 主程式: 輸入三個整數 呼叫max求此三整數之最大值

Case study : isPrimer private static int primer(int n) { ……………… } If n is a primer, return 1;otherwise return 0 求1到3000的所有質數

Case Study : Play dice 搖一粒骰子6000次,統計1,2,3,4,5,6點各出現幾次 (int) Math.ceil(Math.random()*6);

Homework : Play Dice game 玩家投擲兩顆骰子。每一顆骰子有六面,分別有1,2,3,4,5,和6個點。 當骰子靜止下來後,將兩個骰子朝天的那一面的點數相加起來。如果 第一次投擲便擲出7點或11點,那麼判定玩家贏。若第一次擲出2點、 3點或12點,那麼玩家輸。如果第一次擲出4點、5點、6點、8點、9點 、10點,則這個點數成為玩家的目標點數。玩家必須繼續投擲這兩顆 骰子,直到擲出目標點數才算贏。但若玩家在達成目標點數之前擲出 7點,則判定玩家輸。

Homework : Play Dice game private static int rolldice() { ……………… } rolldice player rolled point player rolled point 4,5,6,8,9,10 2,3,12 case(point) target=point L print player loses rolldice F 7,11 7 T F Point=target Point==7 w L print player win print player loses target T w print player win

遞迴 ch5_5_1.java 遞迴函式解決問題方式都具有一些共同特點。他們會 重複不斷地呼叫自己。 5! 5*4! 4*3! 3*2! 2*1! 1 return 1 return 2*1 return 3*2 return 4*6 return 5*24 Final 120 5! 5*4! 4*3! 3*2! 2*1! 1 5!=5*4*3*2*1 5!=5*(4*3*2*1) 5!=5*4! n!=n*(n-1)!

Fibonacci 數列 Fibonacci數列: 0,1,1,2,3,5,8,13,21 Fibonacci數列可遞迴定義,如下: Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2)

Fibonacci 數列 f(3) return f(2) + f(1) return f(1) + f(0) return 1

Case study : 以遞迴來求GCD GCD(32,12) =GCD(12,8) =GCD(8,4)

Hanoi塔 solution:

Hanoi塔 solution: 1 to 3 1 to 2 3 to 2 2 to 1 2 to 3

Hanoi塔 solution: 1 to 3 1 to 2 3 to 2 2 to 1 2 to 3 source temp destination move n-1 rings from S to T move n’th ring from S to D move n-1 rings from T to D

Hanoi塔 ch5_5_1.java 演算法: 將n-1個碟子由柱子1移到柱子2,柱子3作為暫存區。 將最後一個碟子由柱子1移到柱子3。 的遞迴函式。 1.要移動的碟子數 2.這些碟子的開始所在柱子位置。 3.這些碟子最後要移到的柱子位置。 4.被當作暫存區的柱子位置。