Day4:分支结构、循环结构

1、方法参数:方法内处理逻辑必须的数据,参数仅限方法内部使用!方法外无法访问方法的参数变量,参数的名称自定义!
2、返回值:调用者是否需要获得方法的执行结果
3、调用:方法名调用
4、分支结构:
(1)if...else...   1件事  必须二选一
(2)if...else if...[else...]多件事   多选一执行
上节回顾

一、switch-case

1、定义:多条分支根据条件判断,选择执行

2、语法:

switch(表达式){

  case 表达式1://表达式的值===表达式1的值

    代码段1;

  case 表达式n:

    代码段n;

  default://表达式的值和所有case表达式都不相等

    默认代码段;

}

3、运行机制:如果找到与表达式值匹配的case,不但执行当前case下的代码,而且之后所有代码都被触发

4、break:退出当前结构,多个条件共用同一套执行逻辑时,不加break

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            var score=80;
            switch(true){
                case score>=90:
                    console.log('A');
                    break;
                case score>=80:
                    console.log('B');
                    break;
                case score>=60:
                    console.log('C');
                    break;
                default:
                    console.log('D');
            }
        </script>
    </head>
    <body>
    </body>
</html>
切记:switch(score)不能写成这样,如果写成这样,它的解释如下:
85传过来,那么score>=80返回true,然后它再和switch里面的score作比较,true===85肯定返回false
View Code
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            var choice=parseInt(prompt('请选择服务种类:'));
            switch(choice){
                case 1:
                    concole.log('查询余额');
                    break;
                case 2:
                    console.log('取款中');
                    break;
                case 3:
                    console.log('转账中');
                    break;
                case 4:
                    console.log('退出');
            }
        </script>
    </head>
    <body>
    </body>
</html>
View Code

二、循环结构

1、定义:程序反复执行同一套代码段,遇到结束条件,结束执行,没有循环结束条件,永远循环执行的叫死循环

2、循环三要素:

(1)循环条件:循环继续执行的条件,一旦循环条件不满足,循环立刻退出!

(2)循环变量:用于循环条件中做判断的变量,循环变量都会向循环退出的趋势变化(不满足循环条件的趋势)

(3)循环体:每次循环要做的事情

3、while:当满足条件时,就继续做...事

语法:

var 循环变量;

while(循环条件){

  循环体;

  迭代变化循环变量;

}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //小火车转3圈,自动停止
            //循环条件:圈数<3
            //循环变量:圈数 每转一圈+1
            //循环体:输出“转一圈”
            var round=0;
            while(round<3){
                if(round==2){
                    console.log('退出来');
                    break;
                }
                console.log("转一圈");
                round++;
            }
            console.log("停车");
        </script>
    </head>
    <body>
    </body>
</html>
View Code

break:退出当前循环

while中何时用break:循环条件不满足之前,希望强行退出循环

如何使用break:可以放在任何需要退出循环的位置

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //程序存个数,然后用户输入数字作对比,然后提示猜大或者猜小了,直到猜对了
            /**var n=10;
            while(true){
                var input=parseInt(prompt('你猜:'));
                if(input>n){
                    alert('猜大了');
                }else if(input<n){
                    alert('猜小了');
                }else{
                    alert('正确');
                    break;
                }
            }**/
            var n=10;
            var input=-1;
            while(input!=10){
                input=prompt('你猜:');
                if(input=='exit'){
                    break;
                }else{
                    input=parseInt(input);
                }
                if(input>n){
                    alert('猜大了');
                }else if(input<n){
                    alert('猜小了');
                }else{
                    alert('正确');
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>
小游戏

随机数:Math.random():0<=n<1  任意min-max之间取随机数  公式:parseInt(Math.random()*(max-min+1)+min)

4、do-while:先执行一次循环体,再判断是否继续!如果循环条件不满足,循环体至少可以执行1次!

(1)语法:

var 循环变量;

do{

  循环体;

  迭代变化循环变量;

}while(循环条件);

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            var n=10;
            do{
                var input=prompt('你猜:');
                if(input=='exit'){
                    break;
                }else{
                    input=parseInt(input);
                }
                if(input>n){
                    alert('猜大了');
                }else if(input<n){
                    alert('猜小了');
                }else{
                    alert('正确');
                }
            }while(input!=n)
        </script>
    </head>
    <body>
    </body>
</html>
示例代码

注:变量声明提前:相同作用域内,var...无论出现在什么位置,解析时,优先提取到js开始位置声明!

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            var n=10;
            //var input;
            while(input!=10){
                var input=prompt('你猜:');//var直接加到这里
                if(input=='exit'){
                    break;
                }else{
                    input=parseInt(input);
                }
                if(input>n){
                    alert('猜大了');
                }else if(input<n){
                    alert('猜小了');
                }else{
                    alert('正确');
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>
如下代码:

5、while     vs      do-while

(1)如果第一次条件就可能不成,也想执行一次,必须用do while

(2)如果第一次条件一定满足,它们等效

6、for循环:完全等效于while循环

(1)循环变量变化规律固定,循环次数已知/固定使用for

(2)语法:

for(声明并初始化循环变量;循环条件;迭代循环变量){

  循环体;

}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //计算1-100的累加值
            /**var sum=0;
            for(var i=1;i<=100;i++){
                sum+=i;
            }**/
            //等效于
            for(var i=1,sum=0;i<=100;sum+=i++);//for 里面定义的也是全局变量,只要见不到function就不会有新的作用域
            console.log(sum);
        </script>
    </head>
</html>
例子
for( ; ; ){
    console.log('我要读书');        
}
特殊例子(死循环)

7、continue:跳过本轮循环,继续执行下一轮循环

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            var bao=4;
            for(var box=1;box<=9;box++){
                if(box==bao){
                    continue;
                }
                console.log('跳到'+box);
            }
        </script>
    </head>
</html>
View Code
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //输出5个2000年以后的闰年年份
            //循环条件:得到闰年的个数<5
            //循环变量:得到的闰年个数,0开始,每次+1
            //循环体:判断当前年份,是否闰年,如果是,就输出,并且+1
            var count=0;
            var year=2001;
            while(count<5){
                if((year%4==0&&year%100!=0)||year%400==0){
                    console.log(year);
                    count++;
                }
                year++;
            }
        </script>
    </head>
</html>
2000年以后的5个闰年
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //输出5个2000年以后的闰年年份
            //循环条件:得到闰年的个数<5
            //循环变量:得到的闰年个数,0开始,每次+1
            //循环体:判断当前年份,是否闰年,如果是,就输出,并且+1
            var count=0;
            var year=2001;
            while(count<5){
                if((year%4==0&&year%100!=0)||year%400==0){
                    console.log(year);
                    count++;
                }
                if(count>0)
                    year+=4;
                else
                    year++;
            }
        </script>
    </head>
</html>
闰年例子优化

三、循环嵌套

1、打印9*9乘法表

遇到复杂问题,先用简单办法做最简单的事情,然后从简单办法中找规律

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            /**var str="";
            for(var i=1;i<=9;i++){
                for(j=1;j<=i;j++){
                    str+=j+'*'+i+'='+i*j+' ';
                }
                str+="<br/>";
            }
            document.write(str);**/
            
            for(var i=1;i<=9;i++){
                var str="";
                for(j=1;j<=i;j++){
                    str+=j+'*'+i+'='+i*j+' ';
                }
                console.log(str);
            }
            
        </script>
    </head>
</html>
View Code

四、课后练习

1、输入成绩,计算平均分

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //循环条件:input!="-1"
            //循环变量:input
            //循环体:
            //总分+=input;
            //人数++
            //平均=总分/总人数
            var sum=0;
            var count=0;
            do{
                var input=parseInt(prompt("输入成绩:"));
                if(input==-1){
                    break;
                }else{
                    sum+=input;
                    count++;
                }
            }while(true);
            console.log((sum/count).toFixed(2));
        </script>
    </head>
</html>
View Code

2、水仙花数(自恋数)找出100-999之间的所有水仙花数

例如:153=1*1*1+5*5*5+3*3*3

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            //循环条件:num<=999
            //循环变量:num 从100开始,每次+1
            /**循环体
                取出百位
                取出十位
                取出个位
                判断num是否等于水仙花数公式
                    输出num
            **/
            for(var num=100;num<=999;num++){
                var hd=parseInt(num/100);
                var ten=parseInt((num%100)/10);
                var one=num%10;
                if(num==hd*hd*hd+ten*ten*ten+one*one*one)
                    console.log(num);
            }
        </script>
    </head>
</html>
View Code
posted @ 2017-07-10 14:48  licy_python  阅读(207)  评论(0编辑  收藏  举报