12 (H5*) JS第二天 流程控制:顺序结构、分支结构、循环结构

目录 

1:一元运算符

2:流程控制

3:分支之if语句

4:分支之if-else语句

5:分支语句之三元运算符

6:if和else if语句

7:switch-case语句

8:while循环

9:do-while循环

10:for循环

11:for循环案例

12:调试

 

 

复习

 <script>

    /*
     *
     * 一元运算符:  ++  --
     *
     * 如果不参与运算, ++在前面还是在后面结果都是一样的  +1
     * 如果不参与运算, --在前面还是在后面结果都是一样的  -1
     *
     * var num=10;
     * num++;   后+
     * ++num;   前+
     * 无论是前+还是后+只要参与运算,结果可能就不太一样
     * 如:
     *  var num=10;
     *  var sum= num++ +10;
     *  ++在后面的时候,先参与运算,然后自身加1
     *  var num=10;
     *  var sum=++num +10;
     *  ++在前面的时候,先自身加1,然后再参与运算
     *
     *  流程控制: 代码的执行过程
     *  1. 顺序结构:代码的执行的顺序,从上到下,从左到右(不严谨)
     *  2. 分支结构: if,if-else ,if-esle if,switch-case ,三元表达式
     *  3. 循环结构:while 循环,do-while,for循环  for-in循环
     *
     *  总结分支:如果只有一个分支,就用if
     *  如果有两个分支,就用if-else
     *  如果多个分支,一般是范围的,推荐使用if-else if
     *  如果多个分支,一般是具体的值,推荐使用switch-case
     *
     *
     *
     *
     *  总结循环:
     *  while:先判断后循环,有可能一次循环都不执行
     *  do-while:至少执行一次循环体,再判断
     *  for循环:知道了循环的次数,推荐使用for循环
     *
     *
     *  调试:是为了找代码的错误和问题所在,
     *  断点,不加断点,就不方便调试
     * */



    //本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?

//    var money = 10000;//本金
//    var rate=0.003;
//    for(var i=0;i<5;i++){
//      //money=money+money*rate;
//      money+=money*rate;
//    }
//    console.log(money);

    //有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?(兔子的规律为数列,1,1,2,3,5,8,13,21)

    //每个月的值 就是前两个月的和

//    var num1=1;//第一个月
//    var num2=1;//第二个月
//    var sum=num1+num2;//第三个月
//
//
//    var num1=num2;//第二个月
//    var num2=sum;//第三个月
//    sum=num1+num2;//第四个月
//
//
//    var num1=num2;//第三个月
//    var num2=sum;//第四个月
//    var sum=num1+num2;

    var num1=1;//第一个月
    var num2=1;//第二个月
    var sum=0;
    //i=3是从第三个月开始
    for(var i=3;i<=12;i++){
      sum=num1+num2;
      num1=num2;
      num2=sum;
    }
    console.log(sum);
    //求斐波那契数列数列第12个月的值


    //卡卡西  佐助  大蛇丸 鸣人  雏田

    //练习: ++ 和 --

    //    var a = 1;
    //
    //    var b = ++a + ++a;
    //
    //    console.log(b);


    //    var a = 1;
    //
    //    var b = a++ + ++a;
    //    console.log(b);


    //    var a = 1;
    //
    //    var b = a++ + a++;
    //    console.log(b);


    //    var a = 1;
    //
    //    var b = ++a + a++;
    //    console.log(b);


    //    var a=1;
    //    var b=++a + ++a+a++ + ++a;

    //  var sum=0;
    //  for(var i=1;i<=100&&i%2==0;i++){
    //    sum+=i;
    //  }
    //  console.log(sum);


    //    var num = 10;
    //    switch (num) {
    //      case 1:
    //      case 2:console.log("嘎嘎");break;}


    //    var i=1;
    //    j=i++ + i++;
    //    j=1+ 2++;
    //    console.log(j);

  </script>

 

 

1:一元运算符

 <script>


    /*
    *    ++  -- 都是运算符
    *    ++ 和 --  可以分为:前+ 和后+  and   前- 和后-
    *
    *  如果++在后面:如: num++ +10参与运算
    *  先参与运算,运算结束后自身再加1
    *
    *  如果++在前面:如: ++num+10参与运算
    *  先自身加1,然后再参与运算
    *
    *  Ctrl+/可以把选中的代码全部注释掉
    *
    *
    *
    *
    *
    * */

//    var num=10;
//    num++;//自身加1--自加
//    console.log(num);


//    var num=10;
//    ++num;//自身加1
//    console.log(num);


//    var num=10;
//    var sum=num++ +10;
//    console.log(sum);//20


//    var num=10;
//    var sum=++num +10;
//    console.log(sum);//
//    console.log(num);



//    var num=10;
//    var sum=--num +10;
//    console.log(sum);//19
//    console.log(num);//9


//    var num=10;
//    var sum=num-- +10;
//    console.log(sum);//20
//    console.log(num);//9

  </script>

 

 

2:流程控制

<script>


    //流程控制;代码的执行过程
    //流程控制:有三种方式
    /*
    * 1.顺序结构:从上到下,从左到右执行的顺序,就叫做顺序结构(不是很眼睛)
    * 2.分支结构:if语句,if-else语句,if-else if-else if...语句,switch-case语句,三元表达式语句
    * 3.循环结构:while循环,do-while循环,for循环,后期还有一个for-in循环
    *
    *
    * */



    var num=10;
    console.log(num);
  </script>

 

 

3:分支之if语句

 <script>

    /*
    *
    * if语句:主要是判断
    * 语法:
    * if(表达式){
    *   代码块
    * }
    *
    * 执行过程:
    * 先判断表达式的结果是true还是false,如果是true则执行代码块,如果是false,大括号中的代码是不执行的
    *
    * 例子:
    * 1.如果8大于6,请输出8,如果一个数字大于另一个数字则输出大的数字
    * 2.问:小苏的年龄是否大于18岁,如果是成年的,则提示,可以看电影了
    *
    *
    * */
//    if(8>6){
//      console.log(8);
//    }
    //例子1:
//    var num1=10;
//    var num2=100;
//    if(num1>num2){
//      console.log(num1);
//    }
//    console.log("我执行了");

    //例子2
    var age=19;
    if(age>=18){
      console.log("可以看电影了,嘿嘿...");
    }
    //例子3:
    //问小杨帅不帅,则输出真的好帅
    var str="";
    if(str==""){
      console.log("真的好帅");
    }


  </script>

 

4:分支之if-else语句

 <script>

    /*
     *
     * if-else 语句
     * 两个分支,只能执行一个分支
     *
     * if-else语句的语法:
     *
     * if(表达式){
     *   代码1
     * }else{
     *   代码2
     * }
     * 执行过程:
     * 如果表达式的结果是true则执行代码1,如果表达式的结果是false,则执行代码2
     *
     *
     * */

    //例子:问;小苏的年龄是否是成年人,如果是成年人则提示,可以看电影,否则;回家写作业区

    //定义变量,并初始化
//    var age = 100;
//    //判断
//    if (age >= 18) {
//      console.log("可以看电影了,嘎嘎...");
//    } else {
//      console.log("看什么看,回家写作业去");
//    }


    //提示用户请输入年龄----
//    var age=prompt("请您输入您的年龄");//弹框---并且有输入,输入的内容在age变量中
//    console.log(age);//最终的结果是字符串的类型



    //案例1:
//    var age = parseInt(prompt("请您输入年龄"));
//    //判断
//    if (age >= 18) {
//      console.log("可以看电影了,嘎嘎...");
//    } else {
//      console.log("看什么看,回家写作业去");
//    }

    //练习1:找到两个数字中的最大值
    var num1=10;
    var num2=20;
    if(num1>num2){
      console.log(num1);
    }else{
      console.log(num2);
    }

    //练习2:判断这个数字是奇数还是偶数

    var number=parseInt(prompt("请输入一个数字"));
    if(number%2==0){
      console.log("偶数");
    }else{
      console.log("奇数");
    }



  </script>

 

 

5:分支语句之三元运算符

 <script>

    //获取两个数字中的最大值
    //if-else语句
    //    var num1 = 10;
    //    var num2 = 100;
    //    if (num1 > num2) {
    //      console.log(num1);
    //    } else {
    //      console.log(num2);
    //    }

    //两个分支,最终的结果是两个分支中的一个,像这种情况可以使用三元表达式

    /*
     * 三元表达式
     * 运算符号:  ?  :
     *
     * 语法:
     *  var 变量=表达式1?表达式2:表达式3;
     *  执行过程:
     *  表达式1的结果是true还是false,如果是true则执行表达式2,然后把结果给变量
     *  如果表达式1的结果是false,则执行表达式3,把结果给变量
     *
     *
     *
     * */

    //两个数字中的最大值
    var x = 10;
    var y = 20;
    var result1 = x > y ? x : y;
    console.log(result1);

    //显示成年还是未成年
    var age = 10;
    var result2 = age >= 18 ? "成年了" : "未成年";
    console.log(result2);

    //总结:大多数情况,使用if-else的语句都可以用三元表达式的方式来表示


  </script>

 

 

6:if和else if语句

 <script>

    //if语句只有一个分支
    //if-else语句有两个分支,最终执行一个分支
    //if-else if-else if-else if-else if..........else---多分支,最终也是执行一个

    /*
     *
     * if-else if语句...
     *
     * 语法:
     * if(表达式1){
     *   代码1
     * }else if(表达式2){
     *   代码2
     * }else if(表达式3){
     *   代码3
     * }else{
     *   代码4
     * }
     *
     * else if---这种结构可以写多个,具体多少个看需求,
     * else--结构是可以不用写的,具体也是看需求
     *
     *
     * 执行过程:
     * 先判断表达式1的结果,
     * 如果为true则执行代码1
     * 如果为false,则判断表达式2
     * 如果表达式2为true则执行代码2
     * 如果为false,则判断表达式3
     * 如果表达式3为true则执行代码3
     * 否则执行代码4
     *
     *
     * */

    /*
     * 例子: 成绩的结果是在90到100(包含)之间则 显示A级
     *  如果成绩是在80到90(包含)之间,则显示B级
     *  如果成绩是在70到80(包含)之间,则显示C级
     *  如果成绩是在60(包含)到70(包含)之间,则显示D级
     *  如果成绩在0到60(不包含)之间,则显示E级
     *
     *
     *
     * */

    //实现代码
    var score = Number(prompt("请您输入成绩"));//有bug
    if (!isNaN(score)) {//如果为true就说明 不是数字
      if (score > 90 && score <= 100) {
        console.log("A级");
      } else if (score > 80) {
        console.log("B级");
      } else if (score > 70) {
        console.log("C级");
      } else if (score >= 60) {
        console.log("D级");
      } else {
        console.log("E级");
      }
    } else {
      console.log("您输入有误");
    }

    //练习:判断一个年份是不是闰年
    //定义变量存储一个年份
    var year = 2017;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
      console.log("闰年");
    } else {
      console.log("平年");
    }

  </script>

 

 

7:switch-case语句

<script>

    /*
     * switch-case语句---分支语句---多分支语句
     * 语法:
     * switch(表达式){
     *  case 值1:代码1;break;
     *  case 值2:代码2;break;
     *  case 值3:代码3;break;
     *  case 值4:代码4;break;
     *  ...多个case
     *  default:代码5;
     *
     * }
     *
     * 注意问题:
     * default后面的break是可以省略的
     * default也可以省略
     *
     * switch-case 语句中和case后面的值比较的时候使用的是严格的模式
     * break是可以省略
     *
     *
     * 执行过程:
     * 获取表达式的值,和值1比较,如果一样,则执行代码1,遇到break则跳出整个的语句,后面代码不执行
     * 如果表达式的值和值1不一样,则和值2比较,如果相同则执行代码2,遇到break则跳出
     * 否则和值3比较,相同则执行代码3,遇到break,跳出,否则和值4比较,相同则执行代码4,遇到break则跳出,否则直接执行代码5
     *
     *
     *
     *
     *
     *
     * */

    //例子:获取一个人的成绩的级别,如果是A级则显示90到100直接的分数
    /*
     * 如果是B级则显示80到90分
     * 如果是C级则显示70到80之间分数
     //     * 如果是D级则显示60到70分之间
     //     * 否则显示0到59之间
     //     * */
    //    var jiBie = "E";
    //    switch (jiBie) {
    //      case "A":
    //        console.log("90到100之间");
    //        break;
    //      case "B":
    //        console.log("80到90之间");
    //        break;
    //      case "C":
    //        console.log("70到80之间");
    //        break;
    //      case "D":
    //        console.log("60到70之间");
    //        break;
    //      default :
    //        console.log("0到59之间");
    //    }


    //注意问题

//    var num = "10";//字符串
//   // console.log("10"===10);//true还是false
//    switch (num) {
//      case 10:
//        console.log("数字的10");
//        break;
//      case "10":
//        console.log("字符串的10");
//        break;
//    }


    //根据月份显示对应的天数
    //1,3,5,7,8,10,12 ---31天
    //2----28天
    //4,6,9,11----30
//    var month=parseInt(prompt("请输入月份"));
//    switch (month){
//      case 1:console.log("31天");break;
//      case 2:console.log("28天");break;
//      case 3:console.log("31天");break;
//      case 4:console.log("30天");break;
//      case 5:console.log("31天");break;
//      case 6:console.log("30天");break;
//      case 7:console.log("31天");break;
//      case 8:console.log("31天");break;
//      case 9:console.log("30天");break;
//      case 10:console.log("31天");break;
//      case 11:console.log("30天");break;
//      case 12:console.log("31天");break;
//
//    }



//
//    var month=parseInt(prompt("请输入月份"));
//    switch (month){
//      case 1:
//      case 3:
//      case 5:
//      case 7:
//      case 8:
//      case 10:
//      case 12:console.log("31天");break;
//      case 4:
//      case 6:
//      case 9:
//      case 11:console.log("30天");break;
//      case 2:console.log("28天");break;
//    }


    //练习:根据数字显示对应的星期
//    var num=parseInt(prompt("请输入一个星期的数字"));
//    switch (num){
//      case 1:console.log("星期一");break;
//      case 2:console.log("星期二");break;
//      case 3:console.log("星期三");break;
//      case 4:console.log("星期四");break;
//      case 5:console.log("星期五");break;
//      case 6:console.log("星期六");break;
//      case 7:console.log("星期日");break;
//      default:console.log("输入错误");
//    }


  </script>

 

 

8:while循环

 <script>
    //循环:一件事不停的或者是重复的做
    //循环要有结束的条件,循环还应该有计数器(记录循环的次数的)

    //while循环
    /*
    * while循环语法:
    *
    * 计数器
    * var 变量=0;
    * while(循环的条件){
    *   循环体;
    *   计数器++;
    *
    * }
    *
    * 执行过程:
    * 先判断条件是否成立,(条件的结果是true还是false),如果是false,那么循环的代码(while的大括号中的代码都不执行),如果是true,那么先执行循环体,然后执行计数器,然后,直接去--->循环的条件,再次判断是否成立,成立则继续执行循环体,否则跳出循环,执行完循环体之后,计数器加1,然后再去循环的条件,判断,成立则循环,否则跳出循环
    *
    * var i=0;
    * while(i<20){
    * 循环体
    * i++;
    * }
    *
    *
    *
    * */

    //请输出10次:哈哈,我又变帅了
//    var i=0;//计数器
//    while(i<10){
//      console.log("哈哈,我又变帅了"+(i+1));
//      i++;//记录次数
//    }


//    var i=0;//计数器
//    while(i<100){
//      console.log("哈哈,我又变帅了"+(i+1));
//      i++;//记录次数
//    }


    //练习:计算1-100之间所有数字的和

    var sum=0;//存储最终的和
    var i=1;//计数器
    while(i<=100){
      //sum=sum+i;//不停的计算数字的和
      sum+=i;
      i++;
    }
    console.log("和为:"+sum);


//    var sum=0;//存储最终的和
//    var i=0;//计数器
//    while(i<=5){
//      //sum=sum+i;//不停的计算数字的和
//      sum+=i;
//      i++;
//    }
//    console.log("和为:"+sum);







  </script>

 

 

9:do-while循环

 <script>

    /*
     *
     * do-while循环
     *
     * 语法:
     *
     * do{
     *     循环体
     * }while(条件);
     *
     * 执行过程:
     * 先执行一次循环体,然后判断条件是否成立,不成立,则跳出循环,成立则执行循环体,然后再判断条件是否成立,成立则继续循环,否则跳出.....
     *
     * */


    //例子:
    //输出:哈哈,我又变帅了..10次

    //    var i=0;//计数器
    //    do{
    //      console.log("哈哈,我又变帅了");
    //      i++;
    //    }while(i<10);

    //例子:问用户:您觉得我帅吗?提示用户请输入y/n ,如果n就一直问,我帅不帅,如果用户输入的y,则结束,并提示用户,您真有眼光


    //    do {
    //      //把用户输入的结果存储到result变量中
    //      var result = prompt("您觉得我帅吗?y/n");
    //    } while (result != "y");
    //    console.log("您真有眼光");


    //练习:求100以内所有3的倍数的和

    //    var i = 1;
    //    var sum = 0;
    //    while (i <= 100) {
    //      if (i % 3 == 0) {
    //        sum += i;
    //      }
    //      i++;
    //    }
    //    console.log(sum);//1683

    var i = 1;
    var sum = 0;
    do {
      if (i % 3 == 0) {
        sum += i;
      }
      i++;
    } while (i <= 100);
    console.log(sum);


  </script>

 

 

<script>

    /*
     * for循环
     *
     * 语法:
     * for(表达式1;表达式2;表达式3){
     *   循环体;
     * }
     *
     * 执行过程:
     * 先执行一次表达式1,然后判断表达式2;如果不成立则直接跳出循环
     * 如果表达式2成立,执行循环体的代码,结束后,跳到表达式3执行,然后跳到表达式2,判断表达式2是否成立,不成立,则跳出循环
     * 如果表达式2成立,则执行循环体,然后再跳到表达式3,再跳到表达式2,判断是否成立,一直如此
     *
     * for(var i=0;i<10;i++){
     *
     * }
     *
     *
     * */


    //例子:打印10次,哈哈,我又变帅了
    for (var i = 0; i < 10; i++) {
      console.log("日照香炉生紫烟,一对情侣在林间.远看身影如神仙,近看竟然是于千");
    }

    //求1-100之间所有数字的和

    var sum = 0;
    for (var i = 1; i <= 100; i++) {
      sum += i;
    }
    console.log("和为:" + sum);


    //    for (var i = 0; i < 10; i++) {
    //      console.log("小杨好帅");
    //    }

  </script>

 

11:for循环案例

  <script>

    //画星星


    //控制行数的---正方形的
    for (var i = 0; i <= 5; i++) {
      //控制每一行有几个星星
      for (var j = 0; j <= 5; j++) {
        document.write("");
      }
      document.write("<br/>");
    }

    //
    //    for(var j=0;j<=2;j++){
    //      document.write("★");
    //    }

    //三角形的---五角星----随着行数的增加,每一行都会比上一行多一个五角星
    for (var i = 0; i <= 5; i++) {
      //控制每一行有几个星星
      for (var j = 0; j <= i; j++) {
        document.write("");
      }
      document.write("<br/>");
    }


  </script>

 

12:调试

 

 

 

 

posted on 2019-09-29 11:13  风zk  阅读(325)  评论(0编辑  收藏  举报

导航