是什么?有什么用?用在什么地方?(理解)
养成良好的编程习惯;
培养编程思想;
写代码之前应该先分析需求,分析完需求再开始写代码;(写注释)
流程控制基本概念
顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
1.选择结构-if (主要掌握)
理论上switch要比if高效,但是switch限制较多,远不如if灵活。
1.1 if第一种形式
表示如果表达式为真,执行语句块1,否则不执行。
if(表达式)
{
语句块1
};
1.2 if第二种形式
当条件表达式为真的时候会执行if后面的第一条语句
⚠️ 注意点:在以后开发中尽量不要写使用该格式(因为它只管if后面的第一条语句)
if (条件表达式)
语
后续语句;
1.3 if第三种形式(if else 语句)
-如果表达式为真,则执行语句块1,否则执行语句块2
if(表达式)
{
语句块1
}else{
语句块2
}
后续语句;
1.4 if第四种形式(if else if 语句)
如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断 表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(表达式1)
{
语句块1
}else if(表达式2){
语句块2
}else if(表达式3){
语句块3
}else{
语句块4
}
后续语句;
2.选择结构 -Switch
switch格式:
switch (条件表达式)
{
case 整数: // case可以有一个或多个
语句;
break;
case 整数: // case可以有一个或多个
语句;
break;
default:
语句;
break;
}
1.拿到条件表达式的返回值(注意返回值必须是整型)
2.利用条件表达式的返回值和switch后面大括号中的每一个case进行比较, 判断条件表达式的返回值和case后面的整数是否相等 条件表达式 == 整数
3.如果条件表达式的返回值等于某一个case后面的整数, 那么就会执行该case后面的语句
4.执行完语句之后如果遇到break就会结束整个switch语句, 也就是说后面的所有语句都不会被执行
5.如果前面的case不满足, 也就是前面的case的整数和条件表达式的返回值不相等就会继续判断后面的case
switch (条件表达式)
{
case 整数: // case可以有一个或多个
语句;
break;
case 整数: // case可以有一个或多个
语句;
break;
default:
语句;
break;
}
1.拿到条件表达式的返回值(注意返回值必须是整型)
2.利用条件表达式的返回值和switch后面大括号中的每一个case进行比较, 判断条件表达式的返回值和case后面的整数是否相等 条件表达式 == 整数
3.如果条件表达式的返回值等于某一个case后面的整数, 那么就会执行该case后面的语句
4.执行完语句之后如果遇到break就会结束整个switch语句, 也就是说后面的所有语句都不会被执行
5.如果前面的case不满足, 也就是前面的case的整数和条件表达式的返回值不相等就会继续判断后面的case
6.如果前面所有的case都不满足, 就会执行default后面的语句
⚠️switch注意点:
1.Switch得条件表达式注意点
Switch的条件表达式必须是返回整数的表达式, 也就是说()中只能放整数
或者写能够转换为整数的类型也可以, 例如char, 因为char类型可以转换为int类型, 所以写char也可以
2.case的取值
Switch中, case后面只能放返回值是整数的表达式或者整数, 或者能够转换为整数的类型
case的取值不能重复
case后面不能放变量, 因为系统在编译的时候会对Switch后面所有的case进行优化, 会根据case后面的常量值, 生成一张取
3.default的位置问题
Switch中的default可以随便放
无论default写到什么地方, 它都会最后执行(只有前面所有的case都不满足的情况才会执行)
只要某一个case满足, 那么后面所有的case和default都会失效
同理: 只要default满足, 那么所有的case都会失效
break关键字
使用场合:
switch
循环结构
⚠️注意:
break离开应用范围,存在是没有意义的。
在多层循环中,一个break语句只向外跳一层**
continue关键字
continue语句的作用是跳过循环体中剩余的语句而继续下一次
使用场合:
循环结构
3.循环结构 -while
if (条件表达式)
{
语句;
...
}
if是对给定的条件进行判断, 如果条件满足, 就执行if后面大括号中的内容
while (条件表达式)
{
语句;
...
}
while是对给定的条件进行判断, 如果条件满足, 就执行while后面大括号中的内容, 执行完毕之后会再次判断条件表达式, 如果满足会再次执行while后面大括号中的内容, 直到条件表达式不满足位置
术语: while后面大括号中的内容, 称之为 循环体
{
语句;
...
}
if是对给定的条件进行判断, 如果条件满足, 就执行if后面大括号中的内容
while (条件表达式)
{
语句;
...
}
while是对给定的条件进行判断, 如果条件满足, 就执行while后面大括号中的内容, 执行完毕之后会再次判断条件表达式, 如果满足会再次执行while后面大括号中的内容, 直到条件表达式不满足位置
术语: while后面大括号中的内容, 称之为 循环体
while的应用场景: 当我们需要反复的执行某一段代码的时候就可以使用while
先将while的格式写好
1.找到需要重复执行的代码, 将需要重复执行的代码放到循环体中
2.确定结束条件(确定条件表达式)
⚠️while注意点:
和if一样, while也可以省略大括号, 省略大括号之后, while只会执行离他最近的一条语句
如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
用{}包裹起来的代码, 称之为代码块
;是一条空语句
最简单的死循环
while (1);
5.循环结构-do-while
do
{
语句;
...
}while (条件表达式);
do while和while的区别:
while如果条件表达式一开始就不满足, 那么循环体永远不会被执行
do while如果条件表达式一开始就不满足, 同样会执行一次循环体
{
语句;
...
}while (条件表达式);
do while和while的区别:
while如果条件表达式一开始就不满足, 那么循环体永远不会被执行
do while如果条件表达式一开始就不满足, 同样会执行一次循环体
也就是说: 无论条件表达式是否满足, do while始终会执行一次循环体
6.循环结构-for(主要掌握)
for (初始化表达式;条件表达式;循环后增量表达式)
{
语句;
...
}
条件表达式: 和while, dowhile一样, 只有条件满足才会执行循环体
初始化表达式: 在整个for循环的生命周期中, 初始化表达式只会执行一次
{
语句;
...
}
条件表达式: 和while, dowhile一样, 只有条件满足才会执行循环体
初始化表达式: 在整个for循环的生命周期中, 初始化表达式只会执行一次
循环后增量表达式: 会在每次循环体之后完毕之后调用一次
能用while做得用for都能做, for相当于while的升级版
其实在企业开发中, 只要会用for就可以了(while能做的for都能做)
以后如果定义的便利仅仅用于控制循环什么时候结束, 循环结束之后就不在使用了, 那么可以使用for循环
如果将用于控制循环的变量定义在for循环中, 那么循环结束了, 变量也释放了
什么时候用while?
如果用于控制循环的增量在循环执行完毕之后还需要使用, 那么可以使用while
⚠️for循环注意点:
1.任何数值都有真假性
2.for也可以省略大括号, for省略大括号的时候, 只会执行离他最近的一条语句
3.作用域混乱
4.;空语句
5.其实, 初始化表达式和循环后增量表达式可以写多条语句, 语句之间用,号连接
6.作用域问题
7.循环嵌套
什么是循环嵌套:
while ()
{
while()
{
}
}
while()
{
do{
}while();
}
do
{
while()
{
}
}while();
for (;;)
{
for(;;)
while ()
{
while()
{
}
}
while()
{
do{
}while();
}
do
{
while()
{
}
}while();
for (;;)
{
for(;;)
{
循环语句的循环体中存在其他的循环语句就是循环嵌套,称之为循环嵌套
⚠️注意: 一般循环嵌套不超过三层
外循环执行的次数 * 内循环执行的次数就是总共执行的次数
结论: 循环嵌套执行的次数等于 : 外循环执行的次数 * 内循环执行的次数