第3章 流程控制结构.docx
《第3章 流程控制结构.docx》由会员分享,可在线阅读,更多相关《第3章 流程控制结构.docx(32页珍藏版)》请在冰点文库上搜索。
![第3章 流程控制结构.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/20795026-8d30-4264-81e0-f3b870ecd75b/20795026-8d30-4264-81e0-f3b870ecd75b1.gif)
第3章流程控制结构
(单元教案首页)
单元标题第3章流程控制结构
教学时数:
()学时,其中理论()学时、实验()学时、上机()其它()学时,其它是指:
教学目的与要求:
1.理解程序的的三大控制结构。
2.掌握选择结构实现语句的用法编程应用
3.掌握循环结构实现语句的用法及其编程应用。
4.理解并掌握各种跳转语句的使用方法。
主要教学内容:
1.程序的控制结构:
顺序、选择、循环。
2.选择结构语句:
if语句(两种格式)和switch语句、程序举例。
3.循环结构语句:
for语句、while、语句、do-while语句、三种循环语句的互相转化、程序举例。
4.控制结构跳转语句:
break语句、continue语句、return语句
教学重点与难点:
重点:
if语句、switch语句、for语句、while语句、do-while语句
难点:
switch语句、选择结构编程应用、循环结构编程应用、跳转语句的编程应用
课后作业:
1.课本P66综合练习三:
第一题~第四题
2.上机实习:
实习3:
Java流程控制
课后体会:
兰州资源环境职业技术学院教师授课教案
授课教师
钟锡珍
授课班级
09计网
授课时间
2011年月日星期
第周
课程名称
JAVA程序设计
授课时数
2
课题
3.1概述~3.2选择结构~3.3循环结构~3.4跳转语句
教学目的
1.复习程序的的三大控制结构。
2.理解并掌握选择结构实现语句的用法及其编程应用
3.掌握循环结构实现语句的用法及其编程应用。
4.理解并掌握各种跳转语句的使用方法。
教学重点与难点
重点:
选择结构语句(if语句、switch语句)用法;循环结构语句(for语句、while语句、do-while语句)用法;跳转语句(break语句、continue语句、return语句)用法;
难点:
switch语句、控制结构编程综合应用
教学内容、教学方法和教学过程
导入新课
程序是由语句组成的,在学习了Java程序设计基本语法知识之后,接下来同学们要学习Java程序结构控制语句,即顺序结构、选择结构和循环结构语句,在此可以复习回顾C语言程序的三大控制结构实现语句语法及其编程用法来掌握Java程序结构实现语句的用法(和C语言用法一致)。
这样我们就可以把C程序(面向过程的程序设计方法)改写成Java程序(面向对象的程序设计方法)了。
讲授新课
书写于教案纸
巩固复习
1.程序控制结构:
(1)顺序结构:
输入输出语句、运算语句。
(2)选择结构:
if语句、switch语句
(3)循环结构:
for语句、while语句、do-while语句
(4)控制结构跳转语句:
break语句、continue语句、return语句
(5)控制结构实现语句的编程应用。
2.Java字符界面输入数据的方法:
使用java.util.Scanner类的next()方法、nextInt()方法、nextLong()方法nextFloat()方法、nextDouble()方法、nextBoolean()方法完成相应数据的输入。
布置作业
1.课本P66综合练习三:
第一题~第四题
2.上机实习:
实习3:
Java流程控制
教学效果分析
兰州资源环境职业技术学院教师授课教案
——————————————————————
第3章流程控制结构
一、本章主要内容:
本章主要讲述Java程序的基本控制结构和控制语句,使得学生能利用这三种结构来解决一些比较复杂的问题。
Java程序的基本控制结构有三种:
顺序结构、选择结构、循环结构。
二、具体授课内容:
3.1概述
3.2选择结构
3.3循环结构
3.4跳转语句
三、本章授课思路:
1.回顾C语言中结构化程序设计方法所所用的程序三大控制结构(顺序结构、选择结构、循环结构)语法知识,以复习回顾的方式引入讲解Java语言的程序控制结构知识(和C语言用法一致),学生易于理解记忆。
2.具体讲解选择结构(if、switch)和循环结构语法(while、for、do-while)及其编程用法的典型程序编写举例,使学生理解掌握Java语言中控制结构的使用特点及编程技巧。
3.引入讲解Java语言的输入数据的两种方法,分别是:
使用java.util.Scanner类取得输入和使用java.io.bufferedReader类取得输入。
将两种输入数据的编程方法融入到控制结构用法的编程举例的程序中,使学生对输入数据方法的能够有一定的理解掌握和编程使用,结合在后续第4章面向对象的程序设计的方法的具体学习中再加强理解和掌握。
4.课堂上通过练习和讲解第3章课后习题,加强和巩固学生对所学知识的理解和掌握使用。
兰州资源环境职业技术学院教师授课教案
——————————————————————
3.1流程控制结构概述
引例:
要编写Java程序,首先要了解Java程序的结构。
例如:
一个程序模拟用户从银行账户中取钱的业务过程。
publicclassdemo{
/**Createsanewinstanceofdemo*/
publicdemo(){}
publicstaticvoidmain(Stringargs[])
{
doubleaccount;
doublewithdraw;
intcount=0;//count为可提出的次数
account=10000;//account为账户余额
withdraw=4023;/*withdraw为一次提出金额*/
//如果余额不足提取,则提取失败并对用户进行提示
if(withdraw>account)
{System.out.println("Youdonnothavesufficientmoneytowithdraw!
");
return;
}
else//进行业务处理
{//提取现金
while(account>withdraw)
{
account=account-withdraw;
count++;
}
System.out.println("Youbalanceis$"+account);
System.out.println("Youcanwithdraw$"+count+"times.");
}
}
}
说明:
一个完整的Java程序包括主类、主函数、变量、常量声明语句、赋值语句、程序主体功能语句、控制语句以及注释语句等。
该程序中,有两个重要的语句结构,如:
(1)
(2)
If()while()
{…}{…}
else
{…}
程序结构组成:
这两种语句结构为本章要讲的选择结构和循环结构。
这两种语句结构和顺序结构共同构成Java语言的基本语法结构。
顺序结构是最简单的程序结构,如图3-1所示。
3.2选择结构
一、If语句形式1
1.ifelse语句的形式为:
if(条件判断)
{语句A;}
[else
{语句B;}]
2.举例:
例如,下面程序判断a,b值的大小:
if(a>b)
System.out.println("a>b");
else
System.out.println("a<=b");
例如:
if(a>0)
System.out.println(a);
3.简化的if分支语句形式:
if(条件判断)
{语句A;}
流程图:
它表达的逻辑关系如右图3-3所示。
二、if语句形式2
1.引入:
图3-4
很多情况下,两个分支选择并不够用,有时需要多分支结构。
多分支选择的逻辑结构如图3-4所示。
说明:
对于这种多分支选择结构,也可以用ifelse语句来表达。
将上面的逻辑结构图转化为ifelse结构的多分支选择逻辑结构,如图3-5所示。
2.嵌套的ifelse语句的多分支选择结构
⑴格式:
if(判断A1)
语句A1;
else
{if(判断A2)
语句A2;
else
{
if(判断A3)
语句A3;
else
{
……
}
}
}
⑵简化格式:
if(判断A1)
语句A1;
elseif(判断A2)
语句A2;
elseif(判断A3)
语句A3;
……
[else
语句;]
⑶编程用法举例:
例如:
表3-1学生成绩等级划分
分数段
等级
90分以上
A
80-89
B
70-79
C
60-69
D
60分以下
E
分析:
用嵌套的if-else语句解决。
程序如下:
intscore=90;
if(score>=90)
System.out.println("A");
elseif(score>=80)
System.out.println("B");
elseif(score>=70)
System.out.println("C");
elseif(score>=60)
System.out.println("D");
else
System.out.println("E");
三、switch语句
内容引入:
对于图3-4所示的分支选择结构,无论有多少个分支,理论上说都可以使用嵌套的ifelse语句表达。
但是,ifelse语句的嵌套层次太多容易造成程序结构不清晰。
Java程序允许使用一种专门的多分支选择语句——switch语句来表达这种多分支结构,这简化了多分支结构的表达,使程序简明易懂。
1.switch语句的具体格式为:
switch(整型或者字符型变量)
{
casen1:
语句1;
break;
casen2:
语句2;
break;
casen3:
语句3;
break;
……
casenn:
语句n;
break;
[default:
语句n+1;]
}
2.执行过程为:
(1)求出switch括号内整型变量的值。
(2)将其值顺序地和n1.n2.n3……比较,如果整型变量值和某个n值相等,程序就转到这个n后面的语句开始执行,遇到break语句则跳出整个switch语句。
(3)如果整型变量值和任何n值都不等,则执行default后面的语句,最后跳出switch结构。
(4)default子句可有可无。
3.格式说明:
⑴switch语句括号里面的类型只能是整数,或者是其他和整型兼容的数据类型(如char类型),不能是其他的数据类型(如String类型)。
⑵case后面只能是一个整型数据,不能是一个“>=”、“<”等符号的一个范围。
4.应用举例—成绩等级的问题。
//例程3-1:
demoswith.java
publicclassdemoswitch{
publicdemoswitch(){}
publicstaticvoidmain(Stringargs[])
{charrank;
rank='A';
switch(rank)
{
case'A':
System.out.println("优秀");break;
case'B':
System.out.println("良好");break;
case'C':
System.out.println("中等");break;
case'D':
System.out.println("及格");break;
default:
System.out.println("不及格");
}
}
}
程序运行结果:
优秀
兰州资源环境职业技术学院教师授课教案
——————————————————————
3.3循环结构
循环:
重复执行某段程序,直到循环条件不满足为止。
循环语句:
for循环、while循环、do-while循环
循环三要素:
循环变量赋初值、循环条件、循环变量增量。
一、for循环语句
1.for语句的格式:
for(初始化循环变量;测试循环变量;修改循环变量)
{循环体;}
2.执行过程:
先初始化循环变量,然后测试循环变量是否满足条件,不满足则跳出循环,满足就执行循环体里面的语句;接着修改循环变量的值,测试循环变量……,进行新一轮的循环。
3.for循环的逻辑结构如右图3-6所示。
4.编程举例:
求解1+2+3+…+100的累加和。
【例程3-2】forDemo.java
publicclassForDemo{
publicForDemo(){}
publicstaticvoidmain(Stringargs[])
{
intsum=0;
inti;
//从1循环到100,每次把值加到sum中去
for(i=1;i<=100;i++)
{sum+=i;}
System.out.println("1+2+3+…+100="+sum);
}
}
运行结果为:
1+2+3+…+100=5050
二、while循环语句
很多问题,事先是很难确定循环到底会执行多少次的,只知道循环执行的条件。
这时候,可以使用while循环,它的逻辑结构如图3-7所示。
1.while语句格式:
while(测试循环条件)
{循环体;}
2.执行过程:
当测试循环条件满足时,则执行循环体;否则退出循环体。
3.逻辑结构如图3-7所示。
4.编程举例:
求解1+2+3+…+100的累加和。
publicclassWhileDemo{
publicWhileDemo(){}
publicstaticvoidmain(Stringargs[])
{
intsum=0;
inti;i=1;
//从1循环到100,每次把值加到sum中去
While(i<=100)
{sum+=i;i++;}
System.out.println("1+2+3+…+100="+sum);
}
}
运行结果和上例相同。
三、do-while循环语句
有时候,希望先执行一次循环体,然后再判断这个循环是否应该继续下去。
Java使用do-while语句来表示这样的结构。
它的逻辑结构如图3-8所示。
1.do-while语句格式:
do
{
循环体;
}while(测试循环条件);
2.执行过程:
执行循环体,直至测试循环条件不满足时退出循环体。
3.流程图:
逻辑结构如图3-8所示。
4.程序举例:
i=1;
do{
sum=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:
while(j<10&&i>23||m<100)
{语句;}
等价于:
for(;j<10&&i>23||m<100;)
{语句;}
说明:
要设计出好的程序,形式不是最重要的,重要的是程序设计者能将逻辑思维通过合理的形式表达出来。
五、循环结构应用举例(3个例子)
1.打印菱形图形
×
×××
×××××
×××
×
分析:
该问题需要使用两层循环结构来实现。
外循环处理每行,内循环处理具体某列。
程序如下:
[例程3-3]DrawPic.java
publicclassDrawPic{
publicDrawPic(){}
publicstaticvoidmain(String[]args)
{intI,j;
for(i=1;i<=5;i++)//打印五行
{if(i<=3)
{for(j=1;j<=(3-i)*2;j++)//打印前面的空格
System.out.print("");
for(j=1;j<=2*i-1;j++)//打印后面的字符
System.out.print("×");
System.out.println();//换行
}
else//打印下半部分
{for(j=1;j<=(i-3)*2;j++)//打印前面的空格
System.out.print("");
for(j=1;j<=11-2*i;j++)//打印后面的字符
System.out.print("×");
System.out.println("");//换行
}
}
}
}
2.打印出1000以内的所有完全立方数。
(如:
1=13,8=23)
[例程3-4]cube.java
publicclasscube{
publiccube(){}
publicstaticvoidmain(String[]args)
{
intn=1;
//如果该数字没有超过1000,执行循环体
while(n*n*n<=1000)
{
System.out.println(n*n*n);
n++;
}
System.out.println("1000内的立方数有"+(n-1)+"个");
}
}
程序的运行结果为:
1
8
27
64
125
216
343
512
729
1000
1000内的立方数有10个
3.求自然对数的底e的值,利用公式e=(1+1/n)n(其中n趋于无穷大),要求达到较好的精度。
说明:
Math类常用数值运算方法———xy=pow(x,y)
publicstaticdoublepow(doublex,doubley),即:
xy
[例程3-5]CalE.java
importjava.math.*;
publicclassCalE{
publicCalE(){}
publicstaticvoidmain(String[]args){
doublenow;doublenext;
doublevalue;intcount;
value=1E-20;//设定精确度
count=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);
}
System.out.println("共进行了"+count+"次计算");
System.out.println("e的近似值为"+now);
}
}
程序运行结果如下:
共进行了132359次计算
e的近似值为2.718271560052231
3.4跳转语句
一、break语句
1.格式:
break;
2.作用:
跳出break语句所在的控制结构,转到该控制结构后继续执行。
在switch结构中,break的作用就是跳出switch整个结构。
在循环语句中,break语句的作用就是跳出循环。
当使用多层循环的时候,break语句只跳出当前这一层循环(内循环),而不能跳出整个循环。
3.程序举例:
计算:
1+2+3+…+100的值,例如程序如下。
intsum=0;
intn=1;
while(true)
{if(n>100)break;
Sum+=n;
n++;
}
System.out.println("1+2+3+…+100="+sum);
二、continue语句
continue也是一个使用在循环语句里面的跳转语句。
1.格式:
continue;
2.作用:
提前结束本次循环的语句。
3.continue语句和break语句的区别:
break停止循环体的执行的同时,跳出了当前的循环结构;而程序在遇到continue的时候,只是停止continue后面的循环体的执行,然后跳到循环开始的地方重新执行。
换句话说,continue的作用只是略过本次循环的continue后面的语句而已,并没有停止执行整个循环。
4.程序举例:
计算1~10内所有奇数的总和。
intsum=0;
intn=0;
while(n<=9)
{n++;
if(n%2==0)continue;
System.out.print();
System.out.print("");
sum+=n;
}
System.out.println();
System.out.println("1+3+…+9="+sum);
运行结果为:
13579
1+3+…+9=25
三、return语句
1.作用:
break和continue语句只能在一定的结构中使用;
return则不然,它几乎可以在所有场合下使用,作用是“返回”。
如果它用在函数中,“返回”就意味着程序返回调用这个函数的程序;如果在主函数中遇到return语句,则程序执行结束。
return可以不带值返回,也可以带值返回。
2.格式:
(1)return;
(2)return表达式;
如:
return;
returntrue;
returna+b;
renturnfn();
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-6]calArea.java
publicclasscalArea{
publiccalArea(){}
publicst