《《程序控制流程》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《程序控制流程》PPT課件.ppt(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第3章 程序控制流程,3.1 選擇結(jié)構(gòu)程序設計 3.2 循環(huán)結(jié)構(gòu)程序設計 3.3 break和continue語句,3.1 選擇結(jié)構(gòu)程序設計,單條件 if… else 多條件 switch,3.1.1 if語句,當條件為真(true)時執(zhí)行一個操作 條件為假(false)時執(zhí)行另一個操作,(1)雙分支 if(布爾表達式) 語句區(qū)塊1 else 語句區(qū)塊2,(2)單分支 if(布爾表達式) 語句區(qū)塊1,(3)if 的嵌套 if(布爾表達式1) 語句區(qū)塊1 else if (布爾表達式2) 語句區(qū)塊2 else if (布爾式3) 語句區(qū)塊3 …. else,,(1)雙分支:
2、c3_1.java判斷給出的成績是否及格,public class c3_1 { public static void main(String[ ] args) { int grade; grade=86; if(grade>=60) { System.out.print("通過,成績是:"); System.out.println(grade); } else System.out.println("不及格"); } },語句塊——多行語句,必須加{ },單行語句,程序的運行結(jié)果是: 通過,成績是:86,例c3_2.java 比較兩個數(shù)的大小,import java.
3、awt.*; import java.applet.*; public class c3_2 extends Applet { public void paint(Graphics g) { double d1=43.4; double d2=85.3; if(d1>=d2) g.drawString(d1+" >= "+d2,25,25); else g.drawString(d1+" < "+d2,25,25); } },(2)單分支 c3_3.java 只有當成績小于60時,輸出“未通過” 其他不輸出,public class c3_3 { public static
4、void main(String[ ] args) { int grade; grade=56; if(grade=90)System.out.println("成績:優(yōu)"); else if(grade>=80)System.out.println("成績:良"); else if(grade>=70)System.out.println("成績:中等"); else if(grade>=60)System.out.println("成績:及格"); else System.out.println("成績:不及格"); } },例c3_5.java public
5、 class c3_5 { public static void main(String[ ] args) { int x,y; x=8;y=4; if(x>6) if(y>6) System.out.println(“設備正?!?; else System.out.println("設備出錯"); } },注意:if嵌套時,最近匹配:else 將與離它最近的if配對,程序錯誤反例: 當x和y都大于6時,輸出“設備正?!钡?信息;僅當x6,y<=6時,輸出了“設備出錯” 而xy) m=x; else m=y; 可用下面的條件運算符來替代: m=(x>y)?x :y 若x
6、>y為true 則表達式取x的值,否則取y的值 形式: 布爾表達式1?表達式2 :表達式3,表達式2和表達式3的類型必須相同,【示例程序c3_7.java】 public class c3_1 { public static void main(String args[ ]) { int max, min,a,b; int y; a=1; b=2; max=(a>b) ? a : b; y=(a!=b) ? 1 : 0; min=(a
7、; System.out.println("\tmin="+min); } },運行結(jié)果是: max=2 y=1 min=1,,,3.2 循環(huán)結(jié)構(gòu)程序設計,while do-while for,while(布爾表達式) { 循環(huán)體語句區(qū)塊 },do { 循環(huán)體語句區(qū)塊 } while(布爾表達式),While和do-while的區(qū)別: Do-while至少執(zhí)行一次循環(huán)體 而while可能一次都不執(zhí)行,3.2.1 while語句,【示例程序c3_8.java】 打印數(shù)字1~5。 public class c3_8 { public static void main(String[ ]
8、 args) { int counter=1; //循環(huán)變量及其初始值 while(counter<=5) //循環(huán)條件 { System.out.println("counter="+counter); counter++; //循環(huán)變量增值 } } },,運行結(jié)果如下: counter=1 counter=2 counter=3 counter=4 counter=5,3.2.2 do-while語句,【示例程序c3_9.java】 計算從1開始的連續(xù)n個自然數(shù)之和,當其和值剛好超過100時結(jié)束,求這個n值。 import java.awt.*; import jav
9、a.applet.*; public class c3_9 extends Applet { public void paint(Graphics g) { int n=0; int sum=0; //循環(huán)變量及其初始值 do{ n++; sum+=n; //循環(huán)變量增值 }while(sum<=100); //循環(huán)條件 g.drawString("sum="+sum,25,25); g.drawString("n="+n,100,25); } },該程序的運行結(jié)果是: sum=105 n=14,3.2.3 for語句,適于:確切知道循環(huán)次數(shù)時 一般形式 for
10、(初值表達式;布爾表達式;循環(huán)過程表達式) { 循環(huán)體程序語句區(qū)塊 },循環(huán)變量賦初值,用來判斷循環(huán)是否繼續(xù),完成修改循環(huán)變量、改變循環(huán)條件,true,false,c3_10.java 求自然數(shù)1~100之間所有奇數(shù)之和。,public class c3_10 { public static void main(String[ ] args) { int sum=0,odd; for(odd=1;odd<=100;odd+=2) { sum +=odd; } System.out.println("sum="+sum+" odd="+odd); } },該程序的運行結(jié)
11、果是: sum=2500 odd=101,,true,false,public class c3_11 { public static void main(String[ ] args) { int f1=1, f2=1; //f1為第一項,f2為第二項 for( int i=1; i10) break; //3.布爾表達式寫在了循環(huán)體內(nèi)的if語句中 } System.out.println("sum="+sum); } },【特2】for頭中使用逗號表達式,for結(jié)構(gòu)頭的構(gòu)件中,“初值表達式”和“循環(huán)過程表達式”中還可以使用逗號運算符。這也是Java中唯一使用逗號運算符的地方。,
12、public class c3_13 { public static void main(String[ ] args) { int i,sum; for(i=1,sum=0;i<=10;i++) //初值表達式中使用了逗號運算符 sum+=i; System.out.println("sum="+sum); } } 該程序的運行結(jié)果是: sum=55,for(i=1,sum=0;i<=10;i++,sum+=i;) ; System.out.println("sum="+sum); //千萬別忘記for末尾的;否則下一句就被當成循環(huán)體了,思考,while vs. do-whil
13、e vs. for及其適用場合,c3_15.java統(tǒng)計選票,設有李L、王 W、張Z 三人競選領導,由群眾投票表決 import java.io.*; public class c3_15 { public static void main(String[ ] args)throws IOException { BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); //上面一條語句是有關鍵盤輸入數(shù)據(jù)流處理的,詳細內(nèi)容將在第12章講解 int Ltotal=0,Wtotal=0,Ztotal
14、=0; char name; String c1; System.out.print("enter letter L or W or Z name, # to end:"); c1=keyin.readLine( );//從鍵盤上讀取一個字符串賦給c1 name=c1.charAt(0);// charAt(0)從一個字符串中截取第0個字符 while(name!=#) { switch(name) { case L: case l: Ltotal=Ltotal+1; break; case W: case w: Wtotal=Wtotal+1; break
15、; case Z: case z: Ztotal=Ztotal+1; break; } System.out.print("enter letter L or W or Z name ,# to end:"); c1=keyin.readLine( ); name=c1.charAt(0); } //while循環(huán)結(jié)束,System.out.println(" Ltotal="+Ltotal); System.out.println(" Wtotal="+Wtotal); System.out.println(" Ztotal="+Ztotal); } }//end
16、 of class,3.2.7循環(huán)嵌套c3_16.java,//編程打印三角形數(shù)字圖案。 public class c3_16 { public static void main(String[ ] args) { for(int i=1;i=10) System.out.print(+i+” "); else System.out.print(+i+“ "); } System.out.println(" "); } //外層for循環(huán)結(jié)束 } },1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6
17、6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10,,,public class c3_17 { public static void main(String[ ] args) { int n=1,m,s,k=0; while(n<=8) { for(s=1,m=1;m<=n;m++) s=s*m; //計算n!,結(jié)果存于s中 k=k+s; //計算前n項階乘之和,結(jié)果存于k中 System.out.println(n+"!="+s+"
18、k="+k); n++; } } },c3_17.java求解 (即1!+2!+3!+……+7!+8!),程序的運行結(jié)果如下: 1!=1 k=1 2!=2 k=3 3!=6 k=9 4!=24 k=33 5!=120 k=153 6!=720 k=873 7!=5040 k=5913 8!=40320 k=46233,3.3 break 和continue語句,break: 1)可獨立使用,如case中 用在switch語句中,其作用是強制退出switch結(jié)構(gòu),執(zhí)行switch結(jié)構(gòu)后的語句 2)退出本層循環(huán) 若有內(nèi)外環(huán),則只能跳出內(nèi)環(huán),到外環(huán) Continue 只用于循環(huán),結(jié)束本
19、次循環(huán),開始下次循環(huán) 當程序執(zhí)行到continue語句時就返回到循環(huán)的入口處,執(zhí)行下一次循環(huán),而使循環(huán)體內(nèi)寫在continue語句后的語句不執(zhí)行,//對0~1000以內(nèi)的不能被3整除的數(shù)求和,當和超過100時,打印參與計算的數(shù)的個數(shù)及累加和。 public class sample { public static void main(String[ ] args) { int sum=0,i; for(i=0;i100) break; } System.out.println("sum="+sum+" i="+(i-1)); } } //結(jié)果是sum=108 i=16,3.3.2 continue,,作業(yè),P58 1,3,6,7,9,10,12,