流程控制叙述.ppt
《流程控制叙述.ppt》由会员分享,可在线阅读,更多相关《流程控制叙述.ppt(43页珍藏版)》请在三一文库上搜索。
1、流程控制敘述,內 容 大 綱,if敘述 if-else敘述 條件運算子 巢狀if-else敘述 switch-case敘述 break、continue敘述 標記 控制敘述實例,if敘述(1/2),if敘述的語法為 if(條件式) 條件敘述區塊 一個if敘述可以根據條件式的成立與否來決定條件敘述區塊中的敘述是否要執行,流程圖 我們以下列的敘述為例: if(i%j)=0) /條件式為 (i%j)=0 System.out.println(i+“是“+j+“的倍數“); /此敘述為條件敘述區塊中唯一的敘述,if敘述(2/2),說明: Example: 假設變數i的值為9,變數j的值為3,因為9除以
2、3的餘數為0(9是3的倍數),則上列條件敘述會在命令視窗中輸出: 9是3的倍數 反之,若假設變數i的值是8,變數j的值是3,因為8除以3的餘數不為0(8不是3的倍數),所以命令視窗中不會有任何輸出。,if-else敘述(1/2),if-else的敘述與if敘述非常類似,它只是多了於條件式的值為false時必須執行的條件敘述區塊的部份而已,它的用法為: if(條件式) 條件敘述區塊1 else 條件敘述區塊2 當條件式成立時,條件敘述區塊1中的敘述會被執行,而若條件式不成立時,則條件敘述區塊2中的敘述會被執行,流程圖,if-else敘述(2/2),Example if(i%j)=0) /條件式為
3、 (i%j)=0 System.out.println(i+“是“+j+“的倍數“); /此敘述在條件式成立時會執行 else System.out.println(i+“不是”+j+“的倍數”); /此敘述在條件式不成立時會執行 假設變數i的值為9,變數j的值為3,則此敘述會在命令視窗中印出 9是3的倍數 若假設變數i的值為8,變數j的值為3,則此敘述會在命令視窗中輸出 8不是3的倍數,條件運算子(1/2),以下我們介紹與if-else敘述有類似功能的條件運算子(?:),條件運算子的用法如下:條件式 ? 值1 : 值2 在條件式成立時,條件運算子會傳回值1,而在條件式不成立時,條件運算子會傳
4、回值2 Example:成績 = 60 ? “及格” : “不及格” 在變數成績大於等於60時,上列由條件運算子所構成的式子傳回的值為“及格“字串。反之,在變數成績不是大於等於60(即小於60)時,上列由條件運算子所構成的式子傳回的值為“不及格“字串,條件運算子(2/2),Example:以下的if-else敘述 if(成績 = 60) System.out.println(“及格“); else System.out.println(“不及格”); 可以用條件運算子改寫如下 System.out.println(成績=60 ? “及格“ : “不及格“ );,巢狀if-else敘述(1/4)
5、,以下我們介紹巢狀if-else敘述(nesting if-else statement),所謂巢狀if-else敘述指的是if-else敘述區塊中還包含有if-else敘述 Example: if(ij) if(ik) System.out.println(i+“最大“); /表示ij且ik else System.out.println(k+“最大“); /表示ij且ki else if(jk) System.out.println(j+“最大”); /表示 非(ij) (即ij)且 (jk) else System.out.println(k+“最大”); /表示 非(ij) (即ij)
6、且 非 (jk) (即jk),巢狀if-else敘述(2/4),說明: 巢狀if-else敘述也可以用條件運算子取代之,例如ij?(ik?i:k):(jk?j:k) 會傳回i、j、k三個變數中數值最大的值。 Example: if(成績=90) System.out.println(“優“); else if(成績=80) System.out.println(“甲“); else if(成績=70) System.out.println(“乙“); else if(成績=60) System.out.println(“丙“); else System.out.println(“不及格“);,
7、巢狀if-else敘述(3/4),以上的程式片段,會依變數成績的值而輸出 “優”、“甲”、“乙”、“丙”或“不及格” 等字串,上述的程式片斷只有else部份的敘述區塊內含巢狀的if-else敘述,是一種比較特別的巢狀結構。碰到這種特別的巢狀if-else敘述,一般我們會取消各行之間的縮排,寫成如下的格式: if (成績=90) System.out.println(“優“); else if (成績=80) System.out.println(“甲“); else if (成績=70) System.out.println(“乙“); else if (成績=60) System.out.p
8、rintln(“丙“); else System.out.println(“不及格“);,巢狀if-else敘述(4/4),上述巢狀if-else敘述也可以使巢狀條件運算子來改寫如下: System.out.println( (成績=90)?“優“: (成績=80)?“甲”: (成績=70)?“乙“: (成績=60)?“丙“:“不及格“ );,switch-case敘述(1/4),以下我們介紹switch-case敘述,其用法為 switch(算式) case定值1: 敘述區塊1 case定值2: 敘述區塊2 . case定值N: 敘述區塊N default: 預設敘述區塊 上列switch-
9、case敘述的用法中,算式及定值1、定值2、定值N都必須為int型別,或是可轉換為int型別而不會有數值誤差的char型別、byte型別及short型別。,switch-case敘述(2/4),敘述switch-case的流程圖 switch-case敘述會先對算式求值,然後再依序於case關鍵字後的定值1、定值2、定值N尋找與算式的值吻合(match)的定值。假若有找到,則程式執行流程就轉到相對的敘述區塊中執行,如果找不到與算式吻合的定值,則程式執行流程會轉到default關鍵字後的預設敘述區塊中執行,而如果沒有與算式吻合的定值,而又沒有default關鍵字,則程式執行流程會跳過整個swit
10、ch敘述。,switch-case敘述(3/4),請注意,若有吻合的定值要執行相同的敘述區塊,我們可以將數個case 定值 寫在一起,我們只要在其中間以冒號隔開即可:case 定值1:case 定值2:case 定值N : 敘述區塊 switch-case敘述中的case定值,其用法非常類似我們後面馬上要介紹的標記(label)的用法,所謂標記是在程式中替某個敘述加上識別名稱,標記的用法在本章稍後將有詳細介紹。 關鍵字case中定值的用法與標記(label)用法的相似性,形成switch-case敘述中的流經(fall through)現象。,switch-case敘述(4/4),可以使用br
11、eak敘述來打破敘述區塊間的流經現象,其用法為將break敘述列為每個敘述區塊的最後一個敘述,當程式執行流程在碰到break敘述之後不會再進入switch-case敘述中的其他敘述區塊而會直接跳離整個switch-case敘述區塊,即執行流程轉移到整個switch-case敘述之後。 Example: switch (成績/10) case 10: case 9: System.out.println(“優“);break; case 8: System.out.println(“甲“);break; case 7: System.out.println(“乙“);break; case 6:
12、 System.out.println(“丙“);break; default: System.out.println(“不及格“); 說明:,break、continue敘述與 標記的使用 (1/3),break敘述可以使程式的執行跳離switch-case敘述區塊,實際上,break敘述也可以用來跳離迴圈敘述區塊(包括for迴圈敘述區塊、while迴圈敘述區塊及do迴圈敘述區塊)。 Example: int 陣列=1,2,3,0,4,5,0,6; for (int i=0;i陣列.length;+i) if (陣列i=0) break; else System.out.print(陣列i)
13、; 上列的程式片斷執行結果為印出123(即陣列0、陣列1、陣列2的值)之後即會停止執行,這是因為當變數i的值為3時,條件式陣列i=0成立,此時會執行break敘述,而此時程式執行流程會跳離整個迴圈敘述區塊。,break、continue敘述與 標記的使用 (2/3),continue,continue敘述會直接執行迴圈的遞增敘述,並使程式執行流程直接跳回迴圈敘述區塊的開頭。 Example: int 陣列=1,2,3,0,4,5,0,6; for (int i=0;i陣列.length;+i) if (陣列i=0) continue; else System.out.print(陣列i); 上
14、列程式片斷執行結果印出為印出123456。這是因為變數i的值為3及6之時,條件式陣列i=0成立,此時時會執行continue敘述,而使遞增敘述+i;直接執行後,程式流程即會回到迴圈敘述區塊的開頭,繼續執行迴圈的下一個反覆(iteration)。也就是說,continue敘述會以新的迴圈變數開始下一個新的迴圈敘述區塊的執行。,break、continue敘述 與標記的使用 (3/3),一般而言,break敘述與continue敘述都是用於跳開包含break敘述或continue敘述的最內層的敘述區塊。除了上述的一般用法,break敘述與continue敘述也可以配合標記(label)的使用來作較
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流程 控制 叙述
链接地址:https://www.31doc.com/p-2597306.html