《Java程序设计基础》第3章:流程控制.ppt_第1页
《Java程序设计基础》第3章:流程控制.ppt_第2页
《Java程序设计基础》第3章:流程控制.ppt_第3页
《Java程序设计基础》第3章:流程控制.ppt_第4页
《Java程序设计基础》第3章:流程控制.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 流程控制,学习重点: 选择结构 循环结构,第3章 流程控制,3.1 程序的逻辑控制 3.2 选择控制结构 3.2.1 由if语句引导的选择结构 3.2.2 由switch语句引导的选择结构 3.3 循环控制结构 3.4 练习题,3.1 程序的逻辑控制,结构化程序设计中的逻辑控制:即顺序、选择、循环,而且只能 用这3种结构来完成程序。 程序流程图:是软件开发者用来表达算法的一种工具,也叫程序 框图。它用图形化方式表达程序的算法结构,忽略算法细节,着重表达程序流程,使程序的逻辑结构直观、清晰。它独立于任何程序设计语言,也易于学习,应用非常广泛。,程序流程图,3.2 选择控制结构,选择控制结构是在两种或两种以上的多条路径上 选择一条执行。通常在进行选择之前,先做一个判断, 根据结果进行选择。Java中的选择控制结构有if 和 switch两个关键词来引导。,3.2.1 由if语句引导的选择结构,由if语句引导的选择结构有ifelse结构、if结构和else if结构3种。 ifelse结构 if结构 else if结构,1. ifelse结构,在所有的语言中都有这个结构,而且结构的格式基本相同,程序流 程如图所示。语句如下: if (条件表达式) 语句组1; else 语句组2;,ifelse结构程序流程,例3.1 ifelse结构示例一,import java.io.*; public 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结构示例二,见程序代码 注意: 当if或else中需要执行多语句时,必须用大括号将它们括起来。 另外,如果程序的条件语句嵌套比较多,逻辑比较复杂,建议大 家多使用大括号,这样能够提高程序的可读性。,2. if结构,if (条件表达式) 语句组; 例如: int n=0; if(x0) x=-x; n+; 这段程序的目的是把一组数中的负数变成整数,并统计该组数中负数的个数。,3. else if结构,if(条件表达式1) 语句组1; else if(条件表达式2) 语句组2; else if(条件表达式3) 语句组3; else if(条件表达式n) 语句组n; else 语句组n+1;,else if结构实际上是ifelse结构的多层嵌套,它有一个明显的特点就是在多个分支中只执行一个语句组,而其他语句组都不执行。例如,在把百分制成绩转换成五分制成绩的时候,程序源代码如下:,if(gradeInHundred80) gradeInFive=5; if(gradeInHundred60) gradeInFive=4; if(gradeInHundred40) gradeInFive=3; if(gradeInHundred20) gradeInFive=2; else gradeInFive=1;,3.2.2 由switch语句引导的选择结构,switch(条件表达式) case 判断值1 : 语句组1 case 判断值2 : 语句组2 case 判断值3 : 语句组3 case 判断值n : 语句组n default : 语句组n+1 当程序执行到switch语句时,先计算表达式的值,假设值为A,然 后拿A与第1个case语句中的判断值相比,如果相同,则执行语句组 1。然后再拿A与第2个case语句中的判断值相比,如果相同,则执 行语句组2,以此类推,直到执行语句组n。然后不加判断就执行语 句组n+1。这时才跳出switch引导的选择结构。,Switch 语句和else if 结构的区别,首先,else if结构中的条件表达式可以很复杂,它的结果是个布尔量,而switch结构中的条件表达式的结果是整型或字符型数据; 其次,else if结构中被执行的分支只有一个,而switch结构中被执行的分支可能有多个 最后,在switch结构中多语句的语句组不需要用大括号括起,只需用分号隔开即可,switch结构中的跳转语句是break。不带break的程序段如下:,switch(gradeSign) case A : gradeInFive=5; case B : gradeInFive=4; case C : gradeInFive=3; default : gradeInFive=1; 当gradeSign为A时,switch程序块执行完后,gradeInFive的值将为 1。加入break语句的程序段如下:,switch(gradeSign) case A : gradeInFive=5; break; case B : gradeInFive=4; break; case C : gradeInFive=3; break; default : gradeInFive=1; 当gradeSign仍为A时,switch程序块执行完后,gradeInFive的值将为5。 可以看出,break语句的作用是当程序执行到break语句时,跳出由switch控 制的大括号,而去执行下面的语句。,当条件表达式得出的几个不同结果需要执行相同的语句组时,程序形式是多个case重叠,共同使用一个语句组。例如:,switch(gradeSign) case A : case B : case C : flag=1; break; default : flag=0; 此时,gradeSign的值无论是A,B或者C,程序都将得到flag=1, 如果gradeSign是其他值,就会得到flag=0,该程序段可用于判断某 个成绩是否及格。,3.3 循环控制结构,循环控制结构是指在一定条件下,反复执行某程序段的流程结构。它是由循环语句和特殊的跳转语句实现控制的,反复执行的程序段称为循环体。 循环语句有for语句、while语句和dowhile语句,跳转语句主要有continue语句和break语句。,1. for语句,for语句是运用最为广泛的一种循环语句,也是功能最强的一种。 一般格式如下: for(表达式1 ; 表达式2 ; 表达式3) 循环体;,For语句的程序流程,例3.3 输出19的平方表,For1.java的程序内容如下: 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); 这个程序的循环部分初始时,给循环变量i赋值为1,每次循环时先判断i的 值是否小于10,如果是就执行循环体,然后给i加1,因此,最后的结果是 打印出从19的平方。,例3.4 for语句中的逗号运算符,public class For2 public static void main(String args) for(int i=1, j=i+10; i5; i+,j=i *2) /注意括号内的内容都是合法的 System.out.println(“i= “+i+“j=“+j); 这个程序在for循环的3个表达式中,除了处理循环变量之外,还 做了一些其他事情,可见,只要是合法的表达式都可以放在for循环 的表达式位置。,2. while语句,while语句是一种先判断的循环结构,语句格式如下: while (条件表达式) 循环体 ;,while循环的程序流程图,例3.5 查找平方小于100 000的最大整数,While1.java的程序内容如下: public class 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语 句是后判断的循环结构,语句格式如下: do 循环体 ; while (条件表达式),dowhile语句的流程图,4. break语句,break语句可用于switch引导的分支结构以及以上3种循环结 构,它的作用是强行退出循环结构,不执行循环结构中剩余的语 句。Break语句有带标签和不带标签两种。 格式如下: break; /不带标签 break label; /带标签,label是标签名,例3.6 各种break语句的比较,程序代码 程序的运行结果,当使用外层循环中的带标签的break跳到指示内层循环的标签label2时,将产生逻辑错误,编译时就会报错,原因是程序只在break label2所在的循环结构以外寻找对应标签,所以label2对它不可见,错误信息如图所示,5. continue语句,continue语句只用于循环结构中,它有带标签和不带 标签两种格式。格式如下: continue; continue label; 不带标签的continue语句作用是终止当前循环结构的本轮循环而直接开始下一轮循环。 带标签的continue语句的作用是把程序直接转到标签所指示的那一个循环结构的下一轮,而不管被它嵌套的及continue语句所在的循环结构运行到了哪一轮。,例3.7 熟悉continue语句,程序代码 运行结果,3.4 练 习 题,1. 选择题 (1)下列说法哪个是正确的? A. 结构化程序设计中鼓励使用goto语句 B. 结构化程序设计中绝对不能使用跳转语句 C. 结构化程序设计中有3种逻辑控制结构:顺序、循环、选择 D. 每个程序中都必须使用顺序、循环、选择这3种逻辑控制结 构,(2) 关于选择结构下列哪个说法正确? A. if语句和else语句必须成对出现 B. if语句可以没有else语句对应 C. switch结构中每个case语句中必须用break语句 D. switch结构中必须有default语句,(3) 以下语句中有语法错误的是: A. for(;); B. for(int i=0;i100;i+); C. if(a0) a+; D. ;,2. 程序阅读题 (1) 判断数组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的最终值和含义。 i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论