流程控制操作

1.什么是流程控制?

  • 流程控制就是来控制代码按照怎样的顺序来执行
  • 流程控制主要有有三种结构:顺序结构、分支结构、循环结构

2. 分支结构

1.if分支

  1. 单分支 if和if...else
  2. 多分支 if...else...if
    // 判断是否为闰年(能够被4整除,并且不能被100整除或者能够被400整除的是闰年)
    var year = prompt('请输入年份');
    if (year % 100 != 0 && year % 4 == 0 || year % 400 == 0) {
      alert(year + '是闰年!');
    } else {
      alert(year + '不是闰年!')
    }

    // 接收用户的体重和身高,并测量出用户的BMI指数
    // BMI的计算公式:体质指数(BMI)=体重(kg)÷身高^2(m)
    // 过轻:低于18.5
    // 正常:18.5-23.9
    // 过重:24-27
    // 肥胖:28-32
    // 非常肥胖, 高于32


    var height = prompt('请输入您的身高(cm):');
    var weight = prompt('请输入您的体重(斤):');
    height /= 100;
    var BMI = (weight / 2) / (height * height);
    alert('您的BMI指数为' + BMI);
    if (BMI < 18.5 && BMI > 0) {
      alert('您过于轻了,请您及时补充营养!');
    } else if (BMI >= 18.5 && BMI < 24) {
      alert('您的体重正常,请您继续保持!');
    } else if (BMI >= 24 && BMI < 28) {
      alert('您的体重有些过重了,请您适当运动!');
    } else if (BMI >= 28 && BMI < 32) {
      alert('您的体重有些肥胖了,请您合理饮食!');
    } else if (BMI >= 32 && BMI < 40) {
      alert('您已经非常肥胖率,必须马上减肥!')
    } else {
      alert('您输入有误!');
    }

2.三元表达式

  • 语法:条件表达式?表达式1:表达式2
  • 解释:如果条件表达式的值为true,返回表达式1的值;
    如果条件表达式的值为false,则返回表达式2的值。
    // 三元表达式
    var num = 10;
    var result = num > 5 ? '没错' : '有问题';
    console.log(result); // 没错


    // 数字补0,如果小于9就在前面补个0,如果大于则不补
    var num = prompt('请输入一个数字:');
    var result = num < 9 ? '0' + num : num;
    alert(result);

3.switch分支

  • 当针对变量设置一系列特定值的选项时,就可以使用switch
  • 在switch中变量的值和case中的值必须全等
  • 如果当前的case中没有break则不会退出会继续执行下一个case
    // 查水果价格案例
    var fruit = prompt('请输入水果名');
    switch (fruit) {
      case '苹果':
        alert('苹果(每斤/25元)');
        break;
      case '香蕉':
        alert('香蕉(每斤/45元)');
        break;
      case '菠萝':
        alert('菠萝(每斤/60元)');
        break;


      default:
        alert('没有此水果!')
        break;
    }

4.if else if和switch的区别?

  1. switch…case用于case比较确定值的情况下,而if else更加灵活,常用于判断某个范围
  2. switch条件判断后直接执行到程序的条件语句,效率跟高。而if else有几种条件就得判断多少次
  3. 当分支比较少时,if else 执行效率比switch高
  4. 当分支比较多时,switch执行效率比较高,而且结构更清晰
  5. 一般情况下,它们两个可以互换

3. 循环结构

1. 什么是循环?

  • 在程序中,一组被重复执行的语句被称为循环体,能否继续执行,取决于循环的终止条件。
  • 循环体和循环的终止条件组成的语句,被称为循环语句

2. for循环

    for (初始化变量; 条件表达式; 操作表达式) {
      // 循环体
    }
  • 初始化变量:就是声明的一个普通变量,通常用作计数器;
  • 条件表达式:终止条件(决定每一次循环是否继续执行);
  • 操作表达式:用于计数器变量的更新(递增或递减),是循环最后执行的代码
    for (var i = 1; i <= 100; i++) {
      alert('你好');
    }

  • 首先执行var i = 1(初始化变量);这句话只会执行一次。(i就是index的意思)
  • 其次执行i <= 100(条件表达式);如果满足此条件就执行循环体中的内容,若不满足条件,就退出循环
  • 最后执行i++(操作表达式),i++是单独写的代码,表示递增
  • 第一轮循环结束后,第二轮循环从条件表达式开始执行,以此类推。
双重for循环
    // 双重for循环
    for (外层初始化变量; 外层条件表达式; 外层操作表达式) {
      for (里层初始化变量; 里层条件表达式; 里层操作表达式) {
    // 执行语句
      }
    }
  • 我们可以把里面的循环看做外层循环的循环语句
  • 外层循环每循环一次,里层循环循环全部
for循环的特点
  1. for循环可以重复执行某些相同的代码
    // 1.for循环执行相同的代码
    var str = prompt('请输入内容');
    for (var i = 1; i <= str; i++) {
      console.log('我爱你!');
    }
  1. for循环可以执行不同的代码,因为有计数器
    // 2.for循环执行不同的代码
    for (var i = 1; i <= 100; i++) {
      console.log('你' + i + '岁了');
      if (i == 1) {
        console.log('你出生了');
      } else if (i == 50) {
        console.log('你到中年了!');
      } else if (i == 100) {
        console.log('你死了');
      }
    }
  1. for循环可以重复某些操作,比如:算出运算加法操作
    // 3.求1~100之间的累加和
    // var result = 0; // 累加的结果,初始化为数字类型
    // for (var i = 1; i <= 100; i++) {
    //   result += i; // 把每次循环的i都累加起来
    // }
    // console.log(result); // 5050


    // 4.求1~100之间所有数的平均值
    // var result = 0; // 累加的结果,初始化为数字类型
    // var avg = 0; //用来保存平均值
    // for (var i = 1; i <= 100; i++) {
    //   result += i; // 把每次循环的i都累加起来
    // }
    // avg = result / (i - 1);
    // console.log(avg); // 50.5


    // 5.求1~100之间所有偶数和奇数的和
    // var even = 0; // 定义偶数
    // var odd = 0; // 定义奇数
    // for (var i = 1; i <= 100; i++) {
    //   if (i % 2 == 0) { // 能被2整除就是取模2等于0
    //     even += i;
    //   } else {
    //     odd += i;
    //   }
    // }
    // console.log('偶数的和为' + even);
    // console.log('奇数的和为' + odd);


    // 6.求1~100之间能够被三整除的数的累加和
    // var num = 0;
    // for (var i = 1; i <= 100; i++) {
    //   if (i % 3 == 0) { // 能被2整除就是取模2等于0
    //     num += i;
    //   }
    // }
    // console.log(num); // 1683
  1. 在确定循环数量的情况下更适合用for循环

    // 7.求班级学生的成绩总分和平均分,(学生数量需要用户确定)
    var num = prompt('请输入学生的数量');
    var result = 0; // 总成绩
    var avg = 0; // 平均成绩
    for (var i = 1; i <= num; i++) {
      var score = prompt('请输入学生' + i + '的成绩:');
      result += parseFloat(score);
    }
    avg = result / num;
    alert('学生的总成绩为:' + result);
    alert('学生的平均成绩为:' + avg);

    // 8.打印一行五个*
    // 技术点:使用追加字符串的方式来打印
    // var str = ''; //先定义一个空字符串
    // for (var i = 1; i <= 5; i++) {
    //   str += '*'; // 把每次需要打印的图案追加在次字符串中
    // }
    // console.log(str);


    // 9.用户自定义打印图案的个数
    // var str = '';
    // var num = prompt('请输入数量');
    // for (var i = 1; i <= num; i++) {
    //   str += '*';
    // }
    // console.log(str);
  1. 随着求增加,双重for循环可以做更多、更好看的效果
    // 打印五行五列的*
    // 技术点:
    // 1.外层循环负责打印五行
    // 2.内层循环负责每行打印五个*
    // 3.在内层每打印一行*后,在原有的字符串后面追加一个换行符\n
    // var str = ''
    // for (var i = 1; i <= 5; i++) {


    //   for (var j = 1; j <= 5; j++) {
    //     str += '*';
    //   }
    //   str += '\n';


    // }
    // console.log(str);


    // 打印n行n列的*
    // var rows = prompt('请输入行数:');
    // var cols = prompt('请输入列数:');
    // var str = ''
    // for (var i = 1; i <= rows; i++) {


    //   for (var j = 1; j <= cols; j++) {
    //     str += '*';
    //   }
    //   str += '\n';


    // }
    // console.log(str);


    // 打印一个倒三角
    // 核心算法:第二个循环的j等于第一个循环的i,(var j = i; j <= 10; j++)
    // var str = ''
    // for (var i = 1; i <= 10; i++) {


    //   for (var j = i; j <= 10; j++) {
    //     str += '*';
    //   }
    //   str += '\n';


    // }
    // console.log(str);


    // 打印一个正三角形
    // 核心算法:(var j = i; j >= 1; j--)
    // var str = ''
    // for (var i = 1; i <= 10; i++) {


    //   for (var j = i; j >= 1; j--) {
    //     str += '*';
    //   }
    //   str += '\n';


    // }
    // console.log(str);


    // 打印99乘法表
    // 核心算法:每一行公式的个数正好和行数一致 j<=i
    var str = ''
    for (var i = 1; i <= 9; i++) {


      for (var j = 1; j <= i; j++) {
        str += j + '*' + i + '=' + j * i + '\t';
      }
      str += '\n';


    }
    console.log(str);
  1. for循环是循环条件和数字直接相关的循环
  2. 分析比写代码重要

3.while循环

 while (条件表达式) {
      // 循环体
    }
  • 语法结构:当…的时候
  • 执行思路:当条件表达式为true的时候,就执行循环体,否则退出循环
 // 打印100次你好
    var num = 1; // 计数器
    while (num <= 100) {
      console.log('你好!');
      num++; // 操作表达式
    }
  • while循环里面也应该有计数器来初始化变量
  • while循环里面也应该有操作表达式来完成计数器的更新,防止死循环
    // while循环案例
    // 1.打印一个人从1岁到100岁
    // var num = 1;
    // while (num <= 100) {
    //   console.log('我' + num + '岁了');
    //   num++;
    // }

    // 2.求出1~100累加和
    // var i = 1;
    // var result = 0;
    // while (i <= 100) {
    //   result += i;
    //   i++;
    // }
    // console.log(result);

    // 3.弹出一个提示框,并提示“你爱我吗?”,如果用户输入我爱你,程序结束,反之一直询问。
    var str1 = '我爱你';
    var str = prompt('你爱我吗?');


    while (str !== str1) {
      str = prompt('你爱我吗?');
    }
    alert('我也爱你啊')

4.do-while循环

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

  • 执行思路:与while循环不同的地方在于,do while先执行一下循环体之后在判断条件,如果条件表达式结果为真,则继续执行循环体,反之退出循环
    var i = 1;
    do {
      console.log('你好吗!');
      i++;
    } while (i <= 100)
  • do while中循环体至少执行一次
    // do while 案例
    // 1.打印1~100岁
    // var i = 1;
    // do {
    //   console.log('我' + i + '岁了');
    //   i++;
    // } while (i <= 100)


    // 2.求1~100累加和
    // var i = 1;
    // var result = 0;
    // do {
    //   result += i;
    //   i++;
    // } while (i <= 100)
    // console.log(result);


    // 3.弹出一个提示框,并提示“你爱我吗?”,如果用户输入我爱你,程序结束,反之一直询问


    var i = 1;
    do {
      var message = prompt('你爱我吗?');
      i++;
    } while (message !== '我爱你')
    alert('我也爱你');

5.for-in循环

6.for-of循环

7.continue和break的区别和联系?

  • continue:跳出本次循环 ,直接跳到i++
  • break:用于跳出整个循环(循环结束)

    // 吃包子案例,有五个包子,我吃到第三个包子的时候发现第三个包子有虫,我就跳过第三个包子,吃其他包子
    // for (var i = 1; i <= 5; i++) {
    //   if (i == 3) {
    //     console.log('这个包子有虫,还是吃后面的包子吧');
    //     continue;
    //   }
    //   console.log('我在吃第' + i + '个包子');
    // }


    // 求1~100之间如果不能被7整除的累加和
    var result = 0;
    for (var i = 1; i <= 100; i++) {
      if (i % 7 == 0) {
        continue;
      }
      result += i;
    }
    console.log(result); // 4315

    // 求出1~100之间所有数的累加和(个位是3的除外)
    // var num = 0//
    // var result = 0; //累加值
    // for (var i = 1; i <= 10; i++) {
    //   num = i;
    //   if (i % 10 == 0) {
    //     num = num - 10;
    //   }
    //   if (num == 3) {
    //     continue;
    //   }
    //   result += i;
    // }
    // console.log(result);

    // 吃包子案例,有五个包子,我吃到第三个包子的时候发现第三个包子有虫,我就不吃第三个包子,后面的包子我也不吃了
    // for (var i = 1; i <= 5; i++) {
    //   if (i == 3) {
    //     console.log('这个包子有虫,后面的包子也不吃了');
    //     break;
    //   }
    //   console.log('我在吃第' + i + '个包子');
    // }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值