




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 流程控制,學(xué)習(xí)重點(diǎn): 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu),第3章 流程控制,3.1 程序的邏輯控制 3.2 選擇控制結(jié)構(gòu) 3.2.1 由if語句引導(dǎo)的選擇結(jié)構(gòu) 3.2.2 由switch語句引導(dǎo)的選擇結(jié)構(gòu) 3.3 循環(huán)控制結(jié)構(gòu) 3.4 練習(xí)題,3.1 程序的邏輯控制,結(jié)構(gòu)化程序設(shè)計中的邏輯控制:即順序、選擇、循環(huán),而且只能 用這3種結(jié)構(gòu)來完成程序。 程序流程圖:是軟件開發(fā)者用來表達(dá)算法的一種工具,也叫程序 框圖。它用圖形化方式表達(dá)程序的算法結(jié)構(gòu),忽略算法細(xì)節(jié),著重表達(dá)程序流程,使程序的邏輯結(jié)構(gòu)直觀、清晰。它獨(dú)立于任何程序設(shè)計語言,也易于學(xué)習(xí),應(yīng)用非常廣泛。,程序流程圖,3.2 選擇控制結(jié)構(gòu),選擇控制結(jié)
2、構(gòu)是在兩種或兩種以上的多條路徑上 選擇一條執(zhí)行。通常在進(jìn)行選擇之前,先做一個判斷, 根據(jù)結(jié)果進(jìn)行選擇。Java中的選擇控制結(jié)構(gòu)有if 和 switch兩個關(guān)鍵詞來引導(dǎo)。,3.2.1 由if語句引導(dǎo)的選擇結(jié)構(gòu),由if語句引導(dǎo)的選擇結(jié)構(gòu)有ifelse結(jié)構(gòu)、if結(jié)構(gòu)和else if結(jié)構(gòu)3種。 ifelse結(jié)構(gòu) if結(jié)構(gòu) else if結(jié)構(gòu),1. ifelse結(jié)構(gòu),在所有的語言中都有這個結(jié)構(gòu),而且結(jié)構(gòu)的格式基本相同,程序流 程如圖所示。語句如下: if (條件表達(dá)式) 語句組1; else 語句組2;,ifelse結(jié)構(gòu)程序流程,例3.1 ifelse結(jié)構(gòu)示例一,import java.io.*; pu
3、blic class IfElse1 public static void main(String args) char c=0; System.out.print(Enter a character: ); try c=(char)System.in.read(); catch(IOException e); if(c=65 ,例3.2 ifelse結(jié)構(gòu)示例二,見程序代碼 注意:當(dāng)if或else中需要執(zhí)行多語句時,必須用大括號將它們括起來。 另外,如果程序的條件語句嵌套比較多,邏輯比較復(fù)雜,建議大 家多使用大括號,這樣能夠提高程序的可讀性。,2. if結(jié)構(gòu),if (條件表達(dá)式) 語句組; 例
4、如: int n=0; if(x0) x=-x; n+; 這段程序的目的是把一組數(shù)中的負(fù)數(shù)變成整數(shù),并統(tǒng)計該組數(shù)中負(fù)數(shù)的個數(shù)。,3. else if結(jié)構(gòu),if(條件表達(dá)式1) 語句組1; else if(條件表達(dá)式2) 語句組2; else if(條件表達(dá)式3) 語句組3; else if(條件表達(dá)式n) 語句組n; else 語句組n+1;,else if結(jié)構(gòu)實(shí)際上是ifelse結(jié)構(gòu)的多層嵌套,它有一個明顯的特點(diǎn)就是在多個分支中只執(zhí)行一個語句組,而其他語句組都不執(zhí)行。例如,在把百分制成績轉(zhuǎn)換成五分制成績的時候,程序源代碼如下:,if(gradeInHundred80) gradeInFive
5、=5; if(gradeInHundred60) gradeInFive=4; if(gradeInHundred40) gradeInFive=3; if(gradeInHundred20) gradeInFive=2; else gradeInFive=1;,3.2.2 由switch語句引導(dǎo)的選擇結(jié)構(gòu),switch(條件表達(dá)式) case 判斷值1 : 語句組1 case 判斷值2 : 語句組2 case 判斷值3 : 語句組3 case 判斷值n : 語句組n default : 語句組n+1 當(dāng)程序執(zhí)行到switch語句時,先計算表達(dá)式的值,假設(shè)值為A,然 后拿A與第1個case語句
6、中的判斷值相比,如果相同,則執(zhí)行語句組 1。然后再拿A與第2個case語句中的判斷值相比,如果相同,則執(zhí) 行語句組2,以此類推,直到執(zhí)行語句組n。然后不加判斷就執(zhí)行語 句組n+1。這時才跳出switch引導(dǎo)的選擇結(jié)構(gòu)。,Switch 語句和else if 結(jié)構(gòu)的區(qū)別,首先,else if結(jié)構(gòu)中的條件表達(dá)式可以很復(fù)雜,它的結(jié)果是個布爾量,而switch結(jié)構(gòu)中的條件表達(dá)式的結(jié)果是整型或字符型數(shù)據(jù); 其次,else if結(jié)構(gòu)中被執(zhí)行的分支只有一個,而switch結(jié)構(gòu)中被執(zhí)行的分支可能有多個 最后,在switch結(jié)構(gòu)中多語句的語句組不需要用大括號括起,只需用分號隔開即可,switch結(jié)構(gòu)中的跳轉(zhuǎn)語句是
7、break。不帶break的程序段如下:,switch(gradeSign) case A : gradeInFive=5; case B : gradeInFive=4; case C : gradeInFive=3; default : gradeInFive=1; 當(dāng)gradeSign為A時,switch程序塊執(zhí)行完后,gradeInFive的值將為 1。加入break語句的程序段如下:,switch(gradeSign) case A : gradeInFive=5; break; case B : gradeInFive=4; break; case C : gradeInFive=
8、3; break; default : gradeInFive=1; 當(dāng)gradeSign仍為A時,switch程序塊執(zhí)行完后,gradeInFive的值將為5。 可以看出,break語句的作用是當(dāng)程序執(zhí)行到break語句時,跳出由switch控 制的大括號,而去執(zhí)行下面的語句。,當(dāng)條件表達(dá)式得出的幾個不同結(jié)果需要執(zhí)行相同的語句組時,程序形式是多個case重疊,共同使用一個語句組。例如:,switch(gradeSign) case A : case B : case C : flag=1; break; default : flag=0; 此時,gradeSign的值無論是A,B或者C,程序
9、都將得到flag=1, 如果gradeSign是其他值,就會得到flag=0,該程序段可用于判斷某 個成績是否及格。,3.3 循環(huán)控制結(jié)構(gòu),循環(huán)控制結(jié)構(gòu)是指在一定條件下,反復(fù)執(zhí)行某程序段的流程結(jié)構(gòu)。它是由循環(huán)語句和特殊的跳轉(zhuǎn)語句實(shí)現(xiàn)控制的,反復(fù)執(zhí)行的程序段稱為循環(huán)體。 循環(huán)語句有for語句、while語句和dowhile語句,跳轉(zhuǎn)語句主要有continue語句和break語句。,1. for語句,for語句是運(yùn)用最為廣泛的一種循環(huán)語句,也是功能最強(qiáng)的一種。 一般格式如下: for(表達(dá)式1 ; 表達(dá)式2 ; 表達(dá)式3) 循環(huán)體;,For語句的程序流程,例3.3 輸出19的平方表,For1.ja
10、va的程序內(nèi)容如下: public class For1 public static void main(String args) int i; System.out.println(n n*n); System.out.println(-); for(i=1;i10;i+) System.out.println(i+ +i*i); 這個程序的循環(huán)部分初始時,給循環(huán)變量i賦值為1,每次循環(huán)時先判斷i的 值是否小于10,如果是就執(zhí)行循環(huán)體,然后給i加1,因此,最后的結(jié)果是 打印出從19的平方。,例3.4 for語句中的逗號運(yùn)算符,public class For2 public static v
11、oid main(String args) for(int i=1, j=i+10; i5; i+,j=i *2) /注意括號內(nèi)的內(nèi)容都是合法的 System.out.println(i= +i+j=+j); 這個程序在for循環(huán)的3個表達(dá)式中,除了處理循環(huán)變量之外,還 做了一些其他事情,可見,只要是合法的表達(dá)式都可以放在for循環(huán) 的表達(dá)式位置。,2. while語句,while語句是一種先判斷的循環(huán)結(jié)構(gòu),語句格式如下: while (條件表達(dá)式) 循環(huán)體 ;,while循環(huán)的程序流程圖,例3.5 查找平方小于100 000的最大整數(shù),While1.java的程序內(nèi)容如下: public c
12、lass While1 public static void main(String args) int i=0; while(i*i100000) i+; System.out.println(i+ +i*i); ,3. dowhile語句,dowhile語句的使用與while語句的使用相似,不過dowhile語 句是后判斷的循環(huán)結(jié)構(gòu),語句格式如下: do 循環(huán)體 ; while (條件表達(dá)式),dowhile語句的流程圖,4. break語句,break語句可用于switch引導(dǎo)的分支結(jié)構(gòu)以及以上3種循環(huán)結(jié) 構(gòu),它的作用是強(qiáng)行退出循環(huán)結(jié)構(gòu),不執(zhí)行循環(huán)結(jié)構(gòu)中剩余的語 句。Break語句有帶標(biāo)
13、簽和不帶標(biāo)簽兩種。 格式如下: break;/不帶標(biāo)簽 break label;/帶標(biāo)簽,label是標(biāo)簽名,例3.6 各種break語句的比較,程序代碼 程序的運(yùn)行結(jié)果,當(dāng)使用外層循環(huán)中的帶標(biāo)簽的break跳到指示內(nèi)層循環(huán)的標(biāo)簽label2時,將產(chǎn)生邏輯錯誤,編譯時就會報錯,原因是程序只在break label2所在的循環(huán)結(jié)構(gòu)以外尋找對應(yīng)標(biāo)簽,所以label2對它不可見,錯誤信息如圖所示,5. continue語句,continue語句只用于循環(huán)結(jié)構(gòu)中,它有帶標(biāo)簽和不帶 標(biāo)簽兩種格式。格式如下: continue; continue label; 不帶標(biāo)簽的continue語句作用是終止當(dāng)前
14、循環(huán)結(jié)構(gòu)的本輪循環(huán)而直接開始下一輪循環(huán)。 帶標(biāo)簽的continue語句的作用是把程序直接轉(zhuǎn)到標(biāo)簽所指示的那一個循環(huán)結(jié)構(gòu)的下一輪,而不管被它嵌套的及continue語句所在的循環(huán)結(jié)構(gòu)運(yùn)行到了哪一輪。,例3.7 熟悉continue語句,程序代碼 運(yùn)行結(jié)果,3.4 練 習(xí) 題,1. 選擇題 (1)下列說法哪個是正確的? A.結(jié)構(gòu)化程序設(shè)計中鼓勵使用goto語句 B.結(jié)構(gòu)化程序設(shè)計中絕對不能使用跳轉(zhuǎn)語句 C.結(jié)構(gòu)化程序設(shè)計中有3種邏輯控制結(jié)構(gòu):順序、循環(huán)、選擇 D.每個程序中都必須使用順序、循環(huán)、選擇這3種邏輯控制結(jié) 構(gòu),(2)關(guān)于選擇結(jié)構(gòu)下列哪個說法正確? A.if語句和else語句必須成對出現(xiàn) B.if語句可以沒有else語句對應(yīng) C.switch結(jié)構(gòu)中每個case語句中必須用break語句 D.switch結(jié)構(gòu)中必須有default語句,(3)以下語句中有語法錯誤的是: A.for(;); B.for(int i=0;i100;i+); C.if(a0) a+; D.;,2. 程序閱讀題 (1)判斷數(shù)組a的每個元素的值。 int a=new int44; for(int i=0;i4;i+) for(int j=0;j4;j+) aij=(ij ? i/j : j/i);,(2)說出m,n的最終值和含義。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 度校企合作合同書(三):人才培養(yǎng)與交流
- 兒童健康食品供應(yīng)合同
- 醫(yī)療中心服務(wù)合同樣本
- 環(huán)保工程項目內(nèi)部承包合同范本
- 北京市全日制用工勞動合同模板
- 標(biāo)準(zhǔn)版租賃與購銷合同范本
- 雙方合作經(jīng)營合同示范文本
- 城市住宅房屋買賣合同范本
- 文化機(jī)械產(chǎn)品用戶體驗評估方法考核試卷
- 工業(yè)機(jī)器人協(xié)作機(jī)器人技術(shù)考核試卷
- 醫(yī)院護(hù)理人文關(guān)懷實(shí)踐規(guī)范專家共識課件
- DeepSeek在自然災(zāi)害預(yù)警中的潛力
- 2025年專利技術(shù)保密協(xié)議書模板
- 個人合伙開店合同范本
- 生而為贏自燃成陽-開學(xué)第一課發(fā)言稿
- 2024年設(shè)備監(jiān)理師考試題庫及答案參考
- 公司外派學(xué)習(xí)合同范例
- 2025年中國國投高新產(chǎn)業(yè)投資集團(tuán)招聘筆試參考題庫含答案解析
- 2024-2025學(xué)年小學(xué)美術(shù)一年級下冊(2024)嶺南版(2024)教學(xué)設(shè)計合集
- 《研學(xué)旅行課程設(shè)計》課件-研學(xué)課程設(shè)計計劃
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設(shè)計改
評論
0/150
提交評論