js 5

1、分支结构

         1、else...if结构

                   1、语法

                            if(条件1){

                                     语句块1;

                            }else if(条件2){

                                     语句块2;

                            }... ...else{

                                    

                            }

 

         2、switch...case结构

                   1、场合

                            等值判断

                   2、语法

                            switch(变量/表达式){

                                     case 值1:

                                               语句块1;

                                               break;

                                     case 值2:

                                               语句块2;

                                               break;

                                     ... ...

                                     default:

                                               语句块n;

                                               break;

                            }

                   3、不加break

                            从匹配的case块开始,一直向下执行,直到结束或碰到break位置

                   4、直落形式

                            两个case块之间没有任何内容

                            switch(变量){

                                     case 1:

                                     case 2:

                                     case 3:

                                               console.log("匹配到1,2,3,会执行相同的操作");

                                               break;

                            }

2、循环

         什么是循环:

                   一遍又一遍重复的执行相同或相似的代码

         循环的特点:

                   1、循环条件

                   2、循环操作

 

         1、while

                   1、语法

                            while(条件){

                                     操作

                            }

                   2、循环的流程控制语句

                            1、continue

                                     继续,终止本次循环,继续执行下次循环

                            2、break

                                     破坏,结束整个循环

 

                            while(true){

                                     switch(num){

                                               case 1:

                                                        ...

                                                        break;

                                               case 2:

                                                        ...

                                                        break;

                                               case 3:

                                                        ...

                                                        continue;

                                     }

                            }

                            以上写法是正确的,continue 主要作用在 while循环中,而不是switch结构

 

                            switch(num){

                                               case 1:

                                                        ...

                                                        break;

                                               case 2:

                                                        ...

                                                        break;

                                               case 3:

                                                        ...

                                                        continue;

                                     }

                            以上写法是错误的,continue是不能作用在switch结构中的。

         2、do...while

                   1、语法

                            do{

                                     操作

                            }while(条件);

 

                            执行流程:

                                     1、先执行 循环操作

                                     2、判断循环条件,如果条件为false,则退出循环,如果条件为true,则继续执行循环操作

                   2、while 循环 与 do...while循环的区别

                            1、while

                                     先判断条件,后执行操作

                                     最少一次都不执行

                            2、do...while

                                     先执行操作,后判断条件

                                     最少会执行一次循环操作

 

         猴子吃桃问题

                   猴子摘下了若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天,又将剩下的桃子吃了一半,又多吃一个。以后每天都吃了前一天剩下的一半零一个。到第10天的时候,发现只剩下一个桃子。求:第一天共摘下多少个桃子。

 

                   假设:

                            第一天 共摘了 total 个桃子

                            每天剩下的桃子 left 个(默认是1)

 

                            天数      left   公式(推前一天)

                            10天        1    left(1)=total/2-1 ==> total=(left+1)*2

      09天        4           total=(left+1)*2

      08天       10    total=(left+1)*2; left=total;

                            07天       22

                            06天       46

                            05天       94

                            04天       190

                            03天       382

                            02天       766

                            01天       1534

==========================================

1、循环结构-for

         1、while

                   在控制台上输出1-100之间所有的数字

                   //1、声明条件:从1开始

                   var i=1;

                   //2、循环结构-循环条件

                   while(i<=100){//条件

                            console.log(i);//3、操作

                            i++;//4、更新循环变量

                   }

         2、for语法

                   for(表达式1;表达式2;表达式3){

                            //循环操作

                   }

                   表达式1:声明条件

                   表达式2:循环条件判断

                   表达式3:更新循环变量

 

                   for循环执行流程:

                   1、计算表达式1的值

                   2、计算表达式2的值(boolean),如果为true,则执行循环体,如果为false,则退出循环

                   3、执行循环体

                   4、计算表达式3的值

                   5、计算表达式2... ...

 

         3、for语句三个表达式的特殊用法

                   1、表达式1 允许为空

                            for(;表达式2;表达式3){

                                    

                            }

 

                            表达式1;

                            for(;表达式2;表达式3){

                                    

                            }

                   2、表达式2 允许为空

                            如果省略的话,则为死循环

                            最好在循环内部补充退出条件

                   3、表达式3 允许为空

                            死循环

                   4、三个表达式都允许为空

                            for(;;){

                                     console.log("这是死循环");

                            }

                   5、表达式1 和 表达式3 的内容可以多样化

                            允许编写多个表达式

         4、循环嵌套

                   for/while/do.while 多允许相互嵌套或转化

                   循环嵌套:在一个循环中,又出现另一个循环

                            for(var i=1;i<=10;i++){

                                     for(var j=1;j<=10;j++){

                                               console.log(j);

                                     }

                            }

         5、while/do..while/for 的异同点

                   1、for 和 while

                            共同点:

                                     先判断条件,再执行循环体

                            使用场合:

                                     1、for     

                                               优先使用在确定循环次数的场合下

                                     2、while

                                               优先使用在不确定循环次数的场合下

                   2、do...while

                            先执行循环操作,再判断循环条件

                            最少 执行1次循环

                            场合:

                                     1、优先适用于不确定循环次数的场合下

                                     2、先执行循环体,根据循环体内的操作决定循环条件时,使用do...while

 

         练习:

                   要求用户 弹框中分别输入 年,月,日

                   求:该日 是星期?

                   前提:1900.1.1 是星期一

 

                                               求:2016.10.28

                                               1900.1.1 - 2015.12.31 : x

                                               2016.1.1 - 2016.9.30 :y

                                               2016.10.28 距 1900.1.1 :x+y+28

 

 

 

         练习:

                   1、控制台上 打印输出 *

                   2、控制台上 打印输出 *****

                   3、控制台上 打印输出

                            *****

                            *****

                            *****

                            *****

                            *****

                   4、控制台上 打印输出 以下内容

                            *        第1行 1个星星

                            **       第2行 2个星星

                            ***      第3行 3个星星

                            ****     第4行 4个星星

                            *****    第5行 5个星星

                   5、打印99乘法表

                            1*1=1

                            1*2=2 2*2=4

                            1*3=3 2*3=6 3*3=9

                            1*4=4 2*4=8 3*4=12 4*4=16

                            .....

                            1*9=9 2*9=18 3*9=27 4*9=36

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         3、练习

                   1、打印输出 1-1000之间所有的奇数

                   2、计算 1-1000 所有偶数的和

 

 

                   1*1=1

                   1*2=2 2*2=4

                   1*3=3 2*3=6 3*3=9

                   ...

 

                   3、素数

                            从3 开始

                            3 是素数

                            4 不是素数

                            5 是素数

                            6 不是素数

                            7 是素数

                            8 不是素数

                            9 不是

                            10 不是

                            11 是

 

                     10:2-9

 

                            35:2-34/2

                            36: 2-36/2

 

                            36/18 = 2

                            36/19 = 1.0000

                            36/36 = 1

 

                   有一对兔子,从出生的第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总和是多少

 

                   1,1,2,3,5,8,... ...

 

                   1,1,2,3,5,8,13,21,34,55,89

                   斐波那契数列

                   var n1=1,n2=1;

 

                   n1 = n1 + n2;

                   n2 = n1 + n2;

                   console.log(n1);

                   console.log(n2);

 

                   n1 = n1 + n2;

                   n2 = n1 + n2;

                   console.log(n1);

                   console.log(n2);

         求:数列中,某位上的数字时多少

          假定 f(10); 想求 第10个月 兔子的总量

                       f(20); 想求 第20个月 兔子的总量

 

                                     f(5); 想求 第5个月 兔子的总量

                                     f(4); 想求 第4个月 兔子的总量

                                     f(3); 想求 第3个月 兔子的总量

                                     f(2); 想求 第2个月 兔子的总量 = 1

                                     f(1); 想求 第1个月 兔子的总量 = 1

 

                                     f(3)=f(2)+f(1)

                                     f(4)=f(3)+f(2)

                                     f(5)=f(4)+f(3)

                                     ...

                                     f(100)=f(99)+f(98)

        

 

posted @ 2017-07-18 11:33  Hale.Proh  阅读(164)  评论(0编辑  收藏  举报