《Java程序设计》课件-javacp3程序的流程控制_第1页
《Java程序设计》课件-javacp3程序的流程控制_第2页
《Java程序设计》课件-javacp3程序的流程控制_第3页
《Java程序设计》课件-javacp3程序的流程控制_第4页
《Java程序设计》课件-javacp3程序的流程控制_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第三章

Java程序的流程控制

Java程序设计本章主要内容

算法顺序结构选择分支结构循环结构小结2024/12/24李飞——计算中心2/30算法定义:通过计算机解决一个问题而采取的确定的方法和步骤。算法的特点确定性有穷性有0个或多个输入有1个或多个输出可执行2024/12/24李飞——东北大学秦皇岛分校计算中心3/35李飞——东北大学秦皇岛分校计算中心算法算法的评价方法正确性时间复杂度空间复杂度可读性健壮性2024/12/24李飞——东北大学秦皇岛分校计算中心4/35算法算法的描述工具自然语言描述法流程图描述法N-S图描述法类语言描述法2024/12/24李飞——东北大学秦皇岛分校计算中心5/35自然语言描述用自然语言描述算法。例3.1:求1+2+3+┉+100,即∑_(n=1)^100▒n。步骤1:求1+2的和,得到结果3。步骤2:求步骤1的结果与3相加的和,得到1+2+3的结果6步骤3:求步骤2的结果与4相加的和,得到1+2+3+4的结果10……步骤99:求步骤98的结果与100相加,得到最终结果5050。2024/12/24李飞——东北大学秦皇岛分校计算中心6/35流程图的画法元素名称起止框输入/输出框处理框判断框流程线连接点图形2024/12/24李飞——东北大学秦皇岛分校计算中心7/35基本流程顺序结构选择结构(二选一)选择结构(多选一)循环结构(当型循环)循环结构(直到型循环)2024/12/24李飞——东北大学秦皇岛分校计算中心8/35模块1模块2条件P循环体A条件P循环体A例3.2:求两个正整数a和b的最小公倍数。2024/12/24李飞——东北大学秦皇岛分校计算中心9/35N-S图的画法顺序结构选择结构(二选一)选择结构(多选一)循环结构(当型循环)循环结构(直到型循环)2024/12/24李飞——东北大学秦皇岛分校计算中心10/35ABNoABPYes循环条件PA循环条件PA例3.2:求两个正整数a和b的最小公倍数。2024/12/24李飞——东北大学秦皇岛分校计算中心11/35类语言表示法用类似计算机语言来描述算法。例3.2:求两个正整数a和b的最小公倍数。input a,b;if(a>b)thenmax=a,min=belsemax=b,min=at=maxwhile(t%min!=0)t=t+maxprint(t)2024/12/24李飞——东北大学秦皇岛分校计算中心12/35Java语句概述语句(statements)是程序的基本组成单位,在Java语言中,有简单语句和复合语句两类语句。一条简单语句总是以分号(;)结尾,它表示一个要执行的功能(如shorts=258;)。复合语句:是用一对花括号{}括起来的若干个语句(一般也称为语句块――blocks)。仅有一个分号的语句称空语句。2024/12/24李飞计算中心顺序结构相关语句表3.1常用简单语句汇总表语句功能语句格式注释语句//单行注释内容/*多行注释内容*//**文档注释*/包声明语句package包名;包引入语句import包名.*;import包名.类名;类定义语句[static][public|private]class类名{}常量的定义语句final[static]数据类型常量名=常量值;变量的声明类型变量名[=初始值][,变量名[=初始值]……];变量的赋值语句[作用域][数据类型]变量名=常量|变量|表达式变量名复合赋值运算符常量|变量|表达式方法调用语句[包名.]类名.类方法名([参数表]);实例对象名.方法名([参数表]);对象创建语句对象名=new构造方法([参数表]);new构造方法([参数表]);2024/12/24李飞——东北大学秦皇岛分校计算中心14/35顺序结构相关语句说明作用范围限定词Public:公有的,代表声明的变量、类、方法等可以被所有其他的类、方法和变量访问。Private:私有的,仅供当前范围内(当前类、当前方法)使用。不写:包范围。供同一包内的所有类和方法使用,和其子类中使用特殊限定词Static:静态的,会把相关内容存在特殊的存储区,影响到程序运行周期中的所有模块Final:最终的,他说明的元素不可继承,是能用,不能改。可看成常量不写:代表局部的动态的,作用范围为定义语句所在的模块。程序运行结束会释放。类型:基本数据类型:boolean,char,byte,short,int,long,float,double,类名2024/12/24李飞——东北大学秦皇岛分校计算中心15/35顺序结构相关语句例3.3标准输出方法的使用。2024/12/24李飞——东北大学秦皇岛分校计算中心16/35publicclasseg3_3{ publicstaticvoidmain(String[]args){ bytea=34; intb=2,c=3; doubled=3.14; chare[]={'c','h','i','n','a',''}; bytef[]={'m','y','','m','o','t','h','e','r','l','a','n','d'}; floatg=2.71f; Strings="HelloChina"; booleanl=true; System.out.print(a); System.out.print(b); System.out.println(c); System.out.println(d); System.out.print(e); System.out.write(f,0,13); System.out.println(g); System.out.println(s+"!"); System.out.print(l); }}用标准输入方法输入数据importjava.util.*;publicclasseg3_4{ publicstaticvoidmain(String[]args){ intage; Strings="mynameis"; Stringname=newString(); Scannerscanner=newScanner(System.in);//创建标准输入对象 System.out.println("请输入你的姓名和年龄"); name=scanner.nextLine();//获取输入内容 age=scanner.nextInt();//获取输入内容 System.out.println(s+name+"."); System.out.println("I'm"+age+"yearsold."); }}2024/12/24李飞——东北大学秦皇岛分校计算中心17/35§3.3选择结构分支结构

Java语言实现选择结构的语句有两种:一种是两路分支选择的if-else语句;一种是多分支选择的switch语句。2024/12/24李飞计算中心条件P模块1模块2YN条件P模块1模块1……语句格式if(逻辑表达式)语句1;[else语句2;]功能先计算逻辑表达式的值。如果为true执行语句1,否则执行语句2.如果省略语句2则逻辑表达式为false时不作任何操作。2017年3月李飞计算中心选择结构例3.7判断一个数是否非负数。publicclasseg3_7{ publicstaticvoidmain(String[]args){ intn; n=(int)(Math.random()*200-100); if(n>=0){ System.out.println(n+"是非负数"); } else System.out.println(n+"是负数"); }}

if语句

2024/12/24李飞计算中心if语句

——嵌套

一般形式if()if()语句1else语句2elseif()语句3else语句4注意语句1、2、3、4可以是复合语句,每层的if与else配对,或用{}来确定层次关系。2024/12/24李飞计算中心switch语句一般形式switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;┆case常量表达式n:语句n;default:语句n+1;}2024/12/24李飞计算中心执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用{}。可以是整型、字符型switch语句switch语句的表达式只能是byte,,char,short,int类型。

case常量必须与表达式类型兼容,且各case的常量互不相同。允许多个不同的case执行相同的语句。case1:case2:casen:语句;break;break语句会直接跳到switch之后。2017年3月李飞计算中心2017年3月李飞计算中心eg3.11根据输入的成绩判定成绩档次importjava.util.*;publicclasseg3_11{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); doublescore; score=scanner.nextDouble(); if(score<0||score>100) System.out.println("请输入0-100之间的数"); elseif(score<60) System.out.println("不及格"); elseif(score<70) System.out.println("及格"); elseif(score<80) System.out.println("中等"); elseif(score<90) System.out.println("良好"); elseif(score<=100) System.out.println("优秀"); }}§3.4循环结构如何有效地完成重复工作?循环结构是当循环条件为真时,不断地重复执行某些动作,即反复执行同一程序块,直到循环条件为假,结束循环,转向循环结构的出口。在现实世界的许多问题中需要用到循环控制,例如累加求和,迭代求根,求某月工资总和等。Java语言中实现循环结构的语句共有三种:while语句,do-while语句和for语句。2024/12/24李飞计算中心while语句形式while(表达式)语句

可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先判断表达式的值,为true时,再执行语句。2024/12/24李飞计算中心例3.13:用迭代法求1-2+3-4…+(-1)n-1×n的值,n由用户输入importjava.util.Scanner;publicclasseg3_13{ publicstaticvoidmain(String[]args){ inti,n,sum,x; Stringname=newString(); Scannerscanner=newScanner(System.in); System.out.println("请输入相数n:"); n=scanner.nextInt(); i=1; sum=0; x=1; while(i<=n){ sum=sum+x*i++; x=-x; } System.out.println(sum); }}2024/12/24李飞计算中心do-while语句一般形式do语句while(表达式)可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先执行循环体语句,后判断条件。

表达式为true时,继续执行循环体与while语句的比较:While语句执行顺序

先判断表达式的值,为true时,再执行语句2024/12/24李飞计算中心例3.14:一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,而在兔子达到用户指定的n只以上时,出栏。问第一次出栏需要多少个月?2024/12/24李飞——东北大学秦皇岛分校计算中心29/35importjava.util.Scanner;publicclasseg3_14{ publicstaticvoidmain(String[]args){ inti,n,s; Scannerscanner=newScanner(System.in); System.out.println("请输入兔子数n:"); n=scanner.nextInt(); s=1; if(n==1){ i=1; }else{ i=2; do{ s=2*s; i=i+1; }while(s<n); } System.out.println(i-1); }}2024/12/24李飞计算中心for语句语法形式for(表达式1;表达式2;表达式3)语句

2024/12/24李飞计算中心循环前先求解非0时执行循环体每次执行完循环体后求解例3.14importjava.util.Scanner;publicclasseg3_14_2{ publicstaticvoidmain(String[]args){ inti,n,sum,x; Scannerscanner=newScanner(System.in); System.out.println("请输入相数n:"); n=scanner.nextInt(); for(i=1,sum=0,x=1;i<=n;i++){ sum=sum+x*i; x=-x; } System.out.println(sum); }}2024/12/24李飞计算中心另一种写法importjava.util.Scanner;publicclasseg3_15{ publicstaticvoidmain(String[]args){ inti,n,sum,x; Scannerscanner=newScanner(System.in); System.out.println("请输入相数n:"); n=scanner.nextInt(); i=1; sum=0; x=1; for(;i<=n;i++){ sum=sum+x*i; x=-x; } System.out.println(sum); }}importjava.util.Scanner;publicclasseg3_16{ publicstaticvoidmain(String[]args){ inti,n,sum,x; Scannerscanner=newScanner(System.in); System.out.println("请输入相数n:"); n=scanner.nextInt(); i=1; sum=0;

x=1; for(;i<=n;){ sum=sum+x*i; x=-x;

i++; } System.out.println(sum); }}2024/12/24李飞——东北大学秦皇岛分校计算中心33/35循环嵌套例3.18输出类似下图的图形。publicclasseg3_18{ publicstaticvoidmain(String[]args){ intn=8; for(inti=1;i<=n;i++){ for(intj=0;j<i;j++){ System.out.print("*"); } System.out.println(); } }}2024/12/24李飞计算中心break和continue语句break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。continue语句结束本次循环,接着判断是否执行下一次循环。2024/12/24李飞计算中心例3.20求2-n之间的素数importjava.util.Scanner;publicclasseg3_20{publicst

温馨提示

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

评论

0/150

提交评论