Download presentation
Presentation is loading. Please wait.
1
計算機程式設計 老師:謝孟諺 助教:楊斯竣
2
大綱 算數運算 If 自動轉換 強制轉換
3
認識運算式 運算式由運算元(operand)與運算子(operator)組成 運算元可以是變數或是常數 運算子就是數學上的運算符號
4.1 運算式與運算子 運算式由運算元(operand)與運算子(operator)組成 運算元可以是變數或是常數 運算子就是數學上的運算符號 如「+」、「-」、「*」、「/」等 典型的運算式
4
設定運算子(1/2) age=age+1 sum=num1+num2 為各種不同資料型態的變數設值,可使用設定運算子
4.1 運算式與運算子 為各種不同資料型態的變數設值,可使用設定運算子 等號(=)並不是「等於」,而是「設定」 將整數18設定給變數age age=age+1 變數age+1之後的值再設定給age存放 sum=num1+num2 等號的右邊也可以是個運算式
5
設定運算子 (2/2) 4.1 運算式與運算子 下面的範例示範設定運算子的使用:
6
一元運算子 (1/2) 下面的敘述是由一元運算子與單一個運算元組成 一元運算子的成員 4.1 運算式與運算子 +6; // 表示正6
+6; // 表示正6 ~a; // 表示取a的1補數 x=-y; // 表示負y的值設定給變數x存放 !a; // a的NOT運算,若a為0,則!a為1,若a不為0,則!a為0 一元運算子的成員
7
一元運算子 (2/2) 4.1 運算式與運算子 「~」與「!」運算子的範例:
8
算術運算子 (1/3) 算術運算子在數學上經常會使用到 算術運算子的成員: 加法運算子「+」可將前後兩個運算元做加法運算
4.1 運算式與運算子 算術運算子在數學上經常會使用到 算術運算子的成員: 加法運算子「+」可將前後兩個運算元做加法運算 6+2; // 計算6+2 b=a // 將a的值加15之後,再設定給變數b存放 sum=a+b+c // 將a,b與c的值相加後,設定給變數sum存放
9
算術運算子 (2/3) 減法運算子「-」可將前後兩個運算元做減法運算 乘法運算子「*」可將前後兩個運算元相乘 4.1 運算式與運算子
age=age-1; // 計算age-1之後,再將其結果設定給age存放 c=a-b; // 計算a-b之後,再設定給c存放 54-12; // 計算54-12的值 乘法運算子「*」可將前後兩個運算元相乘 b=c*3; // 計算c*3之後,再將其結果設定給b存放 a=a*a; // 計算a*a之後,再設定給a存放 17*5; // 計算17*5的值
10
算數運算子 (3/3) 餘數運算子「%」:取出二數相除後的餘數 除法運算子「/」可將前面的運算元後除以後面的運算元 4.1 運算式與運算子
b=a/6; // 計算a/6之後,再將其結果設定給b存放 d=c/d; // 計算c/d之後,再設定給d存放 3/8; // 計算3/8的值 要注意資料型態的變化 餘數運算子「%」:取出二數相除後的餘數 age=age%5; // 計算age/5的餘數,再把計算結果給age存放 c=a%b; // 計算a/b的餘數,然後把計算結果給c存放 48%7; // 運算48%7的值
11
關係運算子與 if 敘述 (1/2) if 敘述的格式如下: 如下面的程式片段: if (x<0) 4.1 運算式與運算子
敘述; 關係運算子的成員 如下面的程式片段: if (x<0) System.out.println("x的值小於0");
12
關係運算子與 if 敘述 (2/2) 4.1 運算式與運算子 關係運算子的使用範例:
13
遞增與遞減運算子 遞增與遞減運算子的成員: 想讓變數a加上1,其敘述如下 4.1 運算式與運算子 a=a+1;
本程式比較a++與++b的不同
14
邏輯運算子 (1/2) 邏輯運算子與真值表: 邏輯運算子的使用範例:
4.1 運算式與運算子 邏輯運算子與真值表: 邏輯運算子的成員 AND與OR真值表 邏輯運算子的使用範例: (1)a>0 && b>0 // 兩個運算元皆為真,運算結果才為真 (2)a>0 || b>0 // 兩個運算元只要一個為真,運算結果就為真
15
邏輯運算子(2/2) 4.1 運算式與運算子 邏輯運算子應用在 if 敘述中 : 100 49 60 成績輸入錯誤 需要補考
16
括號運算子 括號運算子() 用來處理運算式的優先順序: 以一個加減乘除式子為例: 想分別計算12-2*6及4+1之後再將兩數相除則成為
4.1 運算式與運算子 括號運算子() 用來處理運算式的優先順序: 以一個加減乘除式子為例: 12-2*6/4+1 // 未加括號的運算式 運算結果為10 想分別計算12-2*6及4+1之後再將兩數相除則成為 (12-2*6)/(4+1) // 加上括號的運算式 運算結果為0
17
運算子的優先順序列表 4.2 運算子的優先順序 數字愈小表示優先順序愈高
18
運算子的優先順序 a=b<=5&&c==0; 運算子優先順序的範例: 4.2 運算子的優先順序 優先順序 14 6 11 7
3. 然後進行&&運算 (&&的優先順序為11 ) 4. 最後再把運算結果設給變數 a 存放 (= 的優先順序為14 )
19
結合性 結合性是指相同優先順序之運算子的執行順序 算術運算子的結合性為「由左至右」
4.2 運算子的優先順序 結合性是指相同優先順序之運算子的執行順序 算術運算子的結合性為「由左至右」 a=b+d/3*6; // 結合性可以決定運算子的處理順序 d會先除以3再乘以6得到的結果加上b後,將整個值給a存放
20
運算式的組成 運算式是由常數、變數或是其它運算元與運算子所組合而成 下面的例子,均是屬於運算式
4.3 運算式 運算式是由常數、變數或是其它運算元與運算子所組合而成 下面的例子,均是屬於運算式 -18 // 由一元運算子「-」與常數18組成 sum+6 // 由變數sum、算術運算子與常數6組成 a+b-c/(d*3-9) // 由變數、常數與算術運算子組成的運算式
21
簡潔的運算式 (1/2) 4.3 運算式 下表為簡潔的運算式與使用說明: 簡潔寫法的運算式範例:
22
簡潔的運算式 (2/2) 4.3 運算式 使用簡潔運算式的範例:
23
運算式的資料型態轉換 (1/4) 4.4 運算式的型態轉換 Java處理型態轉換的規則:
24
運算式的資料型態轉換 (2/4) 4.4 運算式的型態轉換 型態轉換的範例:
25
運算式的資料型態轉換 (3/4) 4.4 運算式的型態轉換 下圖為app4_7內變數的資料型態轉換過程解說:
26
運算式的資料型態轉換 (4/4) 4.4 運算式的型態轉換 下圖為app4_7運算式的運算過程:
27
自動型態的轉換 (1/2) Java會在下列條件皆成立時,自動做資料型態的轉換: (1) 轉換前的資料型態與轉換後的型態相容 型態轉換
(2) 轉換後的資料型態之表示範圍比轉換前的型態大 例如: int 和 float 相加,int 會被轉成 float char 和 int 相加,char 會被轉成 int 型態轉換 發生在運算子左右兩邊的運算元型態不同時 自動資料型態的轉換只限該行敘述 透過自動型態的轉換,可以保證資料的精確度 這種轉換也稱為擴大轉換(augmented conversion)
28
自動型態的轉換 (2/2) 浮點數與整數作運算的結果: 先將a轉換成float,再除以b
29
強制型態轉換 (1/2) 將資料型態強制轉換成另一種型態的語法: 強制型態轉換也稱為顯性轉換(explicit cast)
資料型態的強制性轉換 (欲轉換的資料型態) 變數名稱; 強制型態轉換也稱為顯性轉換(explicit cast) 強制型態轉換的注意事項 變數強制轉換成另一種型態,原先的型態不會被改變 縮小轉換(narrowing conversion)可能會漏失資料的精確度 Java不會主動做縮小轉換
30
強制型態轉換 (2/2) 整數與浮點數進行強制轉換的範例: 也可寫成 將a轉換成浮點數之後,再除以b a/(float)b
(float)a/(float)b
31
-The End-
Similar presentations