Download presentation
Presentation is loading. Please wait.
1
程設一
2
靜宜賽碼場 – 網頁版 註冊
3
靜宜賽碼場 – 註冊
4
靜宜賽碼場 – 註冊
5
靜宜賽碼場 – 註冊 填寫「學習家族組名」
6
靜宜賽碼場 – 註冊
7
靜宜賽碼場 – 網頁版 加選課程
8
靜宜賽碼場 – 軟體版 路徑: 執行:
9
靜宜賽碼場 – 軟體版 6 2 3 4 1 5
10
JAVA檔 class method Note: 1、「;」:一行的結束 2、「{」:一層的開始 「}」:一層的結束 3、利用tab鍵分層
寫入你的程式碼 1、JAVA檔的檔名要跟內部的其中一個class名稱相同,並且為public class 2、一個java檔內只能有一個public class 3、一個project只會有一個main method,會從多個java檔中找尋一個main method為程式的進入點 Note: 1、「;」:一行的結束 2、「{」:一層的開始 「}」:一層的結束 3、利用tab鍵分層
11
kb_practice_helloJava
練習 kb_practice_helloJava
12
程式的用途 自用 破壞
13
程式語言分類 第一代 機器語言 第二代 組合語言 第三代 高階語言(程序導向語言)
Ex: FORTRAN、COBOL、PASCAL、Ada、C、BASIC、Perl 第四代 極高階語言(物件導向語言) Ex: C++、JAVA、VB、PHP、C#、Python、smalltalk 第五代 LISP、PROLOG
14
程式的執行 編譯器 Source code execute EX: JDK
15
程式的執行 – 實例 C、C++:編譯 JAVA:編譯+直譯 載入階段 執行階段 compiler linker loader
Source code Object code Execute code RAM 執行 .obj .exe (binary code) JAVA:編譯+直譯 靜態宣告:載入階段時執行,ex: int a[10]; 動態宣告:執行階段時執行,ex: int* a = new int[10]; compiler Source code Byte code JVM .class interpreter Compiler:將高階程式翻譯成組合語言程式 Linker: 連結函式庫 Loader: 載入到memory
16
JDK ( Java SE Development Kits)
JAVA ME JAVA EE 大型網站開發 JAVA SE (JDK) 手機、嵌入式系統 一般應用程式適用
17
寫程式的準則 要排版 變數的命名須有意義 要會debug Ex: 有排版: 沒排版: int a; // 不好的命名
int age; // 好的命名 利用tab鍵來縮排
18
JAVA Project Project Package Java檔 Java檔 Java檔 Class Package Package
method method Class
19
JAVA Project - Example Project name Package name
20
Data type Ex:
21
Data type range
22
變數的命名 原則: 1、有意義 2、不要太長 EX: 開頭小寫,表示data type 開頭小寫 開頭大寫
Note:關鍵字:藍色 -> 不可宣告成變數 識別字:黑色 -> 可宣告成變數
23
Example1-宣告、給值 宣告、給值 分開寫 宣告、給值 寫在一起 多個變數
24
Example2 – 宣告、給值 a = ???
25
Output 法一: 使用System.out.println 法二: 使用System.out.printf
26
System.out.printf %d:用於整數 Ex: %f:用於浮點數
27
Input
28
練習 kb_practice_inputOutput 輸入三個data, 第一個為int型態的data 第二個為double型態的data
第三個為String型態的data 印出此三個data kb_practice_inputOutput
29
加分題 若有兩個整數x=1、y=2,如何運用第三個變數z,將x與y兩數的內容交換? kb_swap
30
Operator(運算子)
31
% 用途:取餘數 應用:切割整數 Ex:
32
++、-- 後置加:a++ 前置加:++a
33
除法 // 宣告int // 宣告double
34
浮點數 Case1: Case2:
35
Example what's wrong ??
36
練習 觀察下列式子的結果 kb_practice_++
37
HW Calculate Body Mass Index (BMI)
38
if、else 用途:條件判斷,用在2選1的情況 語法: Ex : 1 不是做case1就是做case2 2
39
練習1 輸入2個整數a、b,若a>=b或a==10則執行a-b並印出,否則執行a+b並印出 kb_practice_ifelse
40
練習2 kb_practice_ifelse2 考試成績有六個級別 A B C D E F 分別對應分數
利用if else技巧,輸入分數印出對應的級別 kb_practice_ifelse2
41
HW 輸入一個整數,若是奇數,輸出字串Odd,否則輸出字串Even。 P1Test-023
42
else if 用途:條件判斷,用在n選1的情況(n>=3) 搭配if、else使用 語法: 1 2 4選1,
從case1~case4選其中執行 3 4
43
else if - example
44
else if - example 下列兩者的差異?
45
if…else VS else if If…else:2選1 else if: n選1,
46
練習 kb_practic_elseif 有一組數列如下 100 78 3 46 輸入一個整數,由左至右掃描上列此組數列,當符合
此整數時則印出 ” match” 並且結束, 否則印出”Not match” kb_practic_elseif
47
練習 1032-P1-下9週-Test1-判斷閏年 (30 points) 1、西元年份是400的倍數
想法: 1、西元年份是400的倍數 2、西元年份是4的倍數但不是100的倍數 閏年
48
練習 Given three numbers x, y, and z, find out if x, y, and z can represent the lengths of the sides of a triangle. kb_FindOutIfTriangle
49
統一作業 P1-hw007 1042-前九週-P1-hw007-判斷奇偶數(3%)
50
加分題 kb_guessNum 輸入4個整數, 其中第一數為答案碼 (000~999) 第二數~第四數為輸入碼(0~9),
檢驗是否猜中 (第一數包含第二~第四數即猜中) note:數字可重複 ex: 猜中 未猜中 kb_guessNum
51
迴圈 種類 for while do … while
52
for 語法: Ex1: Ex2:
53
for 如何不執行完迴圈就先行離開? Ex: 「break」
54
練習 kb_practice_for 輸入一個整數n 1、若n值大於5,則印出 ”Fail”
2、否則利用for迴圈方式印出n次 ”hello”
55
練習 kb_practice_for2 輸入一個整數n , 1、若n<1 或 n>100則輸出"Fail"
56
練習 P1Test-018 輸入一個整數n 利用for迴圈計算n!的值
57
巢狀迴圈
58
練習 kb_99multipyTable 顯示某區間的99乘法表 input: 2 5 output: 2x1 2x2 ......
59
HW P1Test-006 輸入兩個整數,計算兩個整數之間所有奇數的和
60
練習 kb_gcd 輸入兩個整數,計算兩個整數的最大公因數
61
上機模擬考 kb_game 遊戲主角有1000血量, 受到n次攻擊,第一次受到的傷害量為A1....第n次受到的傷害量為An, 每受到1個傷害量主角可累績1點的怒氣, 當受到的傷害量>=1000時,則印出"主角死亡" 當怒氣100時則印出"主角發動max必殺技" 當怒氣99~50時印出"主角發動小技能" 當怒氣49~0時印出"主角發動普通攻擊" 當怒氣<0時印出"輸入錯誤“ Ex: input: output: 主角發動max必殺技
62
程設三
63
Inheritance(繼承) 目的:重複使用code 原則: 語法:
愈上層的類別愈描象(base class or parent class) 愈下層的類別愈精確(derived class or child class) 語法: Parent class child class
64
example 可想像成super(w,h) == TwoDShape(w,h)
65
Visibility(能見度) JAVA visibility 同一個class 同一個package 不同個package
All methods derived class Not Private ok Package(預設) Protected Ok: method Fail: variable public
66
程設四
67
Class與method的應用 應用:將class當作容器來儲存多個data Ex: Stack s; s.push(10);
68
HW1 Stack實作
69
HW2 (驗收HW1)
70
Abstract class 功能: 1、建構在繼承之上 2、只實作部份methods,abstract methods不實作
優點:讓base class較抽象化 語法: 第一個methods(未實作) 第二個methods(已實作) Note: abstract class 不可直接new
71
kb_practice_abstract
練習1 kb_practice_abstract
72
toString() 任何類別都預設有此method 用途:印出類別物件時可直接印出字串 語法: or 實作
All class 都繼承自Object這個類別 or 實作
73
kb_practice_toString
練習2 kb_practice_toString
74
Overriding(覆寫) Ex: 功能: 1、 建構在繼承之上 2、父類別與子類別具有同相名稱的method,
Type相同 參數數量、type相同
75
Overloading(多載) 功能:多個methods名稱相同,但參數的型 態、個數不同 EX: 參數個數=1 參數型態= String
參數個數=2 參數型態= String、int
76
example overriding implement
77
kb_practice_overriding
練習3 kb_practice_overriding
78
HW3 abstract class (P4Test-017)
79
Polymorphism(多型) 前提:1、多型建構在繼承之上(已完成父子類別) 2、父類別與子類別具有相同名稱但不同功能的method
(overriding) 優點:讓父類別當作子類別的通用型態,以增加使用上的 彈性,減少系統的開發複雜度 Ex: 父 子 讓車子變戰車 or 讓車子變馬車 or 讓車子變汽車 (向上轉型)
80
Example1 父 子 可用的成員變數、methods = class A + overriding overriding
81
kb_practice_polymorphism
練習4 kb_practice_polymorphism
82
Example2 印出?????? Step1: R擁有的methods (繼承) Step2: R轉型後methods的內容
Step3: 呼叫到的method Ans: 4
83
Interface(介面) – part1 功能:只宣告但所有methods都不實作 優點:讓base class更抽象化 建立:
介面名稱 (隨便命名) 僅宣告不實作 Note: 1、interface 不可直接new 2、interface 可繼承
84
Example 介面: 實作: 介面名稱 實作介面
85
練習5 Interface-002
86
HW4 P4Test-018
87
Interface(介面) – part2 同時實作多個介面: 介面1 介面2
88
練習6 interface-003
89
enum(列舉) Def:定義名詞來取代常數 宣告: 使用: 列舉名稱
90
練習7 kb_practice_enum
91
generic(泛型) 功能:讓type的使用更有彈性 Ex: 也不一定要用T
92
練習8 kb_practice_generic
93
HW4 P4Test-011
94
Exception 目的:讓你的程式在執行階段時更加穩固, 不易crash 語法1:自動偵測例外類型,利用「try」、「catch」
除0發生例外錯誤 必要 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中 arithmeticException 非必要 萬用寫法
95
Exception type ArrayIndexOutOfBoundsException ArithmeticException
96
Example1 Method須加上此關鍵字 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中
97
kb_practice_Exception
練習 kb_practice_Exception
98
Exception 語法2:手動引發例外 -> 利用「throw」 類別名稱, 可自行建立 or 使用內建類別
可加入例外訊息 再利用getMessage()取得訊息 引發例外後程式即會中斷,所以不會執行到此行
99
Exception 自行引發例外 + 不中斷的做法 內建類別 利用getMessage()取得回傳的訊息
100
Exception 自行引發例外 +不中斷的做法+不使用內建例外類別 自行建立例外類別 自行建立例外類別
101
Example2 印出例外回傳的字串 自動偵測哪種例外 手動指定哪種例外
若 a.div(11,1) 則輸出 “Exception: C>10” 自動偵測哪種例外 手動指定哪種例外
102
練習 Exception-007
103
統一作業 P4-hw008 P4-hw007 P4-hw006
Similar presentations