分支结构-1
1、程序的流程
程序 = 数据结构 + 算法
任何复杂的算法都可以通过 "顺序","分支","循环" 三种结构来表示
2、什么是分支结构
在不同的情况下,可以选择不同的语句来执行
当 条件 满足时,执行某些语句 - if结构
当 条件 满足时,执行某些语句
当条件 不满足时,执行另外一些语句
-if ... else 结构
3、if结构
1、语法
if(条件){
//语句块(满足条件时要做的操作)
}
条件:尽量放 boolean 的变量 或 表达式
判断条件
如果条件 为真的话,则执行语句块中的代码
如果条件 为假,则跳过语句块,执行其他语句
2、注意
1、条件如果不是boolean的话,则会自动转换,以下操作会自动将条件转换为 false,其他都是true
if(0){}
if(0.0){}
if(undefined){}
if(NaN){}
if(""){}
if(null){}
ex:
if(35.0){} //true
if("Hello World"){}//true
if(0){} //false
2、if 后的 {} 可以省略不写,如果省略不写的话,那么if只控制它下面的第一条语句
4、if ... else 结构
1、作用
当满足条件时,执行某些操作
当不满足条件时,执行另外一些操作
2、语法
if(条件){
语句块1;
}else{
语句块2;
}
判断条件的结果
如果条件为真,则执行语句块1
否则(条件为假),则执行语句块2
5、else ... if 结构
1、判断
输入 一个 考试成绩
成绩 >= 100 分 ,奖励一台 兰博基尼
或者 成绩 >= 90分,奖励一台 法拉利
或者 成绩 >= 80分,奖励一台 奥迪
或者 成绩 >= 70分,奖励一台 奥拓
或者 成绩 >= 60分,奖励一台 自行车
否则 奖励俩 大嘴巴子!
2、语法
if(条件1){
语句块1;
}else if(条件2){
语句块2;
}...else if(条件n){
语句块n;
}else{
语句块n+1;
}
流程:
从上向下判断条件,满足哪个条件则执行对应的语句块,然后跳出整个结构
所有条件都不满足时,执行else结构
注意:
最后的 else 可以省略不写,如果省略的话,以上条件都不满足,则什么都不执行
练习:
1、将 克莱托指数 计算 改成 选择结构版本
2、分别输入 年,月,日,判断该日是这一年的第 ? 天
输入年:2017
输入月:1
输入日:22
2017年1月22日是2017年的第22天
输入年:2017
输入月:4
输入日:15
2017年4月15日是2017年的第105天
(31+28+31+15) = 105
<script>
/*输入身高体重*/
function calClt(){
var height = prompt("Height:");
var weight = prompt("Weight:");
var clt = weight / (height * height);
if(clt < 20){
alert("您偏瘦");
}else if(clt > 25){
alert("您偏胖");
}else{
alert("正常!");
}
}
/*输入年月日,判断该日是该年的第?天*/
function calDate(){
var year = prompt("请输入年:");
var month = prompt("请输入月:");
var day = Number(prompt("请输入日:"));
//判断year是否为闰年
var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
//声明totalDays 变量,用于保存总天数
var totalDays = 0;
//根据用户输入的月份给出相应提示
if(month == 1){
totalDays = day;
}else if(month == 2){
totalDays = 31 + day;
}else if(month == 3){
totalDays = 31 + 28 + day;
}else if(month == 4){
//累加 1月,2月,3月总天数,以及4月份输入的天数
totalDays = 31 + 28 + 31 + day;
}else if(month == 5){
totalDays = 31 + 28 + 31 + 30 + day;
}else if(month == 6){
totalDays = 31 + 28 + 31 + 30 + 31 + day;
}
//判断是否为2月以后以及是否为闰年,如果满足的话,再追加1天
if(month > 2 && isRun){
totalDays += 1;
}
//将提示输出的内容放在 选择结构 之外
console.log(year+"年"+month+"月"+day+"日是"+year+"年的第"+totalDays+"天");
}
</script>
分支结构-2
1、"等值" 判断的分支结构 - switch
1、语法
switch(变量/表达式){
case 值1:
语句块1;
break; -- 结束switch的运行,可选的
case 值2:
语句块2;
break; -- 结束switch的运行,可选的
case ...:
语句块....;
break;
default:
语句块n;
break;
}
流程:
1、计算 switch后的 变量 或 表达式的值
2、判断值与哪个case块后面的值能匹配上,匹配上哪个case块则执行哪个语句块
3、碰到 break , 则结束switch结构的运行,如果没有break,则继续执行后续的case块,直到碰到break,或执行结束为止
4、如果任何case都没有匹配上的话,并且具备default模块的话,则执行default里面的内容。否则什么都不执行
注意:
1、各个case块与default之间的位置可以随便放
2、JS 默认是采用 === 的方式做等值判断的
1 和 "1" 是不相等的
2、特殊用法 - 直落
直落:两个 或 多个case块要执行相同的内容,可以采用直落的形式
switch(变量/表达式){
case 值1:
case 值2:
case 值3:
语句块;
break;
}
1、计算 变量 或 表达式的值
2、如果计算出来的值是 值1或值2或值3,都执行相同的语句块。
month = Number(prompt());
switch(month-1){
case 11:
totalDays += 30;
case 10:
totalDays += 31;
... ...
}