《流程控制》课件.ppt

上传人:小飞机 文档编号:5047736 上传时间:2023-05-31 格式:PPT 页数:73 大小:337.49KB
返回 下载 相关 举报
《流程控制》课件.ppt_第1页
第1页 / 共73页
《流程控制》课件.ppt_第2页
第2页 / 共73页
《流程控制》课件.ppt_第3页
第3页 / 共73页
《流程控制》课件.ppt_第4页
第4页 / 共73页
《流程控制》课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《《流程控制》课件.ppt》由会员分享,可在线阅读,更多相关《《流程控制》课件.ppt(73页珍藏版)》请在三一办公上搜索。

1、第四章 流程控制,4.1 语句和复合语句4.2 顺序结构4.3 分支结构4.4 循环结构4.5 循环结构中的跳转语句,public class JavaDemo10public static void main(String args)/*String str1=Hello,;String str2=World!;String str3=str1+str2;System.out.println(str3);*/int i=10;int j=20;/所有的数据都会自动向字符串转型System.out.println(i+j=+i+j);,提问,4.1 语句和复合语句,语句可以是以分号“;”结尾的

2、简单语句。也可以是用一对花括号“”括起来的复合语句。System.out.println(“Hello World”);x=a+8;y=x0?x:-x;s=TextBox1.getText();a=Integer.parseInt(s);,4.1 语句和复合语句,一个复合语句可以嵌套另一个复合语句。Java不允许在两个嵌套的复合语句内声明两个同名的变量。如:如下面的代码在编译时将会出错。public static void main(String args)int a;int b;int a;/错误,因变量a前面已定义,4.1 语句和复合语句,另外在程序设计过程中经常要用到注释语句。Java允

3、许在源程序文件中添加注释(comment),以增加程序的可读性,系统不会对注释的内容进行编译。Java有三种形式的注释。1单行注释:/单行注释 2多行注释:/*单行或多行注释*/3文件注释:/*文件注释*/,4.2 顺序结构,顺序结构是最简单的流程控制结构。顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。如图4.1所示的即为结构化程序设计中的顺序流程控制结构。,4.2 顺序结构,4.3 分支结构,分支结构又称为选择结构,是一种在两种以上的多条执行路径中选择一条执行的控制结构,这里所说的执行路径是指一组语句。通常分支结构要先做一个判断,根据判断的结果来决定选择哪一条

4、执行路径。,4.3.1 分支结构,第一种应用的格式为双路条件选择,其格式如下:,if(条件表达式)语句序列else 语句序列,双路条件选择其程序控制结构如图4.2所示。,4.3.1 分支结构,2.第二种应用的格式为单路条件选择,其格式如下:,if(条件表达式)语句序列,单路条件选择其程序控制结构如图4.3所示。,4.3.1 分支结构,【例4.1】找出三个整数中的最大值和最小值,/app4_1.java if语句的应用public class app4_1 public static void main(String args)int a=1,b=2,c=3,max,min;if(ab)max=

5、a;else max=b;if(cmax)max=c;System.out.println(“Max=”+max);min=ab?a:b;min=cmin?c:min;System.out.println(“Min=”+min);,课堂练习:体重问题,标准体重(身高100)0.9(单位:千克)其数值的正负10为健康。你是否拥有一个健康的体型呢?如何用java程序实现以上体型判断?,问题分析,据标准,一个人的体重有两种可能性:体重在标准范围内、体重超标。流程图描述为两分支结构,采用if-else结构即可解决。,问题求解:流程图转换为程序,程序,3.第三种应用格式为多重条件选择结构,其格式如下:,

6、if(条件表达式)语句序列else if(条件表达式)语句序列2 else if(条件表达式n)语句序列nelse 语句序列n+1,4.3.1 分支结构,多重条件选择结构如图4.3所示。,【例4.2】给出一个分数,按不同的分数段将其评定为A、B、C、D和E五个档次之一。,public class App4_2 public static void main(String args)int testscore=86;char grade;if(testscore=90)grade=A;else if(testscore=80)grade=B;else if(testscore=70)grade=

7、C;else if(testscore=60)grade=D;else grade=E;(“评定成绩为:”+grade);,补充:if语句的嵌套,当if语句中又包含若干个if语句时,则构成了if 语句嵌套的情形。,if(表达式1)if(表达式2)语句序列1;else 语句序列2;else if(表达式3)语句序列3;else 语句序列4;即当if语句中(else语句中)的执行语句又是if语句时,则构成了if 语句嵌套的情形。采用嵌套结构实质上是为了进行多分支选择.,表现形式:,内嵌的if语句,内嵌的else语句,注意:当采用省略else形式时,要注意 if 和 else 的配对规则。用else

8、 与前面最接近它且未配对的if 配对。,课堂提问,if(a!=b)if(ab)System.out.println(AB);else System.out.println(AB);else System.out.println(A=B);1.指出上述语句的配对关系?2.上述语句用if-else-if语句完成。,答案:,我们会发现程序更加清晰。因此,在一般情况下较少使用if语句的嵌套结构。以使程序更便于阅读理解。,if(ab)System.out.println(“AB);else if(ab)System.out.println(AB);else System.out.println(AB);

9、,小结,1.if语句有3种结构。2.if语句也可以嵌套,内嵌的if语句最好包括else语句,因为else语句总是与它上面最靠近的if语句配对。3.在一般情况下尽量少使用if语句的嵌套结构。,作业,算法:输入 x 若x0 y=-1 否则:若x=0 y=0 否则:y=1 输出 y,作业(续),2.P72 习题13.实现判定闰年的程序。,switch 选择语句,在多重条件选择的情况下,可以使用if else 结构来实现,但是,使用多分支开关语句会使程序更为精练、清晰。switch语句就是多分支的开关语句,常用于多重条件选择。,语句,s witch语句是一个多分支选择语句,也叫开关语句。switch(

10、变量名称或表达式)case 符合数字或字符:语句块1;break;case 符合数字或字符:语句块2;break;default:语句块3;,public class JavaDemo07 public static void main(String args)char c=a;switch(c)case a:(条件1满足。);/表示退出switch语句break;case b:(条件2满足。);break;case c:(条件3满足。);break;default:/如果一切条件都不满足了,则执行default语句(没有任何条件满足。);,例:假设用0、1、2.6分别表示星期日、星期一.星期

11、六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,作业,给出一百分制成绩,要求输出成绩等级:90 分以上为 A 等,8089 分为 B 等,7079 分为 C 等,6069 分为 D 等,60 分以下为 E 等。(注意分数段的表示方法,用switch语句实现该功能。),4.4 循环结构,循环结构是在一定条件下,反复执行某段程序的控制结构,被反复执行的语句序列称为循环体。在Java语言中循环结构是由循环语句来实现的。Java中的循环语句共有三种:while语句、do-while语句和for语句。,4.4.1 while语句,while语句的一般语法结构如下

12、:while(条件表达式)循环体,循环体可以是单个语句,也可以是复合语句块。while语句的执行过程是先判断条件表达式的值,若为真,则执行循环体,循环体执行完之后,再转向到条件表达式重新计算与判断条件表达式;直到当计算出的条件表达式为假时,跳过循环体执行while语句后面的语句,循环终止。,4.4.1 while语句,while语句的循环执行过程如图4.5所示。,public class TestWhile1public static void main(String args)/循环控制变量赋初始值/循环条件/循环体(含改变循环控制变量值的语句),用whie语句编程实现输出20个*,课堂练习

13、:,用whie语句编程实现输出你名字的十遍。,public class TestWhile3public static void main(String args)/循环控制变量赋初始值/循环条件/循环体(含改变循环控制变量值的语句),用whie语句编程实现123100,计算Fibonacci序列的前16项。Fibonacci序列的通项公式为:,/app4_4.java while语句的应用public class App4_4 public static void main(String args)final int MAX=15;/定义常量MAX=15 int i=0,j=1,k=1;wh

14、ile(k=MAX)(+i+j);i=i+j;/计算Fibonacci序列中的下一个数 j=i+j;/计算Fibonacci序列中的下一个数 k=k+2;/用于改变循环的条件表达式的值();,【例4.4】续,计算Fibonacci序列的前16项。,程序运行结果:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610,【例4.4】续,4.4.1 while语句,4.4.2 do-while语句,do-while语句的一般语法结构如下:do 循环体while(条件表达式);/注意此处;号不能少,do-while循环语句的结构如图4.6所示。,public clas

15、s TestDoWhile1public static void main(String args),用do whie语句编程实现123100,while 和 do-while 循环的比较,int i=11;while(i=10)s+=i;i+;,i=11;dos+=i;i+;while(i=10);,小结,1.循环结构用于描述一些重复执行的语句。2.循环的执行过程。3.常见的循环包括3部分:循环开始的条件,例如:num=1循环的条件,例如:num6改变循环的条件,例如:num+4.注意while和do while的区别,作业:,1.计算并输出1-3+5-7+-99+101的值2.从键盘读入一

16、整数n(n=10),计算n的阶乘n!(n!=1 2 3 n),并将结果输出。3.打印出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位数字立方之和等于其数本身。例如,153是一个“水仙花数”,因为153135333。,4.4.3 for循环语句,for循环语句的基本使用格式如下:for(表达式,条件表达式,表达式2)循环体,for循环语句的执行过程如图4.7所示。,求1到10的累加和。本例演示了for语句的两种使用方法。,public class TestFor1 public static void main(String args)int i,n=10,s=0;for(i=1;i=n

17、;i+)/从1到10进行累加求和 s=s+i;System.out.println(“Sum=1+”+n+”=”+s);s=0;(“Sum=”);,for(i=n;i1;i-)/从10到1进行累加求和 s+=i;(i+”+”);/输出数i和加号“+”System.out.println(i+”=”+(s+i);/输出结果,该程序的执行结果如下:Sum=1+10=55Sum=10+9+8+7+6+5+4+3+2+1=55,4.4.4 多重循环,如果循环语句的循环体内又有循环语句,则称多重循环,也称循环嵌套。常用的有二重循环和三重循环。在实现手段上即可以是相同循环语句嵌套,也可以两个不同的循环构成

18、嵌套结构。下面举例说明。,真,真,外循环初始条件,内循环初始条件,内循环体,外循环条件,假,内循环条件,假,内循环循环条件,外循环循环条件,循环结束,二重循环嵌套结构执行流程,导入双重循环:输出如下图形,如何编程实现,public class DoubleLoop1 public static void main(String args)for(int i=1;i=7;i+)/外循环用来控制行数 for(int k=1;k=i;k+)/内循环用来每行1的个数 System.out.print(1);();,素数是指除1和自身外,不能被其他数整除的数。显然最小的素数是2,其余偶数均不是素数。对于

19、一个奇数k,使用3 之间的每个整数进行测试,如果找到一个整数j能除尽k,则k不是素数;而只有测试完3 范围中的所有整数都不能除尽k,才能确定k是素数。程序如下:,求100以内的素数。,/app4_12.java 循环嵌套的应用public class app4_12 public static void main(String args)final int MAX=100;/定义常量MAX=100 int j,k,n;System.out.println(“2”+MAX+”之间的所有素数为::”);System.out.print(“2t”);/2是第一个素数,不需测试直接输出 n=1;/n累

20、计素数的个数 k=3;/k是被测试的数,从最小奇数3开始测试,所有偶数不需测试 do/外层循环,从3到100进行素数测试 j=3;/用j去除待测试的数,while(jMath.sqrt(k)System.out.print(k+“t”);n+;if(n%10=0)();/每行输出10个数 k=k+2;/测试下一个奇数 while(kMAX);System.out.println(“n共有【”+n+”】个素数”);,程序运行结果如下:2100之间的所有素数为:2 3 5 7 11 13 17 19 23 2931 37 41 43 47 53 59 61 67 7173 79 83 89 97共

21、有【25】个素数,【例4.10】续,课堂练习:打印如下图案,*,*,提问:,*,打印如下图左的图案:需在图右的基础上如何修改?,*,小结:,三种结构的转化关系:,do 语句while(表达式);,表达式1;While(表达式2)语句 表达式3;,for(表达式1;表达式2;表达式3)语句,语句while(表达式)语句,小结:,选择三种循环的一般思路:,如果循环次数已知,用for如果循环次数未知,用while如果循环体至少要执行一次,用do-while只是思路,不是定律,三种结构的转化关系举例:,i=1;do printf(“i=%dn”,i);i+;while(i5);,i=1;while(i

22、5)printf(“i=%dn”,i);i+;,for(i=1;i5;i+)printf(“i=%dn”,i);,i=1;while(i5)printf(“i=%dn”,i);i+;,作业:,1.课本P73的第六题2.课本P73的第七题3.求1!+2!+10!4.打印输出九九乘法表。5.有一分数序列2/1,3/2,5/3,8/5,13/8求出这个数列的前20项之和。,作业:,(选做)计票器。假设一次选举中有3名候选人,20人投票(1人1票,且只能选择1名候选人)请用循环结构实现一个计票器,统计每名候选人的得票数。在程序设计中,可以考虑给候选人编号为1、2、3,投票时输入相应数字则表示投了该候选

23、人1票,如果输入的数字不为1/2/3,则表示是无效票,不予统计。,1.“百马百担”问题:有100匹马,驮100担货:大马驮3担,中马驮2担,两匹小马驮一担,问有大、中、小马各多少?2.从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。编写程序,输出所有可能的组合。,4.5 循环中的跳转语句,循环中的跳转语句可以实现循环执行过程中的流程转移。在switch语句中,我们所使用过的break语句就是一种跳转语句。为了提高程序的可靠性和可读性,Java语言不支持无条件跳转的goto语句,但是Java语言提供了三种无条件转移语句:return,

24、break和continue。,4.5.1 break语句,break语句的作用是使程序的流程从一个语句块内部跳转出来,如从switch语句的分支中跳出,或从循环体内部跳出,并将控制权交给循环语句或分支语句后面的语句。break语句的格式如下:break 标号;,4.5.2 continue语句,continue语句必须用在循环结构中,它的格式是:continue 标号;这个标号应该定义在程序中某一循环语句的前面,用来标志这个循环结构,标号的命名应该符合Java标识符的规定。它使程序直接转入标号标明的循环层次。,提问:读程,指出以下程序的运行结果,public class BreakLoop1

25、 public static void main(String args)int num=5;for(num=1;num5;num+)System.out.println(num1=+num);(-);for(num=1;num5;num+)if(num=3)break;System.out.println(num2=+num);(-);for(num=1;num5;num+)if(num=3)continue;System.out.println(num3=+num);,答案,课堂练习;,1.求1到200之间的所有偶数之和,要求用continue语句实现,4.5.3 return语句,return语句用来使程序从方法中返回,并为方法返回一个值。return语句的格式如下:return 返回值;如果return语句未出现在子方法中,则执行子方法的最后一条语句后自动返回到主方法。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号