Java程序设计3流程控制.ppt
- 文档编号:18715003
- 上传时间:2023-10-17
- 格式:PPT
- 页数:51
- 大小:540KB
Java程序设计3流程控制.ppt
《Java程序设计3流程控制.ppt》由会员分享,可在线阅读,更多相关《Java程序设计3流程控制.ppt(51页珍藏版)》请在冰点文库上搜索。
Java程序设计,第三章流程控制,2,学习目标,理解程序控制的概念运用条件语句,使用if,switch来控制程序的不同执行路径掌握for、while和do句型结构控制程序的循环执行理解并能应用break和continue调整程序中的流程控制结构。
理解分支和循环的影响语句范围理解变量的生存范围理解并使用断言对程序进行调试,3,程序,程序表现为完成某个功能(目标)而编写的指令集合。
构成程序的基本元结构是顺序、分支和循环在整体上,程序运行是按照事先编写的指令(语句)从前到后的顺序执行,但在执行的过程中,经常会遇到基于不同条件的决策来执行不同的指令,抑或重复执行事先定义的指令来达到某种目的,但总体上程序总是顺序执行的。
4,一个例子,编写一个程序,声明3个整型变量,用来保存3个学生的考试分数,计算他们的平均分(float类型)并输出。
5,进一步的如果某个学生的成绩低于60分,则不参与平均分计算。
6,在进一步如果有50个学生的成绩已经保存在一个整型数组中,同样基于上面规则来计算这批学生的平均分。
7,3.1句、块和空白,构成Java程序的最小单位是类,而类则是由属性和方法构成。
方法代表了某个具体的能力,具体的一个方法就是由为完成某个功能而编写的若干条语句组成。
8,3.1.1语句,在Java编程语言中,语句是一行由分号(;)终止的代码,它是一个完整的可执行单元。
例如:
totals=a+b+c+d+e+f;与下式相同total=a+b+c+d+e+f;,9,在Java中,主要有以下的语句类型声明语句inta=0;/声明了一个整型变量Studentstu;/声明了一个类型是Student的对象表达式语句赋值表达式,自增表达式、方法调用、对象创建都可以和分号一起构成“表达式语句”System.out.println(“Welcome”);/输出字符串a=Math.abs(-3.1);/返回绝对值value=100;/为变量赋值a+;/a自增Studentstu=newStudent(“张华”);/创建一个Student类的实例,实例引用名为stu控制语句,10,3.1.2语句块,一个块(block)或一个复合语句是以上括号和下括号为边界的语句集合;块语句也被用来组合属于某个类的语句。
语句块可被嵌套。
/ablock语句x=y+1;y=x+1;,11,/类声明所包含的块语句publicclassMyDateintday;intmonth;intyear;,12,/一个嵌套块语句的例子,while(ilarge)/循环语句快开始,用表示a=a+i;if(a=max)/判断语句快开始,用表示b=b+a;a=0;/判断语句块结束,用表示/循环语句快结束,用表示,13,3.1.3空白,在源代码元素之间允许空白,空白的数量不限。
空白(包括空格、tabs和新行)可以改善源代码的视觉感受。
intx;x=23+54;intxx=23+54;,14,3.2顺序结构,顺序结构程序语句间最简单的结构关系是顺序结构,也就是语句是按照它们在方法中出现的先后顺序逐一被执行。
publicclassSwappublicstaticvoidmain(Stringargs)inta=10,b=20;intt=0;t=a;a=b;b=t;System.out.println(a=+a);System.out.println(b=+b);,15,3.3选择结构,程序控制可以定义为对程序语句的执行顺序进行的规定。
Java提供了条件语句在两种或更多的情况做出选择,根据情况执行不同的程序语句;,16,3.3.1条件判断与决策,1if,else语句简单的单分支语句if(布尔表达式)语句或块;例如if(score60)System.out.println(“下次努力哦!
”);,17,3.3.1条件判断与决策(cont.),简单的双分支语句if(布尔表达式)语句或块;else语句或块;例如if(score60)System.out.println(“下次努力哦!
”);elseSystem.out.println(“恭喜你通过考试!
”);,18,19,3.3.1条件判断与决策(cont.),嵌套的if,elseif(布尔表达式1)语句或块;elseif(布尔表达式2)语句或块;else语句或块;,20,例如,if(score60)System.out.println(“下次努力哦!
”);elseif(score80)System.out.println(“恭喜你通过考试!
”);elseSystem.out.println(“你考的很棒!
”);,21,课堂练习(c.),指出输出结果,x=2;y=3;if(x2)if(y2)intz=x+y;System.out.println(“zis”+z);elseSystem.out.println(“xis”+x);,22,3.3.1条件判断与决策(cont.),2switch语句switch语句允许程序员更多情况下选择不同的程序逻辑,当情况发生时,按照事先准备好的方法执行。
switch语句的句法是:
switch(expr1)caseexpr2:
statements;break;caseexpr3:
statements;break;default:
statements;,23,chargender;/性别.switch(gender)caseF:
casef:
System.out.println(”女性“);break;caseM:
casem:
System.out.println(”男性“);break;,24,表达式的类型在switch(expr1)语句中,expr1必须与int类型是赋值兼容的;byte,short或char类型可被升级;不允许使用浮点或long表达式。
从7开始,增加了String类型。
在switch(expr1)语句中,expr1也可以是枚举类型publicenumMonthJANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBERbreakbreak的作用是停止switch的执行,退出,执行switch代码段后的程序。
如果没有break语句作为某一个case代码段的结束句,则程序的执行将继续到下一个case,而不检查case表达式的值。
25,26,课堂练习,指出输出结果,x=2;y=3;if(x2)if(y2)intz=x+y;System.out.println(“zis”+z);elseSystem.out.println(“xis”+x);,27,课堂练习(c.),执行下列switch语句后y是多少?
x=3;switch(x+3)case6:
y=1;default:
y+=1;,switch中的default,本质是一种特殊匹配变量或表达式的值不能与任何case值相匹配时,可选缺省符(default)指出了应该执行的程序代码。
位置default语句一般在switch语句的最后。
注意如果匹配到了default,并且default后还有其他的case,则继续执行,且忽略是否匹配,28,29,课堂练习(c.),有一个函数如下,根据指定的x,输出y值y=,Xx1,2X-11=x10,3X-11x=10,写出程序,根据给出的百分制成绩,输出成绩等级A、B、C、D、E,90分以上为A,8089为B,7079为C,6069为D,60分以下为E。
30,课堂练习(c.),编写一个程序,根据命令行参数将对应的mon、tue、wed、thu、fri、sat、sun分别输出为星期一、星期二.星期日,如:
JavaWeekDaymon星期一,31,思考题,如何提高多分支下的程序执行效率?
32,3.4循环,循环语句使语句或块的执行得以重复进行。
Java编程语言支持三种循环构造类型:
for,while和do循环。
for和while循环是在执行循环体之前测试循环条件do循环是在执行完循环体之后测试循环条件。
这就意味着for和while循环可能连一次循环体都未执行,而do循环将至少执行一次循环体。
33,34,for循环的句法是:
for(init_expr;booleantestexpr;alter_expr)statementorblock例如:
for(inti=0;i10;i+)System.out.println(i=+i);,35,while循环的句法:
while(布尔表达式)语句或块,inti=0;while(i10)System.out.println(i=+i);i+;System.out.println(Finally!
);,36,do循环的句法是:
do语句或块;while(布尔测试),inti=0;doSystem.out.println(i=+i);i+;while(i10);System.out.println(Finally!
);,37,思考题,怎么决定使用哪类循环?
38,循环的嵌套,在一个循环体内又包含了另一个完整的循环结构,成为嵌套循环。
如:
while(循环条件)语句;while(循环条件)语句;语句;,39,3.4.4跳转,下列语句可被用在更深层次的控制循环语句中:
break标注;continue标注;label:
语句;Label:
被用来标识循环构造的复合语句。
break语句被用来从switch语句、for语句等循环语句的块中退出到预先设定的label处。
当程序运行到break标注处时,程序跳出整个循环体的结尾处。
continue语句被用来略过并跳到循环体的结尾。
当程序运行到continue标注处时,程序跳至标识外循环的下一次循环开始处继续执行。
40,loop:
while(true)for(inti=0;i100;i+)switch(c=System.in.read()case-1:
casen:
/跳到最后处breakloop;./endfor/endwhile,41,课堂练习,下面的循环程序输出结果是什么?
publicclassShowErrorspublicstaticvoidmain(Stringargs)for(inti=0;i10;i+);System.out.println(i+4);,42,课堂练习(c.),编写一个程序,求出1+2+3+100的和并输出。
求出100200间的所有素数。
43,用下面的方法声明,编写一个java方法,返回接收字符数组中连续字符块的个数:
publicstaticintcountRuns(charA),44,程序流程图,程序流程图也叫程序框图.程序流程图的表示以3种程序结构为基础。
优点历史最悠久,使用最广泛;流程控制直观,容易掌握;至今仍广泛使用.缺点可能诱导程序员过早考虑程序细节,而不是逐步求精;对于提高大型系统的可理解性作用不大;程序随意转移,导致程序结构混乱;无法表示数据结构.,45,程序流程图的常用符号:
程序流程图(Cont.),46,盒图(BoxDiagram):
Nassi,N-S图,47,例:
N-S图(cont.),48,3.6变量的作用域,每个变量都有一个作用域,就是说这个变量在哪个程序段中起作用。
变量的作用域从它被声明时开始直到遇到声明变量的代码段的结束符“”为止。
只能在变量的作用域内访问它。
如果在作用域之外访问变量,编译器将产生一个错误。
作用域的范围成员变量局部变量方法参数,49,变量的作用域(c.),publicclassVariableScopepublicstaticvoidmain(Stringargs)inti=10;intk=10;System.out.println(i=+i);System.out.println(k=+k);System.out.println(i=+i);System.out.println(k=+k);,50,变量的作用域(c.),可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的this.,3.7程序调试和排错,利用断言调试程序排错的基本技巧正向追踪回溯法对分查找法归纳法演绎法,51,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 流程 控制