JS流程控制(选择结构和循环)

早过忘川 提交于 2020-03-09 04:40:59

JS 流程控制

简介

在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们腰通过控制代码
的执行顺序来实现我们腰完成的功能

简单理解:流程控制就是来控制我们的代码按什么结构顺序来执行

流程控制主要有三种结构,分别是 顺序结构、分支结构 和 循环结构,这三种结构代表三种代行的顺序

在这里插入图片描述

分支结构

if 语句流程控制

if 的语法结构

if(条件表达式){
	//执行语句
}

执行思路 如果 if 里面的 条件表达式结果为真 true 则执行大括号里面的执行语句

如果 if 条件表达式为假 则不执行大括号里面的语句 则执行 if 语句后面的代码

if else 语法结构

if(条件表达式){
	//执行语句1
}else {
	//执行语句2
}

if else if else 多分支语句

多分支语句,就是利用多个条件来选择不同的语句执行 多选 1 的过程

if (条件表达式1){
	//执行语句1
} else if (条件表达式2){
	//执行语句2
} else if (条件表达式3){
	//执行语句3
    ...
} else {
	//上述条件都不成立执行的代码
}

小小案例1(if)

弹出一个输入框,要求用户输入年龄,如果年龄大于等于 18 ,允许进网吧

var age = +prompt('请输入您的年龄');
if(age >= 18){
	alert('年龄符合,可以进入网吧!!');
}else{
	alert('您的年龄不符合!')
}

小小案例2 (if else)

接收用户输入的年份 如果是闰年就弹出闰年,否则弹出平年

var year = +prompt('请输入一个年份');
if( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
    alert(year + '是闰年');
} else {
    alert(year + '是平年');
}

小小案例3 (if else)

接收用户输入的姓名,来判断是否中将,如果输入的是刘德华,则提示中了5块钱,否则提示没中奖

var yName = prompt('请输入您的年龄');
if( yName == '刘德华'){
    alert('恭喜您中奖5元!!');
} else {
    alert('好遗憾,您没有中奖');
}

小小案例4 (if else if else)

接收用户输入的分数,根据分数输出对应的等级字母 A、B、C、D、E、其中:90分(含)以上,输出 A,80分(含)—90分(不含),输出B 70分(含)—80(不含)输出C,60分(含)—70(不含),输出D,60分(不含)一下,输出E.

var score = +prompt('请输入分数');
if (score >= 90){
    alert('A');
} else if (score >= 80){
    alert('B');
} else if (score >= 70){
    alert('C');
} else if(score >= 60){
    alert('D');
} else {
    alert('E');
}

三元表达式

由三元运算符组成的式子我们称为三元表达式 ? :

**语法结构:**条件表达式 ? 表达式1 : 表达式2

var num = 10;
num > 5 ?'是的' : '不是的';

小小案例5 ( ? : )

用户输入数字,如果数字小于10,则在前面补0,如01,09,如果数字大于10,就输出数字本身

var num = +prompt('请输入0-59之间的数字');
var result = num < 10 ? '0' + num :num;
alert(result);

switch

switch 也是多分支语句,也可以实现多选 1。当腰争对变量设定一系列特定值的选项时,就可以使用stitch

switch(表达式){
	case value1:
		执行语句1;
		break;
	case value2:
		执行语句3;
		break;
	case value3:
		执行语句3;
		break;
	case value4:
		执行语句4;
		break;
	...
	default:
		最后执行的语句;
}

小小案例 ( 查询水果)

用户在输入框输入一个水果,如果有就弹出该水果的价格,如果没有该水果就输出“没有此水果”。

var fruit = prompt('请输入您需要的水果');
switch(fruit){
    case '苹果':
        alert('3.5元一斤');
        break;
    case '榴莲':
        alert('35元一斤');
        break;
    case '香蕉':
        alert('4元/斤');
        break;
    default:
        alert('没有该水果');
        break;
}

switch语句和 if else if语句的区别

  • 一般情况下,它们两个语句可以相互替换

  • switch.case语句通常处理case为比较确定值的情况,而i.else…语句更加灵活,常用于范围判断(大于、
    等于某个范围

  • switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而f.else语句有几种条件,就得判断多
    少次

  • 当分支比较少时,f.else语句的执行效率比 switch语句高。

  • 当分支比较多时, switch语句的执行效率比较高,而且结构更清晰。

分支结构练习:

  1. 判断时间阶段。比如用户输入12点弹出中午好用户输入18点弹出傍晩好用户输入23点弹出深夜好
//有bug 如果数字数字大于23还是深夜好,而深夜是23~3
var time = +prompt('请输入时间');
if(time >= 23){ 
    alert('深夜好');
} else if(time >= 19){  
    alert('晚上好');
} else if(time >= 17){  
    alert('傍晚好');
} else if(time >= 13){ 
    alert('下午好');
} else if(time >= 11){  
    alert('中午好');
} else if(time >= 8){  
    alert('上午好');

} else if(time >= 6){  
    alert('早晨好');

}else if(time >= 3){   
    alert('凌晨好');
}
  1. 比较两个数的最大值(用户依次输入2个值,最后弹单出最大的那个值)
var num1 = +prompt('请输入数字1');
var num2 = +prompt('请输入数字2');
var max = num1 > num2 ? num1 : num2;
alert('最大数:'+max);
  1. 用户输入一个数,来判断是奇数还是偶数
var num = +prompt('请输入数字为您判断奇偶数');
num % 2 == 0 ? alert('您输入的数是偶数') : alert('您输入的数字是奇数'); 
  1. 根据用户输入的数值(数字1到数字7),返回星期几
var num = +prompt('请输入数字1~7');
switch(num){
    case 1:
        alert('星期一');
        break;
    case 2:
        alert('星期二');
        break; 
    case 3:
        alert('星期三');
        break;
    case 4:
        alert('星期四');
        break;
    case 5:
        alert('星期五');
        break;
    case 6:
        alert('星期六');
        break;
    case 7:
        alert('星期日');
        break;
    default:
        alert('输入有误!');
        break;
}
  1. 接收班长口袋里的钱数?若大于等于2000,请大家吃西餐。若小于2000,大于等于1500,请大家吃快餐。
    若小于1500,大于等于1000,请大家喝饮料。若小于1000,大于等于500,请大家吃棒棒糖。否则提醒班长
    下次把钱带够
var money = +prompt('请输入班长的钱数');
if(money >= 2000){
    alert('班上请大家吃西餐');
} else if(money >= 1500){
    alert('班上请大家吃快餐');
} else if(money >= 1000){
    alert('班长请大家喝饮料');
} else if(money >= 500){
    alert('班长请大家吃棒棒糖');
} else {
    alert('班长,大家提醒你下次把钱带够!');
}
  1. 分数转换,给个分数,判定等级。大于等于90A,大于等于80小于90B,大于等于70小于80C,大于
    等于60小于70D,小于60E
//有bug 只要数字大于90,就是A。那200呢?1000呢?不符合常理
var score = +prompt('请输入分数');
if (score >= 90){
    alert('A');
} else if (score >= 80){
    alert('B');
} else if (score >= 70){
    alert('C');
} else if(score >= 60){
    alert('D');
} else {
    alert('E');
}

循环结构

循环目的

在实际问题中,有许多 具有规律性的重复操作 ,因此在程序中需要完成这类操作就需要 : 重复执行某些语句

for循环

语法结构

for(初始化变量;条件表达式;操作表达式){
	//循环体
}
  • 初始化变量:就是用var 声明的一个普通变量 ,通常用于作为计数器使用
  • 条件表达式:就是用来决定每一次循环是否继续执行,就是终止的条件
  • 操作表达式:是每次循环最后执行的代码,经常用于我们计数器变量进行更新(递增 或 递减)

执行过程

for(var i = 1;i <= 100;i++){
	console,log('HOW are you?');
}

循环嵌套

循环嵌套 是值在一个循环语句中在定义一个循环语句的语法结构,例如for循环语句中,可以在嵌套一个for循环,这样的 for 循环语句我们称之为 双重for循环

语法结构:

for(外层的初始化变量;外层的条件表达式;外层的操作表达式){
	for(内层的初始化变量;内层的条件表达式;内层的操作表达式){
	
}

for循环练习

  1. 求 1~ 100之间所有数的平均值

    var sum = 0;
    for(var i = 1;i <= 100;i++){
        sum += i;
    }
    var mean = sum / 100;
    console.log('1~100之间的平均数是:'+mean);
    
  2. 求 1~100之间所有偶数和奇数的和

    var even = 0;
    var odd = 0;
    for(var i = 1;i <= 100;i++){
        if(i % 2 == 0){
            even += i
        }else {
            odd += i;
        }
    }
    console.log('1~100之间的偶数是:'+even);
    console.log('1~100之间的奇数是:'+odd);
    
  3. 求 1~100 之间所有能被3整除的数字和

    var sum = 0;
    for(var i = 1;i <= 100;i++){
        if(i % 3 == 0){
            sum += i;
        }
    }
    console.log('1~100之间能被3整除的数字和是:'+sum);
    
  4. 用户输入班级人数,之后依次输入每个学生的成绩,最后打印出班级总人数以及平均成绩

    var people = +prompt('请输入学生人数:');  //people 总的学生人数
    var score = 0;      //分数求和变量
    var average = 0;    //求平均值的变量
    for(var i = 1;i <= people;i++){
        score +=  +prompt('请输入第'+i+'个学生的分数');
    }
    average = score / people;
    console.log('这个班总人数是:'+people);
    console.log('平均成绩是:'+average);
    
    
  5. 一行打印五个星星
    在这里插入图片描述

    var str = '';
    for (var i = 1; i <= 5; i++) {
        str += '⭐'
    }
    console.log(str);
    
  6. 打印倒三角形

    var rows = prompt('请输入要打印星星的行数:');
    var cols = prompt('请输入要打印星星的列数:');
    var str = '';
    for (var i = 1; i <= rows; i++) {
        for(var j = i;j <= cols;j++){
            str +='⭐';
        }
        str += '\n';
    }
    console.log(str);
    
  7. 打印九九乘法表

    var str = '';
    for (var i = 1; i <= 9; i++) {
        for(var j = 1;j <= i;j++){
            // str += j + i = ;
            str += (j +'×'+ i +'='+ j * i)+'\t';
        }
        str += '\n';
    }
    console.log(str);
    

while 循环

whie语句可以在条件表达式为真的的提下,循环执行指定的段代码,直到达式不为真时结束循环
whie语句的语法结构如下

while(条件表达式){
	//循环体代码
}

执行思路:
① 先执行条件表达式,如果结果为true,则执行循环体代码;如果为 false,则退出循环,执行后面代码
② 执行循环体代码
③ 循环体代码执行完毕后,程序会继判断执行条件表达式,如条件仍为te,则会继续行循环体,直劉循
环条件为 false时,整个循环过程才会结束

while循环案例:

  1. 打印人的一生,从1岁到100岁

    var people = 1;
    while(people <= 100){
        console.log(people);
        people++;   
    }
    
  2. 计算 1~100之间所有整数的和

    var num = 1;
    var sum = 0;
    while(num <= 100){
        sum += num;
        num++;   
    }
    console.log(sum);
    
  3. 弹出一个提示框,你爱我吗?如果输入我爱你,就提示结束,否则就一直循环

    var message = prompt('你爱我吗?');
    while(message != '我爱你'){
        message = prompt('你爱我吗?');
    }
    alert('嘻嘻,我不爱你!!!');
    

do while 循环

do. while语句其实是whle语句的一个变体。该循环会执行次代码块,然后对条件表达式进行判断,如
果条件为真,就会重复执行循环体,否则退出循环。

do-whle语句的语法结构如下:

do {
	//循环体代码-条件表达式为true时重复执行循环体代码
}while(条件表达式);

执行思路:
①先执行次循环体代码
②再执行条件表达式,如果结果为true,则继续执行循环体代码,如果为 false,则退出循环,继续执行后面

注意:先再执行循环体,再判断,我们会发现do…while循环语句至少会执行一次循环体代码

  1. 1~100之间的和

    var j = 1;
    var sum = 0;
    do {
        sum += j;
        j++;
    }while(j <= 100);
    console.log(sum);
    
  2. 弹出一个提示框,你爱我吗?如果输入我爱你,就提示结束,否则就一直循环

    do {
        var message = prompt('你爱我吗?');
    }while(message != '我爱你');
    alert('我也爱你...');
    
  3. 判断用户名密码,若用户名为 “admin”,密码为 123456,则提示用户登录成功,否则一直让用户输入用户名和密码

    do {
        var user = prompt('请输入用户名');
        var pwd = +prompt('请输入密码');
    } while(user !='admin' && pwd != '123456');
    alert('输入正确,进入系统中...');
    

continue&bleak

continue关键字: 用于立即 跳出本次循环,继续下一次循环(本次循环体中continue之后的代码就会少执行一次)。

  1. 求 1~100 之间,除了能被7整除之外的整数和

    var sum = 0;
    for(var i = 1;i <= 100;i++){
        if(i %7 === 0){
            continue;
        }
        sum += i;
    }
    console.log(sum);
    

break关键字: 用于立即 跳出整个循环(循环结束)。

// break 推出整个循环
for(var i = 1;i <= 100;i++){
    if(i === 3){
        break;
    }
    console.log('我正在吃第'+i+'个包子');
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!