if+switch+for应用以及假设法的使用

程序的三大流程控制

1.顺序结构:从上朝下执行的代码就是顺序
2.选择结构:根据不同的情况,执行对应代码
3.循环结构:重复做一件事情

一、选择结构之if语句(常用于范围判断)
单分支 if
双分支 if …else…
多分支 if …else if…else if…else…

1.单分支
if(表达式){
执行语句;
}
满足表达式的条件就执行,不满足就不执行任何操作,继续执行后面的代码

注意:
1.if后面的()不能省略。
2.无论执行语句是一条还是
多条,一对{ }都不能省略
2.双分支
if(表达式){
执行语句1;
}else{
执行语句2;
}
二选一执行语句

例如👇

var grade = Math.round(Math.random()*100);//0-100的随机数
console.log(grade);
if(grade >= 60){
document.write(grade+"分,及格");
}else{
document.write(grade+"分,不及格");
}
document.write("<h3>判断完毕</h3>");

三(元)目运算符,条件运算符,三元条件运算符
1.简单的双分支判断(语句只能执行一条)
2.判断赋值,先判断再赋值

语法结构:
表达式1? 表达式2:表达式3
先求解表达式1(判断是否成立),如果成立则求解表达式2,否则求解表达式3
示例:求两个数的最大数👇

var a = Math.round(Math.random() * 100);
var b = Math.round(Math.random() * 100);
var max=(a>=b ? a : b);

3.多分支
if(表达式1){
执行语句1;
}else if(表达式2){
执行语句2;
}else if(表达式3){
执行语句3;
}else{
执行语句4;
}

<script>

    // 选择结构的嵌套  => 条件依赖 (在满足特定条件的情况下,进行二次判断)
    // 一般嵌套不超过三层(规范),该超还要超

    // var grade = Math.round(Math.random() * 100);
    var grade = 59;
    // debugger;

    if (grade >= 0 && grade <= 100) {
        if (grade >= 90) {  // 90-100
            if (grade == 100) {
                document.write(grade + "分,666");
            } else { // 90 - 99
                document.write(grade + "分,优秀");
            }
        } else if (grade >= 80) {   //  grade >= 80 && grade < 90
            document.write(grade + "分,良好");
        } else if (grade >= 70) {
            document.write(grade + "分,一般");
        } else if (grade >= 60) {
            document.write(grade + "分,危险");
        } else {  // 0-59
            if (grade == 59) {
                document.write(grade + "分,我感觉可以抢救下?");
            } else {
                document.write(grade + "分,不及格?");
            }
        }
    } else {
        alert("请输入0-100的数值");
    }



</script>

二、选择结构之多分支-switch语句(常用于数值判断)
switch(表达式){
case 常量1:语句1;break;
case 常量2:语句2;break;
case 常量3:语句3;break;

case 常量n:语句n;break;
default:语句;break;
}
switch中的表达式 一般是一个变量;
switch中的表达式 和 case中的常量 依次做全等(===)比较, 如果全等则执行对应的语句,遇到break跳出当前switch结构,否则继续向下比较,以此类推,都不满足就执行default 中语句;
break的作用是跳出当前的switch结构,如果没有break 会继续执行后续的执行语句,而不进行判断;
switch穿透特性;

 // 做数值判断
    var week = 1 + Math.round(Math.random() * 6);    // 1-7
    debugger;
    console.log(week); // 4
    switch (week) {  // 根据switch中的变量,列举出所有可能出现的情况 
        case 1: document.write("星期一,学习了JS数据类型"); break;
        case 2: document.write("星期二,学习了JS运算符"); break;
        case 3: document.write("星期三,学习了选择结构"); break;
        case 4: document.write("星期四,学习了循环结构"); break;
        case 5: document.write("星期五,学习了函数"); break;
        case 6: document.write("星期六,自习,学习使我快乐"); break;
        case 7: document.write("星期天,休息,休息为了更好的学习"); break;
        default:
            document.write("出现了未知错误,谁也不能阻挡我学习");
            break;
    }
//switch穿透特性
  var week = 1 + Math.round(Math.random() * 6);    // 1-7
    debugger;
    console.log(week); //  3
    switch (week) {  // 根据switch中的变量,列举出所有可能出现的情况 
        case 1:
        case 2:
        case 3:
        case 4:
        case 5: document.write("星期" + week + ",学习<br>"); break;
        case 6: document.write("星期" + week + ",自习<br>"); break;
        case 7: document.write("星期" + week + ",休息<br>"); break;
        default:
            document.write("出现了未知错误,谁也不能阻挡我学习");
            break;
    }

选择结构总结👇
1.if后面的()不能省略,()后面不要加分号
2.if分支中即使一句话也要把{}写上
3.if嵌套不要超过三层
4.Switch语句里把default分支一定要写上,防止在以后的维护中产生歧义
5.把执行概率更大(正常情况)放在前面(if,case)
6.if else 和 switch:
if else 一般来表示两个分支或者嵌套比较少的分支,如果分支多的话,用switch。


循环结构
while循环
do…while循环
for循环

循环结构的三要素👇:1.初始值(起始位置)2.循环条件3.自增、自减
初始值
while (表达式) {
循环语句(循环体);
}
while循环👇
先判断条件,再执行循环体

方法1:

//40个* 每10个一行
var i=1;
while(i<=40){
    document.write("*");
    if(i%10==0){
        document.write("<br>");
    }
    i++;
}

方法2:10个*号,一个换行,打印4次(循环嵌套)

//外层循环 走一次,内层循环走一轮
//外层循环 控制循环的总次数(总层数)外层架构
//内层循环 每层打印的内容(10个*号加一个换行)
var i=1;
while(i<=7){//外层循环
    var j=1;
    while(j<=10){//内层循环
        //1-10循环,11跳出
        document.write("*");
        j++;
    }
    document.write("<br>");
    i++;
}

do while循环👇
先执行循环体再判断

var i = 1;
do{
document.write(“i” + “<br>”);
i++;
}while(false);

for循环👇

for(var i=1;i<=10;i++){
    document.write(i+"<br>")
}

菱形案例👇

var n = 5;
    var mid = Math.floor(n / 2);

    for (var i = -mid; i <= mid; i++) {  // -4   4
        // 打印空格
        for (var j = 1; j <= Math.abs(i); j++) {
            document.write("&emsp;");
        }

        // 打印 *
        for (var k = 1; k <= n - 2 * Math.abs(i); k++) {
            document.write("锋");
        }

        // 打印空格
        for (var j = 1; j <= Math.abs(i); j++) {
            document.write("&emsp;");
        }


        document.write("<br>");
    }

循环结构中的关键字:
continue
break

1.continue
注意:
continue跳过本次进入下次循环,也就是continue后的语句不执行
continue语句只能用在循环里。
对于 while 和 do-while 循环,continue 语句执行之后的动作是条件判断👇;对于 for 循环,随后的动作是变量更新(自增自减)👇。

var i=0;
while(i<=99){
    i++;
    if(i%2==1){
       continue; 
    }
    document.write(i+"<br>");
}
for(var i=1;i<=100;i++){
    if(i%2==1){
        continue;
    }
    document.write(i+"<br>");
}


2.break

break在switch表示跳出当前的选择结构,在循环结构中表示跳出当前的循环结构。

循环结构注意点👇:
选择for还是选择while
一般情况下,已知循环次数时,用for,否则用while。

2.如何造死循环:while(true){ …… }

3.循环嵌套: 长循环在内层,短循环在外层,效率高,影响效率的主要体现:两个循环之间的切换,切换次数越少,效率越高。

for (col = 0; col < 5; col++) //5列
    {
        for (row = 0; row < 100; row++) //100行。每一列里面循环执行一百次
        {
            …………
        }
    }


    for (row = 0; row < 100; row++) //100行
    {
        for (col = 0; col < 5; col++) //每1行里执行5次列
        {
            …………
        }
    }

假设法:

先立一个假设(flag),然后尝试从对立面推翻它 => 有两个状态的切换 => 得到想要的结果

假设不存在(false), 然后尝试从对立面推翻它 (证明 存在true) => 找到一个满足条件的数 (简单)
假设存在(true), 然后尝试从对立面推翻它 (证明 不存在) => 全都不满足条件(1 2 3 … 100 全都不满足) 可以写 但是没有必要 (麻烦)

 var flag = false;//假设在1000以内不存在同时被2,3,5整除的数
    for (var i = 1; i <= 1000; i++) {
        if (i % 2 == 0 && i % 3 == 0 && i % 5 == 0) {
            flag = true;//如果找到一个能同时被整除的数,推翻假设
            break;//找到一个 后面就没必要看了,跳出循环
        }
    }
    if (flag) {//flag==true
        document.write("存在能同时2,3,5被整除的数:" + i);
    } else {
        document.write("不存在能同时2,3,5被整除的数");
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值