Java程序設(shè)計(jì)第3章-程序流程控制_第1頁
Java程序設(shè)計(jì)第3章-程序流程控制_第2頁
Java程序設(shè)計(jì)第3章-程序流程控制_第3頁
Java程序設(shè)計(jì)第3章-程序流程控制_第4頁
Java程序設(shè)計(jì)第3章-程序流程控制_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Java程序設(shè)計(jì)第3章 程序流程控制程序流程控制典型程序結(jié)構(gòu) 01選擇結(jié)構(gòu)02循環(huán)結(jié)構(gòu)03控制跳轉(zhuǎn)語句04本章內(nèi)容專題應(yīng)用:典型流程控制算法05第1節(jié) 典型程序大家所見到的程序都是按照語句編寫的先后順序逐條地執(zhí)行。例如:聲明變量,給變量賦值,最后輸出變量的值。然而,在日常生活中往往會遇到很多更復(fù)雜的情況。比如:要把某個數(shù)字顯示100次?遇到一首你想反復(fù)聽的曲子?走到丁字路口前,你該選擇哪個方向?采用不同流程控制語句解決這些問題任何算法功能都可以通過程序模塊的三種基本流程結(jié)構(gòu)組成:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 第1節(jié) 典型程序第2節(jié) 選擇結(jié)構(gòu)相信大家都對各種手機(jī)套餐資費(fèi)有所了解,現(xiàn)在假設(shè)有一種

2、資費(fèi)情況為:每月基本套餐使用費(fèi)20元,其中包括主叫100分鐘通話時(shí)間,超過100分鐘后,主叫每分鐘0.15元。給定一個主叫通話時(shí)間,試計(jì)算出所需要的電話費(fèi)用? 選擇結(jié)構(gòu)是指程序通過判斷給定條件的結(jié)果來選擇執(zhí)行哪個流程分支 。Java提供的兩種選擇語句:if語句和switch語句。 第2節(jié) 選擇結(jié)構(gòu)if語句 if-else語句的基本形式:if(條件表達(dá)式) 語句塊1;else 語句塊2;語句的執(zhí)行過程 第2節(jié) 選擇結(jié)構(gòu)說明: 1.if語句中條件表達(dá)式的結(jié)果必須為邏輯型 int x=0;if(x) 2.語句塊既可以是一條語句也可以是多條語句int x=5;if(x=0) x=-x; System.

3、out.println(x=+x);結(jié)果有何變化?第2節(jié) 選擇結(jié)構(gòu)說明: 3.嵌套的if語句int x=-5;if(x=90) grade=A;else if(score=80) grade=B;else grade=C;System.out.println(成績等級為:+grade);else if(score=80) grade=B; System.out.println(成績等級為:+grade);程序3-2例:給定一個成績,輸出對應(yīng)的等級。(A、B、C) 關(guān)于選擇結(jié)構(gòu)下列說法正確的是( )if語句和else語句必須成對出現(xiàn)。if語句可以沒有else語句對應(yīng)。一個if語句只能有一個els

4、eif語句與之對應(yīng)。elseif結(jié)構(gòu)中必須有default語句。ABCD提交單選題第2節(jié) 選擇結(jié)構(gòu)語句的基本形式switch(表達(dá)式) case 值1:語句塊1; break; case 值2:語句塊2; break; case 值n:語句塊n; break; default:語句塊n+1;Switch執(zhí)行過程語句塊n如果是多條順序執(zhí)行的語句可以不用大括號語句執(zhí)行過程switch語句第2節(jié) 選擇結(jié)構(gòu)說明 1. switch語句的每個case不負(fù)責(zé)指明流程的出口,一旦遇到相等的值,執(zhí)行完相應(yīng)的語句塊后,不再判斷后面的case值 ,結(jié)構(gòu)中通過break語句將流程轉(zhuǎn)到程序的出口。 char grad

5、e=A; switch(grade) case A: System.out.println(優(yōu)秀); case B: System.out.println(良好); case C: System.out.println(中等); default: System.out.println(不及格);優(yōu)秀良好中等不及格第2節(jié) 選擇結(jié)構(gòu)2. 并非所有的case后面都必須有break語句。比如多個值有一個相同的結(jié)果時(shí),只需要在最后一個case值后面填寫相應(yīng)的語句塊。 char grade=B; switch(grade) case A: case B: case C: System.out.printl

6、n(及格); break; default: System.out.println(不及格); 第2節(jié) 選擇結(jié)構(gòu)3. switch后的表達(dá)式可以是單個變量,也可以是帶有各種操作符的表達(dá)式。但是,表達(dá)式的值必須是byte、short、int、char或String類型。 float x=2.0; switch(x) case 2.0: int y=1; switch(y*5) int x=3,y=1; switch(x) case y+2: x不能是浮點(diǎn)型數(shù)據(jù) 正確 case后面不能為帶有變量的表達(dá)式 程序3-3 下面程序段,當(dāng)x=2 時(shí),運(yùn)行結(jié)果是( )switch (x) case 1: S

7、ystem.out.println(1) ;case 2:case 3: System.out.println(3) ;case 4: System.out.println(4) ;沒有輸出任何結(jié)果輸出結(jié)果為3輸出結(jié)果是3和4輸出結(jié)果是l、3和4ABCD提交單選題第3節(jié) 循環(huán)結(jié)構(gòu) 先來討論一個薪酬問題。甲對老板說每月(30天)給我3000-5000元。乙說你第1天給我1分錢,第2天給我2分錢,第3天給我4分錢,你每天給我的錢是前一天的2倍。丙說我家境比較好,不缺錢,主要是鍛煉一下自己的能力。酬金嘛,我每天給你10萬,你只要付我乙所說的工資就行了。老板經(jīng)過考慮聘用了丙,請問30天后雙方各得到多少

8、錢? 循環(huán)結(jié)構(gòu)是指程序在滿足一定條件的情況下反復(fù)地執(zhí)行某個程序塊,這個程序塊通常稱為循環(huán)體。Java提供的三種循環(huán)語句:for循環(huán)、while循環(huán)和do-while循環(huán)。第3節(jié) 循環(huán)結(jié)構(gòu) for語句 for語句的語法格式: for(初始語句; 條件表達(dá)式; 迭代語句) 循環(huán)體; int i; for(i=1;i=2;i+) System.out.println(i+i); for語句的執(zhí)行過程第3節(jié) 循環(huán)結(jié)構(gòu)說明: 1. for語句小括號內(nèi)是三條獨(dú)立的Java語句,都可以為空。 但易造成死循環(huán)。 for( ; ; ) System.out.println(循環(huán)能結(jié)束嗎?); 2. 邏輯表達(dá)式也

9、可以是包含邏輯運(yùn)算符的表達(dá)式,初始化語句和迭代語句可以是用逗號分開的按照順序執(zhí)行的多條語句。 for(int i=1,j=10;i=3 & j4;i+,j-) 第3節(jié) 循環(huán)結(jié)構(gòu) 3. 若聲明多個變量,可以用逗號將它們分開,但這些變量必須是同種數(shù)據(jù)類型。 double j;for(int i=1,j=1.0;i=3;i+) 4. 在for語句體內(nèi)聲明的變量,其作用域只在循環(huán)體內(nèi)有效,for循環(huán)結(jié)束,變量將不再起作用。int sum=0;for(int i=1;i=100;i+) sum+=i; System.out.println(“i=+i); i的作用范圍 程序有錯誤程序3-4第3節(jié) 循環(huán)結(jié)

10、構(gòu) for語句常常用在循環(huán)執(zhí)行的次數(shù)比較明確的情況下。當(dāng)程序需用某種邏輯表達(dá)式來決定循環(huán)的執(zhí)行與否時(shí),使用for循環(huán)不是很方便。這時(shí),可采用while或者do-while語句來實(shí)現(xiàn)。 while語句while語句的一般語法格式為:while(條件表達(dá)式) 循環(huán)體;While語句的執(zhí)行過程第3節(jié) 循環(huán)結(jié)構(gòu)說明 1. 循環(huán)體內(nèi)要有能夠改變邏輯表達(dá)式結(jié)果的語句,以保證邏輯表達(dá)的結(jié)果可以從true變?yōu)閒alse,避免出現(xiàn)死循環(huán)。 int i=1 while(i=3) System.out.println(i+i); i+; 第3節(jié) 循環(huán)結(jié)構(gòu)2. 分號的誤用for(int i=1;i=3;i+); Sy

11、stem.out.println(for語句后面可以接分號嗎?);int i;While(i=3); System.out.println(while語句后面可以接分號嗎?);分號不會使程序造成死循環(huán)! 分號會使程序造成死循環(huán)! 程序3-5第3節(jié) 循環(huán)結(jié)構(gòu)do-while語句 do-while語句的語法格式為:do 循環(huán)體;while(條件表達(dá)式);do-while語句執(zhí)行過程 int i=10; do i=i+1; while(i5); System.out.println(i);第3節(jié) 循環(huán)結(jié)構(gòu)說明 1. do-while語句的特點(diǎn)是先執(zhí)行循環(huán)體,再判斷條件。因此,循環(huán)體至少都會被執(zhí)行一次

12、。而while語句循環(huán)體可能一次都不執(zhí)行。 2. 使用do-while語句時(shí),注意在while語句的結(jié)尾處有分號。 程序3-6:求e=1+1/1!+1/2!+1/3!+1/N! 的近似值,要求累加到最后一項(xiàng)的值小于0.00000001為止。 關(guān)于for循環(huán)和while循環(huán)的說法正確的是( )while循環(huán)先判斷后執(zhí)行,for循環(huán)先執(zhí)行后判斷。while循環(huán)判斷條件一般是程序結(jié)果,for循環(huán)的判斷條件一般是非程序結(jié)果。兩種循環(huán)任何時(shí)候都不可以替換。兩種循環(huán)結(jié)構(gòu)中都必須有循環(huán)體,循環(huán)體不能為空。ABCD提交單選題第3節(jié) 循環(huán)結(jié)構(gòu) 嵌套循環(huán) 如果在一個循環(huán)內(nèi)又包含另外一個或者多個循環(huán),那么就形成了嵌

13、套循環(huán)。 第3節(jié) 循環(huán)結(jié)構(gòu)for(int i=0;i=2;i+) for(int j=0;j=1;j+) System.out.println(i= +i+”,j=”+j); 程序段共執(zhí)行3*2次,結(jié)果為:i=0,j=0i=0,j=1i=1,j=0i=1,j=1i=2,j=0i=2,j=1程序3-7第4節(jié) 控制跳轉(zhuǎn)語句標(biāo)號語句 格式: 標(biāo)號: 語句; 說明: 1. 標(biāo)號命名規(guī)則與一般的標(biāo)識符命名規(guī)則相同,它只是用來標(biāo)識語句,并不影響語句的執(zhí)行效果。 2. 標(biāo)號只可以放在for、while和do語句之前,用于配合break和continue兩種語句實(shí)現(xiàn)程序跳轉(zhuǎn)功能。第4節(jié) 控制跳轉(zhuǎn)語句 cont

14、inue語句 終止本次循環(huán),直接進(jìn)入下一次循環(huán)。 continue只能用在循環(huán)語句中。 1.不帶標(biāo)號的continue語句 for(int i=1;i=20;i+) System.out.print(); if(i%5!=0) continue; System.out.println(); 第4節(jié) 控制跳轉(zhuǎn)語句2.帶標(biāo)號的continue語句 這種語句形式一般用在嵌套循環(huán)中,標(biāo)簽通常放到continue所在循環(huán)的外層循環(huán)處,表明流程會跳轉(zhuǎn)到標(biāo)號所在的循環(huán)的下一次循環(huán)執(zhí)行。 out: for(int i=1;i20;i+) for(int j=2;ji;j+) if(i%j=0) continu

15、e out; System.out.print(i+, ); 1, 2, 3, 5, 7, 11, 13, 17, 19, 程序3-8第4節(jié) 控制跳轉(zhuǎn)語句break語句 使程序的流程從一個語句塊內(nèi)部跳轉(zhuǎn)出來。即跳轉(zhuǎn)到流程的出口,break用在switch語句和循環(huán)語句中。 1.不帶標(biāo)號的break語句 for(int i=1;i=100;i+) if(i=10) break;程序僅僅執(zhí)行了10次 第4節(jié) 控制跳轉(zhuǎn)語句2.帶標(biāo)號的break語句 這種語句形式一般也常用在嵌套循環(huán)中,用來在內(nèi)層循環(huán)中直接結(jié)束所有的循環(huán) ,標(biāo)號要放到需要跳出的循環(huán)處 。 out: for(int i=1;i20;i+

16、) for(int j=2;ji;j+) if(i%j=0) break out; System.out.print(i+, ); 1, 2, 3, 分析如下程序段,輸出結(jié)果為( )for(int i=0; i6;i+) int k=+i; while(k5) System.out.print(i); break;0242412313ABCD提交單選題第5節(jié) 專題應(yīng)用程序3-9 從鍵盤上輸入三個整數(shù),按照由小到大的順序輸出這三個整數(shù)。提示:解決本問題的關(guān)鍵是“比較”和“交換”。兩個數(shù)交換可以借助第三個臨時(shí)變量來完成。請思考還可以有其他方法嗎?程序3-9第5節(jié) 專題應(yīng)用程序3-10 輸入某年某月某日,計(jì)算這一天是這一年中的第幾天? 提示:由于不同的月份的天數(shù)不同,可以用switchcase來完成個月份的天數(shù)計(jì)算。 程序3-10第5節(jié) 專題應(yīng)用程序3-11 中國古代算書張丘建算經(jīng)中有一道著名的百雞問題:公雞每只值5文錢,母雞每只值3文錢,而3只小雞

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論