结构化编程
结构化程式设计
(
英语
:Structured programming)
是
1960
年代开始发展起来的一种编程典范。它采用子程序、程式码区块、
for
循环以及
while
循环等结构来取代传统的
goto
。
指导思想
自顶向下、逐步求精、模块化
编程过程
流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。
常见的绘制工具有
Visio
、
PowerDesigner
等。
- 圆角矩形表示“开始”与“结束”。
- 矩形表示行动方案、普通工作环节用
- 菱形表示问题判断或判定(审核/审批/评审)环节
- 用平行四边形表示输入输出
- 箭头代表工作流方向
推荐工具:ProcessOn 支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等
结构化编程的推论
任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构
条件分支语句
Java
语言提供了两种判断语句:
if
语句和
switch
语句。这两种语句用于实现判断,当符合某些条件时执行某段代码,否则将不执行
语法
- 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
- 说明:允许多个if之间进行相互嵌套
需求:要求输入学生性别,如果false则显示女的啊!
Scanner sc = new Scanner(System.in);
boolean bb = sc.nextBoolean();
if (bb == false) { //判真一般用法为if(bb){} 判假 if(!bb){}
System.out.println("性别为女");
}
要求输入学生成绩(假设成绩都是整数),如果>60显示及格,否则显示不及格
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if (score >= 60) {
System.out.println("成绩及格");
} else {
System.out.println("成绩不及格");
}
要求输入学生成绩(假设成绩都是整数),如果
>=85
显示优秀,如果
>=70
显示良好,如果
>=60
显示及格,否则显示不及格
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if (score >= 85) {//这里的顺序不能调整,因为条件成立后则立即执行代码块,执行结束则自动跳出 if,不会继续判断
System.out.println("成绩优秀");
} else if(score>=70){
System.out.println("成绩良好");
} else if(score>=60){
System.out.println("成绩及格");
} else {
System.out.println("成绩不及格");
}
开关分支语言switch
语法:
switch(
表达式
){
case
值
1
:
判断表达式的值是否在值
1
,如果相等则执行代码块
1
代码块
1
;
break;
执行完成后,如果没有
break
,则自动执行后续语句,但是不进行判
定。如果有
break
则立即中断
switch
的执行,跳到
switch
块的下一局继续执行
多个
case
语句
:
... ...
default:
如果所有的
case
都不能成立,则执行代码块
n
代码块
n; break;
}
语法点:
- 表达式的计算结果可以是整型【不允许long类型】,可以是char,同时允许是字串类型[String]
- 也可以是枚举类型
- case值类型必须和switch条件类型相同或者能隐式转换为switch表达式类型
- case值必须唯一,不能与其它的重复
- default的位置没有特殊要求,但是一定是所有的case值不相等时才会执行。但是为了增强可读性,所以一般建议写在所有的case之后
三目运算符
三目条件运算符(?:)规则是完全一致的,使用的形式是: x ? y:z;
- 要求表达式1必须返回值为boolean类型
- 要求表达式2和表达式3的返回值类型一致
- Object max = num1 > num2 ? num1 : "num2";
需求:要求输入两个整数,输出最大的整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个整数:");
int num2 = sc.nextInt();
/*
* if(num1>num2) max=num1;
* else max=num2;
*/
int max = num1 > num2 ? num1 : num2;
System.out.println("两个整数("+num1+","+num2+")中最大的值为:"+max);
sc.close();
循环结构
循环就是重复做某一件事情。在
Java
程序中,循环控制即在某一情况下,控制程序重复执行某一条或多条语句,直到遇到终止条件为止
循环语句也称迭代语句,在
Java
语言中存在的
while
、
for
和
do-while
循环语句
需求:计算
1+2+3+...+100=5050
while循环
while
是
Java
中最基本的循环语句,满足条件才执行循环体,如果不满足条件则不执行。所以有可能循环体一次都不执行。
语法: while(
条件
){
循环体
;}
当条件成立时反复执行循环体,每执行一次判断一次条件。
int res=0;//累加器,用于存放每次循环体的执行结果
int k=1;//控制循环次数
while(k<101){
res=res+k;
k++;
}
System.out.println("1+2+3+...+100="+res);
break
和
continue
的用法
break
和
continue
的区别:
- break是立即终止循环,进入循环结构的后续代码继续执行,循环体执行结束
- continue是终止本次循环,进入下次循环,循环并没有执行结束
int res=0;
int k=0;
while(true){
if(++k>100){
break; //跳出循环体,执行循环体后的语句
}
if(k%2==0){ //如果是偶数不进行累加操作,而是从新开始后续的循环,continue之后的语句不执 行,从头开始下次循环
continue; //终止本次循环,立即进入下次循环
} else{
res+=k; //res=res+k
}System.out.print(k+"+");
}
System.out.println("="+res);
do/while循环
语法:
do{
循环体
;
}while(
条件
)
;
先执行循环体,然后进行条件判断,如果条件为
true
,则执行下次循环;如果条件为
false
则终止循环。
- 不同于while循环的点:do/while循环至少执行循环体一次,而while循环有可能一次都不执行.
int res=0;
int k=1;
do {
res+=k++; //res=res+k;k++;
} while (k < 101);
System.out.println(res);
for循环
语法:for(表达式1;表达式2;表达式3){循环体;}
- 执行表达式1
- 执行表达式2,一般表达式2是一个条件,如果条件为true则执行循环体;如果条件为false则终止循环
- 执行循环体
- 执行表达式3
- 执行第2步骤
for
循环一般用于可以明确循环次数的场景中;
while
循环一般用于不能预先确定循环执行次数的场景中;
do/while
循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
int res=0;
for(int i=1;i<=100;i++){
res+=i;
}
System.out.println(res);