程序的流程控制就是指程序运行时,个别指令运行或求值的顺序。复杂的程序时由若干
个基本结构组成,每个基本结构可以包含一条或者若干条语句。程序中语句的执行顺序
称为程序结构。
1、顺序结构 -> 程序语句是按照书写顺序执行
2、选择结构 -> 某个条件来决定是否执行
3、循环结构 -> 程序中某些语句要反复执行多次
Demo1:约女孩子看电影的流程
//>>使用编程语言定义两个人 通信方式 以及 电影票 var boy = "小强"; //男主角 var girl = ["小红","小花“,"小莉“,"小兰"]; //备选女主角,现在从以前都一个变成多个了 //定义一个变量来保存女孩是否有空的状态,如果有空为true,没有空为false var flag = false;//默认没空,做最坏的打算 var conectType = "微信"; var film = "智取威虎山"; for(var i=0;i<5;i++){ //在这里循环去问女孩是否有空 document.write(boy+":"+girl[i]+"今晚有空吗?我们去看"+film); } //假如询问完成以后小兰有空,那么返回一个状态 true flag = true; //根据这个状态来执行后面的操作 if(flag){//这里表示已经约到人来 document.write("马上打开app开始订票"); //>>订票,约定见面时间 document.write("选择"+girl+"附近电影院,6:30场次,付款"); docment.write(boy+":"+"订了你家附近xx电影院6:30的票"); docment.write(girl+":"+boy+"那我们6:00电影院门口见面"); //>>取票、进场、看电影 document.write("取票、进场、看电影"); //>>电影结束 各自回家 document.write('电影结束 各自回家'); }else{//这里表示没有约到人到情况 document.write('回家睡大觉'); }
总结:从上面到例子可以看出,编程就是去考虑多种情况,采取不同到方案应对可能出现到情况,最终实现我们需求到一个过程。流程控制是程序到基础,必须掌握
Demo2:判断成绩是否合格(if,if...else)
var num = prompt("请输入分数:");//获得分数 if(num<60){//如果小于60 执行里面的代码 console.log("同学,你考了"+num+“分,没有及格哦”); }else{//如果大于等于60 执行里面的语句 console.log("同学,恭喜你,考了"+num+“分,成功晋级”); }
总结:if...else 语句和if语句很像,只是多了一种应对方案,if语句里面,如果条件不成立,那么就什么都不用做,而if...else语句多了一个功能,那就是如果if条件里面的条件不满足,那么就执行else后面括号中的内容。所以,用if...else语句,要么执行if后面括号的代码,要么执行else后面括号中的代码,二选一
Demo3:判断季节(switch)
/** * 输入1--4分别再对应输出 春夏秋冬 ,其他的输出 “未知季节” */ var num = prompt('请输入:'); switch (num){ case 1: //当用户输入1的时候,执行这里的代码 document.write('春'); break; case 2: //当用户输入2的时候,执行这里的代码 document.write('夏'); break; case 3: //当用户输入3的时候,执行这里的代码 document.write('秋'); break; case 4: //当用户输入4的时候执行这里的代码 document.write('冬'); break; default: //以上情况都不满足的时候,执行这里的代码 document.write('未知季节'); break; }
总结:到这里选择结构的几大语句已经学完,可以大体分为两类if语句和switch语句,if语句又叫作条件分支语句,知道某个条件的时候使用if语句,主要的应用场景就是做条件的判断,switch语句主要是表示在某些状态下做出具体反应,又叫作状态分支语句,当不知道条件,但是知道用户输入的状态的时候,用switch状态分支会更好。以上语句的写法都是固定的,必须严格按照语法规则来写
Demo4:循环输出1-100.(for循环)
//语法结构: for(初始化表达式;条件表达式;条件改变表达式){ 循环体; }//输出1-100 for(var i=1;i<100;i++){ document.write(i+""); }
注意:如果条件表达式永远为真的情况下,程序就会一直循环,造成死循环,把浏览器卡死
Demo5:一张纸的厚度是0.01毫米,对折多少次后能超过1米?(while循环)
var paper = 0.01;//纸的初始厚度 var count = 0;//统计折纸次数 while(paper<1000){ paper = paper*2; count++ } console.log(count);
总结:while和for都可以用来做循环,那么它们各自的应用场景是什么呢?什么情况下用for,什么情况下用while?从上面的代码我们可以知道,使用for循环的话得先知道要循环多少次,这个次数是已经知道了的,而while的特点就是只要条件表达式为真就循环,否则就退出,所以,我们得出一个常用的结论,当知道循环次数的时候,用for循环要方便一些,当不知道次数,但是知道条件表达式什么时候为false,这个时候可以用while更方便一些。
Demo6: 模拟考试(do...while)
var i = 0; do{ i++; var score = parseInt(Math.random()*101); console.log("第"+i+"次考试成绩为:"+score+"
"); }while(score<60); console.log('考试通过!
');
总结:do while循环和while循环的用法差不多,只是do while循环比较粗暴,一上来不管三七二十一就先执行一次,执行完成了以后再去问问条件表达式是否满足条件,所以说do while循环执行循环体的次数是大于等于1次,而while循环比较温柔,先上来问问条件表达式可不可以执行,所以执行循环体的次数是大于等于0次。
Demo7: break,continue语句
//break;表示跳出当前循环 /** * 当i=5时,跳出循环 */ for(var i = 0;i<10;i++){ if(i==5){ break;//结束当前for循环,也就是说循环i只加到5就被结束掉了 } console.log(i); } /** *当i=5时,跳出本次循环 */ for(var i=0;i<10;i++){ if(i==5){ continue;//结束本次循环,继续下次循环 } console.log(i); }
总结:continue和break都是用来跳出循环的,只是跳出的位置不同,break直接把循环结束掉了,而continue只是结束掉了一次循环,后面的循环还要继续,有时候去判断数组里面是否有某个值的时候,需要去把数组元素循环查询出来做对比,如果对比上了就不用继续查询后面的元素了,这种情况需要用到break,当要过滤掉某次循环掉话,可以用条件语句加上continue实现.