程序的流程控制就是指程序運行時,個別指令運行或求值的順序。複雜的程序時由若干
個基本結構組成,每個基本結構可以包含一條或者若干條語句。程序中語句的執行順序
稱爲程序結構。
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+"<br/>"); }
注意:如果條件表達式永遠爲真的情況下,程序就會一直循環,造成死循環,把瀏覽器卡死
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+"<br />"); }while(score<60); console.log('考試通過!<br />');
總結: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實現.