第章流程控制结构_第1页
第章流程控制结构_第2页
第章流程控制结构_第3页
第章流程控制结构_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、单元标题(单元教案首页)第 3 章 流程控制结构教学时数:( )学时,其中理论()学时、实验()学时、上机()其它()学时,其它是指:教学目的与要求:1. 理解程序的的三大控制结构。2. 掌握选择结构实现语句的用法编程应用3. 掌握循环结构实现语句的用法及其编程应用。4. 理解并掌握各种跳转语句的使用方法。主要教学内容:1. 程序的控制结构:顺序、选择、循环。2. 选择结构语句: if 语句(两种格式)和 switch 语句、程序举例。3. 循环结构语句: for 语句、 while 、语句、 do-while 语句、三种循环语句的互相转化、程序举例。4. 控制结构跳转语句: break 语句

2、、 continue 语句、 return 语句教学重点与难点:重点: if语句、 switch语句、 for语句、 while语句、 do-while语句难点: switch语句、选择结构编程应用、循环结构编程应用、跳转语句的编程应用课后作业:1. 课本 P66 综合练习三:第一题第四题2. 上机实习:实习 3: Java 流程控制课后体会:授课教师授课时间课程名称课题教学目的教学重点与难点兰州资源环境职业技术学院教师授课教案钟锡珍授课班级09 计网2011年月日星期第周JAVA 程序设计授课时数23.1 概述 3.2选择结构 3.3循环结构 3.4跳转语句1. 复习程序的的三大控制结构。2

3、. 理解并掌握选择结构实现语句的用法及其编程应用3. 掌握循环结构实现语句的用法及其编程应用。4. 理解并掌握各种跳转语句的使用方法。重点:选择结构语句( if 语句、 switch 语句)用法;循环结构语句( for 语句、 while 语句、 do-while 语句)用法;跳转语句( break 语句、 continue 语句、 return 语句)用法;难点: switch语句、控制结构编程综合应用教学内容、教学方法和教学过程程序是由语句组成的,在学习了Java 程序设计基本语法知识之后,接下来同学们要学习Java 程序结构控制语句, 即顺序结构、选择结构和循环结构语句,在此可以复习回顾

4、C 语言程序的三大导入新课控制结构实现语句语法及其编程用法来掌握Java 程序结构实现语句的用法(和C 语言用法一致) 。这样我们就可以把C 程序(面向过程的程序设计方法)改写成 Java 程序(面向对象的程序设计方法)了。讲授新课书写于教案纸1. 程序控制结构:( 1)顺序结构:输入输出语句、运算语句。( 2)选择结构: if 语句、 switch 语句( 3)循环结构: for 语句、 while 语句、 do-while 语句( 4)控制结构跳转语句: break 语句、 continue 语句、 return巩固复习语句( 5)控制结构实现语句的编程应用。2.Java 字符界面输入数据

5、的方法:使用类的 next()方法、 nextInt()方法、nextLong()方 法nextFloat()方 法 、 nextDouble()方 法 、nextBoolean()方法完成相应数据的输入。1. 课本 P66 综合练习三:第一题第四题布置作业2. 上机实习:实习3: Java 流程控制教学效果分析兰州资源环境职业技术学院教师授课教案第 3 章 流程控制结构一、本章主要内容:本章主要讲述 Java 程序的基本控制结构和控制语句,使得学生能利用这三种结构来解决一些比较复杂的问题。Java 程序的基本控制结构有三种:顺序结构、选择结构、循环结构。二、具体授课内容:3.1概述3.2选择

6、结构3.3循环结构3.4跳转语句三、本章授课思路:1. 回顾 C 语言中结构化程序设计方法所所用的程序三大控制结构(顺序结构、选择结构、循环结构)语法知识,以复习回顾的方式引入讲解Java 语言的程序控制结构知识(和C 语言用法一致) ,学生易于理解记忆。2. 具体讲解选择结构(if 、 switch )和循环结构语法(while 、 for 、do-while)及其编程用法的典型程序编写举例,使学生理解掌握Java 语言中控制结构的使用特点及编程技巧。3. 引 入 讲 解 Java 语 言 的 输 入 数 据 的 两 种 方 法 , 分 别 是 : 使 用类取得输入和使用类取得输入。将两种输

7、入数据的编程方法融入到控制结构用法的编程举例的程序中,使学生对输入数据方法的能够有一定的理解掌握和编程使用, 结合在后续第 4 章面向对象的程序设计的方法的具体学习中再加强理解和掌握。4. 课堂上通过练习和讲解第 3 章课后习题,加强和巩固学生对所学知识的理解和掌握使用。兰州资源环境职业技术学院教师授课教案3.1流程控制结构概述引例:要编写Java 程序,首先要了解Java 程序的结构。例如:一个程序模拟用户从银行账户中取钱的业务过程。public class demo /* Creates a new instance of demo */public demo() public stati

8、c void main(String args)double account ;double withdraw ;int count=0;account=10000 ;withdraw = 4023;/count为可提出的次数/account为账户余额/*withdraw为一次提出金额*/ 如果余额不足提取,则提取失败并对用户进行提示if( withdraw > account)return ;else/进行业务处理 / 提取现金 while(account>withdraw)account=account-withdraw;count+;说明:一个完整的 Java 程序包括主类、

9、主函数、变量、常量声明语句、赋值语句、程序主体功能语句、控制语句以及注释语句等。该程序中,有两个重要的语句结构,如:(1)(2)If()while()else 程序结构组成:这两种语句结构为本章要讲的选择结构和循环结构。这两种语句结构和顺序结构共同构成Java 语言的基本语法结构。顺序结构是最简单的程序结构,如图3-1 所示。3.2选择结构语句A语句B一、 If语句形式11.if else语句的形式为:if(条件判断 ) 语句 A; else语句 B;2. 举例:例如,下面程序判断a,b 值的大小:if (a>b)else例如:if (a>0)3. 简化的 if 分支语句形式: i

10、f ( 条件判断 ) 语句A;true条件判断语句 A条件判断true语句Afalse语句 Bfalse流程图:它表达的逻辑关系如右图3-3 所示。二、 if语句形式21. 引入:很多情况下,两个分支选择并不够用,有时需要多分支结构。多分支选择的逻辑结构如图 3-4 所示。取值 CA1A2A3An语句 A1语句 A2语句 A3语句 An图 3-4说明:对于这种多分支选择结构,也可以用 if else 语句来表达。将上面的逻辑结构图转化为 if else 结构的多分支选择逻辑结构,如图 3-5 所示。判断A1falsetrue语句A1判断A2falsetrue语句A2判断A3falsetruef

11、alse语句A3判断Antrue语句An图 3-5嵌套的 if else语句的多分支选择结构2. 嵌套的 if else 语句的多分支选择结构格式:if ( 判断 A1)语句 A1;else if(判断 A2)语句 A2;elseif(判断 A3)语句 A3;else简化格式:if (判断 A1)语句 A1;else if(判断A2)语句A2;else if(判断A3)语句A3; else语句;编程用法举例:例如:表3-1 学生成绩等级划分分数段等级90 分以上A80-89B70-79C60-69D60 分以下E分析:用嵌套的if-else语句解决。程序如下:int score=90;if (

12、score>=90)else if(score>=80)else if(score>=70)else if(score>=60)else三、 switch语句内容引入:对于图3-4 所示的分支选择结构,无论有多少个分支,理论上说都可以使用嵌套的ifelse 语句表达。但是,ifelse 语句的嵌套层次太多容易造成程序结构不清晰。 Java 程序允许使用一种专门的多分支选择语句 switch 语句来表达这种多分支结构,这简化了多分支结构的表达,使程序简明易懂。1.switch语句的具体格式为:switch(整型或者 字符型变量 )case n1 :语句 1;break;c

13、ase n2 :语句 2;break;case n3 :语句 3;break;case nn :语句 n;break; default :语句 n+1; 2. 执行过程为:( 1)求出 switch括号内整型变量的值。( 2)将其值顺序地和n1.n2. n3 比较,如果整型变量值和某个n 值相等,程序就转到这个n 后面的语句开始执行,遇到break语句则跳出整个switch语句。( 3)如果整型变量值和任何n 值都不等,则执行default后面的语句,最后跳出 switch结构。( 4) default 子句可有可无。3. 格式说明: switch 语句括号里面的类型只能是整数,或者是其他和整

14、型兼容的数据类型(如char 类型) , 不能是其他的数据类型(如String类型)。 case 后面只能是一个整型数据,不能是一个“>=”、“ <”等符号的一个范围。4. 应用举例成绩等级的问题。/ 例程 3-1 : demoswith.java public class demoswitch public demoswitch() public static void main(String args) char rank;rank ='A'switch(rank)case'A':优秀 "); break;case'B'

15、:良好 "); break;case'C':中等 "); break;case'D' :及格 "); break;default:不及格 ");程序运行结果:优秀兰州资源环境职业技术学院教师授课教案3.3循环结构循环:重复执行某段程序,直到循环条件不满足为止。循环语句: for循环、 while循环、 do-while循环循环三要素:循环变量赋初值、循环条件、循环变量增量。一、 for循环语句1.for语句的格式:for(初始化循环变量; 测试循环变量; 修改循环变量)循环体; 2. 执行过程:先初始化循环变量, 然后测试

16、循环变量是否满足条件, 不满足则跳出循环, 满足就执行循环体里面的语句; 接着修改循环变量的值, 测试循环变量,进行新一轮的循环。3.for循环的逻辑结构如右图3-6 所示。4. 编程举例:求解 1+2+3+ +100 的累加和。【例程 3-2 】 forDemo.java public class ForDemo public ForDemo() public static void main(String args)int sum = 0;int i;/ 从 1 循环到 100,每次把值加到 sum 中去for(i=1;i<=100;i+) sum+= i; + 100="

17、+sum);初始化循环变量false测试循环变量true循环体修改循环变量运行结果为:1+2+3+ + 100=5050二、 while循环语句很多问题,事先是很难确定循环到底会执行多少次的,只知道循环执行的条件。这时候,可以使用 while 循环,它的逻辑结构如图 3-7 所示。1.while语句格式:while(测试循环条件)循环体;2. 执行过程:当测试循环条件满足时,则执行循环体;否则退出循环体。3. 逻辑结构如图 3-7 所示。4. 编程举例:求解 1+2+3+100 的累加和。public class WhileDemo public WhileDemo() public stat

18、ic void main(String args)int sum = 0;int i; i=1;/从1 循环到100 ,每次把值加到sum中去While(i<=100) sum+= i;i+; + 100="+sum);运行结果和上例相同。三、 do-while循环语句有时候,希望先执行一次循环体,然后再判断这个循环是否应该继续下去。Java 使用 do-while语句来表示这样的结构。它的逻辑结构如图3-8 所示。1.do-while语句格式:do循环体 ;循环体while( 测试循环条件 );2.执行过程: 执行循环体, 直至测试循环条件不满足时退出循环体。测试循环条件3.

19、流程图:逻辑结构如图 3-8所示。true4.程序举例:falsei=1;图 3-8: do-while 循环结构dosum=sum+i; i+;while(i<=100);四、 for和 while的转化For 语句和 while语句都可以用于设计循环程序结构,而且它们之间是可以相互转化的:用for做得到的事情,用while也能做到;用while能做到的事情,用for也能够实现。例如程序1:sum= 0 ;for(j=1; j<= 100; j+ ) sum+= j; 可以转化为:j=1 ;sum=0 ;while(j<=100) sum +=j ; j+ ; 例如程序2:

20、while(j<10 && i>23 | m<100)语句;等价于:for( ; j<10 && i>23 | m<100 ;)语句;说明:要设计出好的程序,形式不是最重要的,重要的是程序设计者能将逻辑思维通过合理的形式表达出来。五、循环结构应用举例(3 个例子 )1. 打印菱形图形×××××××××××××分析:该问题需要使用两层循环结构来实现。外循环处理每行,内循环处理具体某列。程序如下: 例程

21、 3-3 DrawPic.javapublic class DrawPic public DrawPic() public static void main(String args) int I,j;for(i=1; i<=5; i+) /打印五行 if( i<=3 ) for(j=1;j<=(3-i)*2 ;j+)/for(j=1;j<=2*i-1;j+)/×");/else /打印下半部分 for(j=1;j<=(i-3)*2;j+) /for(j=1;j<=11-2*i;j+) /×");打印前面的空格打印后面的

22、字符换行打印前面的空格打印后面的字符换行2. 打印出 1000 以内的所有完全立方数。 (如: 1=13, 8=23) 例程 3-4 cube.javapublic class cube public cube() public static void main(String args)int n =1;/ 如果该数字没有超过 1000,执行循环体while(n*n*n<=1000)n+;内的立方数有"+(n-1) + "个");程序的运行结果为:18276412521634351272910001000 内的立方数有10 个3. 求自然对数的底e 的值,利

23、用公式e=(1+1/n)n(其中 n 趋于无穷大),要求达到较好的精度。说明: Math 类常用数值运算方法x y = pow(x,y)public static double pow(double x,double y),即: xy 例程 3-5 CalE.javaimport java.math.*;public class CalE public CalE() public static void main(String args) double now ;double next ;double value ; int count ;value = 1E-20; /设定精确度count

24、= 0 ;/记录计算进行的次数now = (1+1) ;/计算出第一项的值next =Math.pow( 1+1/(double)2 ,2);/ 如果相邻两项的差大于精确度值,则计算继续进行下去while( next - now > value) count + ;/累计计算次数now = next ;/ 算出下一项的值next = Math.pow( 1+1/(double)(2+count) ,2+count);共进行了 "+ count +"的近似值为 "+now) ;次计算 ");程序运行结果如下:共进行了 132359 次计算e 的近似值

25、为3.4跳转语句一、 break 语句1. 格式: break;2. 作用:跳出 break 语句所在的控制结构,转到该控制结构后继续执行。在 switch 结构中, break 的作用就是跳出 switch 整个结构。在循环语句中, break 语句的作用就是跳出循环。 当使用多层循环的时候, break 语句只跳出当前这一层循环(内循环) ,而不能跳出整个循环。3. 程序举例:计算: 1+2+3+ +100 的值,例如程序如下。 int sum=0;int n=1; while(true) if(n>100) break;Sum+=n;n+; +100="+sum);二、

26、continue语句continue也是一个使用在循环语句里面的跳转语句。1. 格式: continue;2. 作用:提前结束本次循环的语句。3.continue语句和 break 语句的区别:break 停止循环体的执行的同时, 跳出了当前的循环结构; 而程序在遇到 continue 的时候, 只是停止 continue 后面的循环体的执行, 然后跳到循环开始的地方重新执行。 换句话说,continue 的作用只是略过本次循环的 continue 后面的语句而已,并没有停止执行整个循环。4. 程序举例:计算 1 10 内所有奇数的总和。 int sum=0;int n=0; while(n&

27、lt;=9) n+;if(n%2=0) continue;sum+=n; +9="+sum);运行结果为:135791+3+9=25三、 return语句1. 作用:break 和 continue语句只能在一定的结构中使用;return则不然,它几乎可以在所有场合下使用,作用是“返回”。如果它用在函数中,“返回”就意味着程序返回调用这个函数的程序;如果在主函数中遇到 return 语句,则程序执行结束。return可以不带值返回,也可以带值返回。2. 格式:( 1) return ;( 2) return表达式;如:return;return true;return a+b;ren

28、turn fn();3.return语句执行过程:例如 1:如图 3-9 所示箭头线指示程序执行的过程:执行语句 area=Fn(a)时,程序转到函数Fn() 处执行, 遇到 returnArea语句则返回area=Fn(a);并把 Fn() 中求得的 Area 值赋给 area 。如果函数中没有 return 语句,则函数体执行到最后一条语句后自动返回。图 3-9:例如 2:如果在调用的函数中,又调用了其他程序,按照同样的原则来进行返回。后调用的先返回,如图3-10 所示。图 3-10 :4. 程序举例 例程 3-6calArea.javapublicclasscalArea publicc

29、alArea() publicstaticdouble calR(double rad) if (rad < 0)/如果半径小于0 ,则认为出错错误:半径不能为负数 ");return -1;/返回值 -1 ,认为计算出错else / 进行计算return 3.14*rad*rad;/把整个表达式作为返回结果public static void main(Stringdouble a ;args )a = calArea.calR(5);半径为 5 的圆面积为: "+a); a = calArea.calR(-3);/如果计算出错,则返回。最后一条语句不执行。if (

30、a<0)return ;半径为 5 的圆面积为:"+a);程序运行结果为:半径为 5 的圆面积为:78.5错误:半径不能为负数Java 语言提供的字符界面下的输入数据的方法:System.in对象提供read()方法,是从输入串中取得一个字节的数据并返回该字节的整数值一、 J2SE5.0 中,使用。 -不常用,较麻烦。类 取得输入。1. 该类提供了 next() 方法:输入数据为字符串型。例如:String name=new String();Scanner sc = new Scanner(System.in);请输入你的名字:" );name= sc.next (

31、);2.可以使用:nextInt()、 nextFloat()、 nextBoolean()方法取得使用者的输入,并转换为正确的数据类型。例如:int score;Scanner sc = new Scanner(System.in);请输入学生的成绩:" );score = sc.nextInt();3. Scanner类取得输入的依据是空格符,所以按下空格键、Tab 键或回车键,Scanner 就会返回下一个输入。接下来给出一个完整的示例程序, 该程序完成的功能是根据学生成绩 (输入)计算成绩等级(输出) ,在 JDK 或 JCreator 中调试运行得出正确的结果便可验证此方法

32、。/ 程序文件名:chengjidengji.javapublic class chengjidengji public static void main(String args) int score;Scanner sc=new Scanner(System.in);请输入学生的成绩: " );score=sc.nextInt(); /输入数据if (score>=90)else if(score>=80)else if(score>=70)else if(score>=60)else4. 如果想取得包括空格符的输入,可以使用的方法是:类取得输入。二、使用类

33、取得输入。BufferedReader在构建时接收一个对象,在读取标准输入串时,可以使用,它继承了Reader 类。使用BufferReader对象的 readLine()方法必须处理异常,异常机制是java为程序设计人员捕捉程序中可能发生的错误所提供的机制。例如 1:BufferedReader in = new BufferedReader(new InputStreamReader(System.in);String s=in.readLine();int x=Integer.parseInt(s);上面的程序段中的第一行定义 BufferedReader 类的对象 in 的方法也可以分

34、别来定义,写成如下的方式,阅读起来更为清晰。例如 2:InputStreamReader ir;BufferedReader in;ir=new InputStreamReader(System.in);in=new BufferedReader(ir);String s=in.readLine();int x=Integer.parseInt(s);接下来给出一个完整的示例程序,同方法二的实例,输入并调试该程序得出正确的结果,验证掌握该方法。/ 程序文件名:public class chengji2 public static void main(String args) throws IO

35、Exception int score;InputStreamReader ir;BufferedReader in;ir=new InputStreamReader(System.in);in=newBufferedReader(ir);请输入学生的成绩:String s=in.readLine();/输入数据" );score=Integer.parseInt(s);if (score>=90)else if(score>=80)else if(score>=70)else if(score>=60)else说明:在使用类的 readLine()方法获得了

36、一个字符串数据的输入,但是将字符串如何转换成相应的数值数据呢?我们的转换方法就是使用 Java 类库中对简单数据类型的包装类提供的相应方法完成即可。三、输入字符数据的方法:使用上面介绍的第二种方法和第三种方法获得字符串的输入后,可以使用字符串类提供的 charAt 方法来获取字符数据。charAt方法的原型是:public char charAt(intindex)功能是:返回指定索引处的length()- 1。序列的第一个charchar值。索引范围为从0到 字符串长度值位于索引0处,第二个位于索引1处,依此类推,这类似于数组索引。示例程序段1:BufferedReader in2=new

37、BufferedReader(new InputStreamReader(System.in);请输入一个字符:");String s2=in2.readLine();char c= s2.charAt(0);示例程序段2:char rank;Scanner sc=new Scanner(System.in);请输入学生的成绩等级(ABCDE): " );String s=sc.next();rank=s.charAt(0);四、 Java 类库中对简单数据类型的类包装:Java 的简单数据类型,在 Java 中没有作为类来实现,通过简单数据类型的类包装,可以实现这个目标。

38、方法: 在 Java 类库中,每一种包装都只包装一种简单数据类型。类包装的命名与简单数据类型相似。包装类位于:java.lang包中。例如:int 类型的包装类是:Integerbyte的包装类是: Byteshort的包装类是: Shortlong的包装类是: Longfloat的包装类是: Floatdouble 的包装类是: Doublechar的包装类是: Character的包装类是: booleanBoolean1. 字符串转换为数值转换方法:通过基本数据类型的包装类提供的parseInt、 parseDouble 、parseLong 、 parseByte 、 parseFloat等方法实现。

温馨提示

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

评论

0/150

提交评论