js day2循环与判断

大多数编程语言中最为常用的一个语句就是 if 语句。以下是 if 语句的语法:

if (条件) { 语句块1 } else { 语句块2 }

其中的条件可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。

ECMAScript 会自动调用 Boolean() 转换函数将这个表达式的结果转换为一个布尔值。如果对        条件求值的结果是 true,则执行语句1,如果对条件求值的结果是 false , 则执行语句2 。        而且这两个语句既可以是一行代码,也可以是一个代码块 (以一对花括号括起来的多行代码) 。

if语句的三种格式:

  1. if( 条件 ){ 语句1 }
  2. if ( 条件 ) { 语句1 } else { 语句2 }

3、if ( 条件 ) { 语句1 } else if ( 条件 ){ 语句2 }...else{ 语句 }  (else可以省略)

  • 程序的多分支结构 switch语句\break语句

switch 语句与 if 语句的关系最为密切,而且也是在其他语言中普遍使用的一种流程控制语句。

switch (值) {

case 值: 语句块;    break;   注意case向下的穿透力

......

default: 语句块

}

switch 语句中的每一种情形(case)的含义是: 如果表达式等于这个值(value) ,则执行此case后面的语句 。而 break 关键字会导致代码执行流跳出 switch 语句。如果省略 break 关键字,就会导致执行完当前 case 后,继续执行下一个 case。最后的 default 关键字则用于在表达式不匹配前面任何一种情形的时候,执行此代码(可以省略)。

  • 循环的概念和意义

循环语句:就是程序路径的一个回路,可以让一部分代码重复执行。

  • while和do-while循环的使用
    1. while( 限制条件 ){  重复执行的语句块  }

while 语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前, 就会对限制条件       求值。因此,循环体内的代码有可能永远不会被执行。

    1. do {  重复执行的语句块 }while( 限制条件 );

do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试限制条件。

换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。

  • for循环的使用

for 语句也是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的       代码的能力。

  • 跳出循环

break 语句会立即退出整个循环,强制继续执行循环后面的其它语句。

continue 语句代表立即退出循环, 但退出的是当前循环继续执行下一次循环。

  • 死循环的理解。
    1. 无法靠自身的控制终止的循环即死循环
  • 浏览器的 Debug工具使用
    1. 了解循环的执行过程(断点),以及调试代码的基本能力
    2. 代码调试的方式
  • 强化练习
  1. 开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者

       体重是否合适(身高:cm)

  1. 案例:输入分数,判定成绩等级(if和switch两种写法)(5个等级0-100)
  2. 输入月份,显示当月的天数
  3. 打印100以内 7的倍数
  4. 求出1-1/2+1/3-1/4…..1/100的和
  5. 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
  6. 利用星型字符(*)输出如下图形:三角形和梯形
  7. 打印100–200之间所有能被3和7整除的数
  8. 求100-999之间的水仙花数。
  9. 打印九九乘法表。
  • 综合应用
  1. 篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度是0.1米。
  2. 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4粒,每一个格内都比前一小格加一倍,棋盘上放的所有芝麻的重量。
  3. 输出100-200之间所有的素数。
  4. 求1+2!+3!+...+20!的值。
  5. 输入一个日期,判断这个日期是这一年的第几天

 

/*alert('start');//window.alert 浏览器内部的实现,具有阻止后面代码执行的特性

                     document.write('<div>1</div>');             

                     document.write('<div>2</div>');

                     document.write('<div>3</div>');

                     alert('end');*/

                    

                     //1.顺序结构:代码从上往下,从左往右,从内往外 执行的。

                     /*document.write('<div>1</div>');                 

                     document.write('<div>2</div>');

                     document.write('<div>3</div>');*/

                    

                     //2.分支语句--选择

                     //var num=prompt('请输入一个数字:');

                     //判断数字是奇数还是偶数。--选择

                     //如果if  条件num%2==0  偶数

                     //否则else  奇数

                    

                     //分支语句的基本结构

                     //{}:写入一条或者多条语句。

                    

                     /*if(条件?){满足条件执行的语句块}

                     else{ 不满足条件执行的语句块 }*/

                    

                     /*if(num%2==0){

                            alert('你输入的数字是:' + num);

                            alert('它是偶数');

                     }

                    

                     else{

                            alert('你输入的数字是:' + num);

                            alert('它是奇数');

                     }*/

                    

                    

                     //3.循环语句:反复执行满足条件代码。

                     //循环的基本控制结构

                     /*while(限制条件){

                            满足限制条件反复执行循环体(代码块).

                     }*/

                    

                     /*document.write('<ul>');

                     document.write('<li>1</li>');

                     document.write('<li>2</li>');

                     document.write('<li>3</li>');

                     document.write('<li>4</li>');

                     document.write('<li>5</li>');

                     document.write('<li>6</li>');

                     document.write('<li>7</li>');

                     document.write('<li>8</li>');

                     document.write('<li>9</li>');

                     document.write('<li>10</li>');

                     document.write('</ul>');*/

                    

                     /*document.write('<ul>');

                     var num=1;

                     while(num<=10000){

                            document.write('<li>'+num+'</li>');

                            num++;

                     }

                     document.write('</ul>');*/

//if语句三种结构

                     //if语句的条件自动调用Boolean(),将条件的结果转换成布尔值。

                     //数字非0即真,字符串非空即真   null undefined都是false

                     //核心:最大的可能留给if。满足if  那么else可以不执行,同时else可以省略。

                     //if嵌套比多条件性能要好一些。

                    

                    

                    

                     //1.单分支--1种情况

                     //单分支的基本结构

                     //if(条件){满足条件执行的语句块}

                    

                     /*if('饿了困了'){

                            alert('喝红牛');

                     }*/

                    

                     //如果输入的是数字,输出。

                     /*var num=prompt('请输入一个数字:');

                     if(!isNaN(num)){//是数字。

                            alert(num);

                     }*/

                    

                    

                     //2.双分支--两种情况

                     //if(条件?){满足条件执行的语句块} else{ 不满足条件执行的语句块 }

                     /*var num=prompt('请输入一个数字:');

                     if(!isNaN(num)){//是数字。

                            alert(num);

                     }

                     else{//不是数字

                            alert('输入有问题');

                     }*/

                    

                     //核心:最大的可能留给if。满足if  那么else可以不执行。

                     /*var num=prompt('请输入一个数字:');

                     if(!isNaN(num)){//是数字。

                            alert(num);

                     }

                     else{//不是数字

                            fdklasfjdsalkfjladskf

                     }*/

                    

                     //3.多分支--多种情况

                     //if(条件1){满足条件1执行的语句块} else if(条件2){满足条件2执行的语句块}....else{其它情况执行的语句块}

                     //多条件else可以省略。

                     /*var num=prompt('请输入一个数字:');//检测当前的数字>0  <0  =0

                     if(num>0){

                            alert('正数');

                     }

                    

                     else if(num<0){

                            alert('负数')

                     }

                    

                     else if(num==0){

                            alert(0)

                     }

                    

                     else{//可以省略

                            alert('输入错误');

                     }*/

//1.if的嵌套使用

                     //输入一个五位数,分别输出各十百千万位。

                    

                     /*var num=prompt('请输入一个五位数:');

                     //判断是否是数字

                     if(!isNaN(num)){//是数字

                           

                            //是数字,继续判断是否有五位。

                            if(num>=10000 && num<=99999){

                                  

                                   var gw=num%10;

                                   var sw=parseInt(num%100/10);

                                   var bw=parseInt(num%1000/100);

                                   var qw=parseInt(num%10000/1000);

                                   var ww=parseInt(num/10000);

                                   document.write('我输入的数字是:'+num+'<br/>');

                                   document.write('个位:'+gw+'<br/>');

                                   document.write('十位:'+sw+'<br/>');

                                   document.write('百位:'+bw+'<br/>');

                                   document.write('千位:'+qw+'<br/>');

                                   document.write('万位:'+ww);

                                  

                                  

                            }else{

                                   alert('你输入的数字不符合规则');

                            }

                           

                           

                     }else{

                            alert('输入的不是一个数字');

                     }*/

                    

                    

                     //2.多条件语句和if的嵌套

                     //案例:输入分数,判定成绩等级(5个)

                     var score=prompt('请输入分数(0-100):');

                     if(!isNaN(score))

                     {

                           

                            if(score>=0 && score<=100)

                             {//不允许这样写: 0<=score<=100

                                  

                                   //通过多条件判断等级。

                                   if(score==100){

                                          alert('天才');

                                   }

                                  

                                   else if(score<100 && score>=90){

                                          alert('优秀');

                                   }

                                  

                                   else if(score<90 && score>=80){

                                          alert('良好');

                                   }

                                  

                                   else if(score<80 && score>=70){

                                          alert('一般');

                                   }

                                  

                                   else if(score<70 && score>=60){

                                          alert('及格');

                                   }

                                  

                                   else{

                                          alert('不及格');

                                   }

                                  

                                  

                            }

                                else{

                                   alert('你输入的不是一个合法的分数');

                                }

                           

                           

                     }

                     else{

                            alert('你输入的不是数字');

                     }

                    

                     /*if(!isNaN(score) && score>=0 && score<=100){

                     }

                     else{

                            alert('你输入的有问题');

                     }*/

//1.开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者

              //体重是否合适(身高:cm)

             

              //思路:输入身高和体重,返回体重是否符合(偏胖/标准/偏瘦)

             

              //(身高-108)*2=体重+10

              //(身高-108)*2=体重-10

             

              var height=prompt('请输入身高cm:');

              var weight=prompt('请输入体重:');

             

              var maxweight=(height-108)*2+10;//标准里面的最大值

              var minweight=(height-108)*2-10;//标准里面的最小值

             

              //判断条件

              if(weight>maxweight){

                     alert('偏胖');

              }

             

              else if(weight<minweight){

                     alert('偏瘦');

              }

             

              else if(weight>=minweight && weight<=maxweight){

                     alert('标准');

              }

              else{

                     alert('输入有误');

              }

//switch:适合多分支的语句

              //基本结构

              //value:具体值,switch的value和case后面的value进行恒等比较。

              //如果switch的value和case后面的value完全恒等,执行case后面的语句块。

              //break:跳出分支语句,switch结束了。

              //default:代表其他情况,相当于上面的每一个case都不符合,走default后面的语句块。default可以省略。

              /*switch(value){

                     case value:  语句块;  break;

                     case value:  语句块;  break;

                     case value:  语句块;  break;

                     case value:  语句块;  break;

                     case value:  语句块;  break;

                     case value:  语句块;  break;

                     default: 语句块;

              }*/

              /*var num=prompt('请输入一个数字0-6:');

              switch(Number(num)){

                     case 0:  alert('星期日');  break;

                     case 1:  alert('星期一');  break;

                     case 2:  alert('星期二');  break;

                     case 3:  alert('星期三');  break;

                     case 4:  alert('星期四');  break;

                     case 5:  alert('星期五');  break;

                     case 6:  alert('星期六');  break;

                     default: alert('输入有误!');

              }*/

             

              /*var num=prompt('请输入一个数字0-6:');

              switch(Number(num)){

                     case 0:  alert('星期日');  break;

                     case 1:  alert('星期一'); 

                     case 2:  alert('星期二'); 

                     case 3:  alert('星期三');  break;

                     case 4:  alert('星期四');  break;

                     case 5:  alert('星期五');  break;

                     case 6:  alert('星期六');  break;

                     default: alert('输入有误!');

              }*/

              //case具有穿透力。因为没有break

             

             

              //案例:输入分数,判定成绩等级(switch)(5个等级0-100)

              /*var score=prompt('请输入一个分数:');

              switch(true){

                     case score==100:  alert('天才'); break;

                     case score<100 && score>=90: alert('优秀'); break;

                     case score<90 && score>=80:  alert('良好'); break;

                     case score<80 && score>=70:  alert('一般'); break;

                     case score<70 && score>=60:  alert('及格'); break;

                     case score<60 && score>=0:   alert('不及格'); break;

                     default:alert('输入有误!');

              }*/

             

              //利用switch后面的值和case后面表达式的值进行恒等的匹配。

             

             

              //if和switch有哪些区别

              //if适用於单分支,双分支,多分支,switch 多分支

              //switch匹配的是恒等关系。  if条件是布尔值

              //三目运算符:(?:)很多情况下取代if...else

                     //基本控制结构。

                     //条件表达式? 成立执行的代码 : 不成立执行的代码

                     //var num=prompt('请输入一个数字:');

                     /*if(!isNaN(num)){//是数字。

                            alert(num);

                     }

                     else{//不是数字

                            alert('输入有问题');

                     }*/

                    

                     //!isNaN(num)?alert(num):alert('输入有问题');

                     //3.输入月份,显示当月的天数

                     //大月31:1,3,5,7,8,10,12

                 //小月30:4,6,9,11

                     //平月:2   闰年:29  非闰年:28

                    

                     //闰年:能被4整除同时不能被100整除或者能被400整除。

                    

                     var year=prompt('请输入一个四位的年份:');

                     var month=prompt('请输入一个月份:');

                    

                     switch(Number(month)){

                            case 1:

                            case 3:

                            case 5:

                            case 7:

                            case 8:

                            case 10:

                            case 12: alert(31); break;

                            case 4:

                            case 6:

                            case 9:

                            case 11: alert(30); break;

                           

                            case 2:

                                          if(year%4==0&&year%100!=0||year%400==0){//闰年

                                                 alert(29);

                                          }else{//非闰年

                                                 alert(28);

                                          }

                                          break;

                           

                            default:alert('输入有误!');

                     }

                     <script type="text/javascript">

                     /*var str='<table border=1><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr></table>';

                     document.write(str);*/

                     //循环语句:就是程序路径的一个回路,可以让一部分代码重复执行。

              /*    var str='<ul>';

                     str+='<li>111111111</li><li>222222222</li>';

                     str+='</ul>';//字符串的拼接(叠加) str=str+'</ul>';

                    

                     alert(str);

                     document.write(str);*/

                    

                     //1.while循环。

                     //循环的基本控制结构

                     /*while(条件){

                            满足条件反复执行的循环体

                     }*/

                    

                     var num=1;

                     var str='<ul>';

                     while(num<=100){

                            str+='<li>'+num+'</li>';

                            num++;

                     }

                     str+='</ul>';*///字符串的拼接(叠加) str=str+'</ul>';

                     //alert(num);//11

                     //alert(str);

                     //document.write(str);

                    

                    

              </script>

<script type="text/javascript">

                     //死循环

                     /*while(true){

                           

                     }

                     alert('hehe');*/

                    

                     //while循环的嵌套:外层循环一次,内层循环结束。

                     var num=1;

                     while(num<=10){

                            document.write('我是外部循环输出的内容'+num+'<br/>');

                           

                                   var num1=1;

                                   while(num1<=10){

                                          document.write('&nbsp;&nbsp;&nbsp;&nbsp;我是内部循环输出的内容'+num1+'<br/>');

                                          num1++;

                                   }

                           

                           

                           

                            num++;

                     }

                    

              </script>

<script type="text/javascript">

              //sum=1+2+3+4+5+6+7+...100=5050

              /*var sum=0;//和

              var i=1;//i:累计的每一个数字。

              while(i<=100){

                     sum+=i;//sum=sum+i; 1.sum=0+1=1;   2.sum=1+2=3;  3.sum=3+3=6   sum每一次累加的结果

                     i++;

              }

              alert(sum);*/

             

             

              //8.打印100–200之间所有能被3和7整除的数

              /*var num=100;

              while(num<=200){

                     if(num%3==0 && num%7==0){

                            document.write(num+'<br>');

                     }

                     num++;

              }*/

              /*var str='<table>';

              var row=1;

              while(row<=9){

                     str+='<tr>';

                            var col=1;

                            while(col<=row){

                                   str+='<td>'+col+'x'+row+'='+col*row+'</td>';

                                   col++;

                            }

                     str+='</tr>';

                     row++;

              }

              str+='</table>';*/

              var str='<table>'

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

                     str+='<tr>'

                     for(var b=1;b<=a;b++){

                            str+='<td>'+'</td>'

                     }

                     str+='</tr>'

                    

              }

              str+='</table>'

              document.write(str);

 

              </script>

script type="text/javascript">

              //while 语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前, 就会对限制条件       求值。因此,循环体内的代码有可能永远不会被执行。

                     /*var num=5;

                     while(num<5){//前测试。

                            alert('ok');

                     }*/

                    

                    

                //do {  重复执行的语句块 }while( 限制条件 );

                //do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试限制条件。换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。

                     var num=5;

                     do{//循环体内的代码至少会被执行一次。

                            alert('ok');   

                     }while(num<5);

             

              </script>

<script type="text/javascript">

              //for循环:简单将for循环理解成while循环的简写。

              //for(1初始值;2限制条件;3累加累减){4满足条件执行的循环体}

              //执行循环:执行1-->执行2--执行4-->执行3->执行2-->执行4-->执行3->执行2-->执行4-->执行3...

             

             

              //sum=1+2+3+4+5+6+7+...100=5050

              /*var sum=0;//和

              var i=1;//i:累计的每一个数字。

              while(i<=100){

                     sum+=i;//sum=sum+i; 1.sum=0+1=1; 

 2.sum=1+2=3;  3.sum=3+3=6   sum每一次累加的结果

                     i++;

              }

              alert(sum);*/

             

              /*for(var sum=0,i=1;i<=100;i++){

                     sum+=i;

              }

              alert(sum);*/

             

              //8.打印100–200之间所有能被3和7整除的数

              /*var num=100;

              while(num<=200){

                     if(num%3==0 && num%7==0){

                            document.write(num+'<br>');

                     }

                     num++;

              }*/

              /*for(var num=100;num<=200;num++){

                     if(num%3==0 && num%7==0){

                            document.write(num+'<br>');

                     }

              }*/

             

             

             

              /*var str='<table>';

              var row=1;

              while(row<=9){

                     str+='<tr>';

                            var col=1;

                            while(col<=row){

                                   str+='<td>'+col+'x'+row+'='+col*row+'</td>';

                                   col++;

                            }

                     str+='</tr>';

                     row++;

              }

              str+='</table>';

              document.write(str);*/

             

              /*var str='<table>';

              for(var row=1;row<=9;row++){

                     str+='<tr>';

                            for(var col=1;col<=row;col++){

                                   str+='<td>'+col+'x'+row+'='+col*row+'</td>';

                            }

                     str+='</tr>';

              }

              str+='</table>';

              document.write(str);*/

             

             

              //for循环的死循环

              for(var i=0;i<=0;){}//死循环

              for(var i=0;;){}//死循环

              for(;;){}//死循环

             

             

             

              for(var i=0;i<=0;i++){}//ok

              alert('hehe');

              </script>

//break 语句会立即退出整个循环,强制继续执行循环后面的其它语句。

              //continue 语句代表立即退出循环,    但退出的是当前循环继续执行下一次循环

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

                            if(i==5){

                                   //break;//退出整个循环

                                   continue;//退出的是当前循环继续执行下一次循环

                            }

                            document.write(i+'<br/>');

                     }*/

                    

                    

                     /*for(var i=1,j=1; i<=5; i++,j++){//一个条件限定两个值

                            document.write(i);//1,2,3,4,5

                     }

                    

                     console.log(i);//6

                     console.log(j);//6*/

                     /*for(;;){}

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

                     alert(i);//11*/

<script type="text/javascript">

                     /*document.write('abc');

                     alert('hello');

                     document.write('def');*/

                    

                    

                     /*var str='<table>';

                     var row=1;

                     while(row<=9){

                            str+='<tr>';

                                   var col=1;

                                   while(col<=row){

                                          str+='<td>'+col+'x'+row+'='+col*row+'</td>';

                                          col++;

                                   }

                            str+='</tr>';

                            row++;

                     }

                     str+='</table>';

                     document.write(str);*/

                    

                    

                     //ReferenceError:引用错误,未找到某个变量或者引用。

                     //sytaxError:语法错误。写错了什么。

                    

                     //个人调错习惯。

                     //利用代码的执行顺序,中间添加输出,找出错误。

                     //alert或者console.log()

                    

                     /*document.write('第1行代码');

                     document.write('第2行代码');

                     document.write('第3行代码');

                     alert(1);

                     document.write('第4行代码');

                     document.write('第5行代码');

                     alert(2);

                     document.wrte('第6行代码');

                     document.write('第7行代码');

                     alert(3);

                     document.write('第8行代码');

                     document.write('第9行代码');

                     document.write('第10行代码');

                     document.write('第11行代码');*/

                    

                    

                     //断点调式:debugger或者控制面板sources 找到文件,通过代码前面的行号添加端点。

                     //for(var i=1,sum=0;i<=10;i++){

                            //debugger;

                            //sum+=i;

                     //}

                     //alert(sum);

                     //F8:每一次循环。

                     //F10:循环每一步执行的过程。利用右侧的watch监听每一步操作值的变化。

                    

                    

                     //打印出1000-2000年中所有的闰年,并以每行四个数的形式输出

                     /*for(var i=1000,times=0;i<=2000;i++){

                            if(i%4==0 && i%100!=0 || i%400==0){

                                   document.write(i+'&nbsp;&nbsp;&nbsp;&nbsp;');

                                   times++;

                                   if(times%4==0){

                                          document.write('<br>');

                                   }

                            }

                     }*/

                    

                    

                     //利用星型字符(*)输出如下图形:三角形和梯形

                    

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

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

                                   document.write('*');

                            }

                            document.write('<br>');

                     }*/

                    

                     //输出100-200之间所有的素数。 100/(2-99)    101/(2-100) 

                     //素数:只能被1和自身整除的数。

             

                     for(var i=100;i<=200;i++){

                           

                            var hehe=1;//随意的标记,满足标记是素数

                           

                            for(var j=2;j<i;j++){

                                  

                                   if(i%j==0){//不是素数。

                                          hehe=2;//只要满足条件,说明不是素数。标记被改变了。

                                          break;//终止循环。

                                   }

                                  

                            }

                           

                           

                            if(hehe==1){//值没有变化,不符合上面的判断,是素数。

                                   document.write(i+'<br />');

                            }

                           

                     }

                    

                    

                    

                    

                     //2*2*2=2^3

                     //Math数学下面的常见的静态方法。

                     //Math.pow(2,3);  求2的3次幂   2:底数    3:指数。

                     //alert(Math.pow(2,3));//8

                    

                     //var num=3.1465;

                     //数字对象下面:toFixed()方法:括号里面放置保留的小数的位数。

                     //alert(num.toFixed(2));//3.15  具有四舍五入功能。

                    

                    

                    

                     //var sum=1*2*3*4*5=120   5!

                     /*for(var i=1,sum=1;i<=5;i++){

                            sum*=i;

                     }

                     alert(sum);*/

 
   

 

 

 

两种debugger方式,一种在代码中设置debugger;然后运行程序;另一种,在运行程序,进去souce,对要调试的那行前面点击   </script>

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章