控制语句
结构化编程
结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。
应用代码一般是由三种结构组成:顺序结构、选择结构、循环结构
指导思想
自顶向下、逐步求精、模块化
编程过程
流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。常见的绘制工具有Visio、PowerDesigner等。
1、圆角矩形表示“开始”与“结束”。
2、矩形表示行动方案、普通工作环节用
3、菱形表示问题判断或判定(审核/审批/评审)环节
4、用平行四边形表示输入输出
5、箭头代表工作流方向
结构化编程的推论
任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构
条件判断结构
选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。主要的条件判 断结构有:if 结构和 switch 结构。而 if 结构又可以分为 if 单分支结构、if-else 双分支结构、 if-else if-else 多分支结构。
语法: if(条件判断语句){代码A;}当条件成立时执行代码A,如果条件不成立则不执行代码A,而是直接执行if的下一句
if(条件){代码块1;}else{代码块2;}当条件成立时执行代码块1,如果条件不成立则执行代码块2。没有一种情况是同时执行代码块1和2
if(条件1){代码块1;}else if(条件2){代码块2;}...else{代码块n;}当条件1成立时执行代码块1,如果条件1不成立继续判断条件2,如果条件2成立则执行代码块2,依次类推。没有一种情况是同时执行代码块1和2
需求:要求输入学生性别,如果false则显示女的啊
boolean sex=true;
Scanner sc=new Scanner(System.in);
sex=sc.nextBoolean();
if(sex){ //这里是一个简化写法,实际上就是true==sex
System.out.println("男");
}else //如果代码块中只有一条语句时,{}可写可不写
System.out.println("女");
switch 多分支结构
语法结构:
switch (表达式) {
case 值 1:
语句序列 1;
[break];
case 值 2:
语句序列 2;
[break]; … … … … …
[default:
默认语句;]
}
语法点:
- 表达式的计算结果可以是整型【不允许long类型】,可以是char,同时允许是字串类型[String]
- default的位置没有特殊要求,但是一定是所有的case值不相等时才会执行。但是为了增强可读性,所以一般建议写在所有的case之后
需求:输入月份,显示对应的本月的天数
package cutestFox01;
import java.util.Scanner;
public class Test002 {
public static void main(String[] args) {
//公历闰年遵循的规律为: 四年一闰,百年不闰,四百年再闰.
int res = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入年份:");
int year = sc.nextInt();
switch (month) {
case 2:
if((year%4==0&&year%100!=0)||year/400==0) {
res = 29;
}else
res = 28;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
res = 31;
break;
case 4:
case 6:
case 9:
case 11:
res = 30;
break;
default:
res =-1;
break;
}
System.out.println(year+"年"+month+"月份有:"+res+"天");
}
}
要求输入学生成绩(假设成绩都是整数),如果>=80显示优秀,如果>=70显示良好,如果>=60显示及格,否则显示不及格
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score=sc.nextInt();
int key = score / 10;
String res=null;
switch (key) {
case 10:
case 9:
case 8:
res="优秀";
break;
case 7:
res="良好";
break;
case 6:
res="及格";
break;
default:
res="不及格";
break;
}
System.out.println("学生成绩为:"+score+"评级为:"+res);
}
}
循环结构
循环就是重复做某一件事情。在Java程序中,循环控制即在某一情况下,控制程序重复执行某一条或多条语句,直到遇到终止条件为止
循环语句也称迭代语句,在Java语言中存在的while、for和do-while循环语句
循环结构分两大类,一类是当型,一类是直到型。
当型: 当布尔表达式条件为 true 时,反复执行某语句,当布尔表达式的值为 false 时才停 止循环,比如:while 与 for 循环。
直到型: 先执行某语句, 再判断布尔表达式,如果为 true,再执行某语句,如此反复,直 到布尔表达式条件为 false 时才停止循环,比如 do-while 循环。
while循环
while是Java中最基本的循环语句,满足条件才执行循环体,如果不满足条件则不执行。所以有可能循环体一次都不执行。
语法:while(条件){循环体;}当条件成立时反复执行循环体,每执行一次判断一次条件。
package cutestFox01;
public class Test003 {
public static void main(String[] args) {
int res = 0;
int x = 1;
while(x<=100) {
res = res+x;
x++;
}
System.out.println(res);
}
}
需求:计算所有100以内奇数的和
public class Test{
public static void main(String[] args){
int res=0;
int k=1;
while(k<100){
res+=k;
k=k+2;
}
System.out.println(res);
}
}
do/while循环
语法:do{循环体;}while(条件); 先执行循环体,然后进行条件判断,如果条件为true,则执行下次循环;如果条件为false则终止循环。
-
不同于while循环的点:do/while循环至少执行循环体一次,而while循环有可能一次都不执行
package cutestFox01;public class Test006 { public static void main(String[] args) { int res = 0; int k = 1; do { res +=k++; }while(k<101); System.out.println(res); } }
for循环
语法:for(表达式1;表达式2:表达式3){循环体;}这里不是逗号
-
执行表达式1
-
执行表达式2,一般表达式2是一个条件,如果条件为true则执行循环体;如果条件为false则终止循环
-
执行循环体
-
执行表达式3
-
执行第2步骤
-
for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for 循环在第 一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结 果为 true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步 进”,即执行迭代因子。
-
初始化部分设置循环变量的初值
-
条件判断部分为任意布尔表达式
-
迭代因子控制循环变量的增减
package cutestFox01;public class Test007 { public static void main(String[] args) { int res = 0; for(int k=0;k<101;k++) { res+=k++; } System.out.println(res); } }
三种循环写法的选择
-
for循环一般用于可以明确循环次数的场景中
-
while循环一般用于不能预先确定循环执行次数的场景中
-
do/while循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
2020年11月3日