JS流程控制

第4章 流程控制

程序的三種基本結構

順序結構: 從上到下,從左到右執行的順序,就叫做順序結構,程序默認就是由上到下順序執行的

分支結構:根據不同的情況,執行對應代碼

循環結構:重複做一件事情

4.1 分支結構

if語句

if (/* 條件表達式 */) {
  // 執行語句
}
if --- else 語句
if (/* 條件表達式 */) {
// 成立執行語句
} else {
  // 否則執行語句
}
    
 //舉例:
 //獲取兩個數字中的最大值
var num1=100;
var num2=20;
if(num1>num2){
    console.log(num1);
}else{
    console.log(num2);
}

// 判斷一個數是偶數還是奇數
var n = 10;
if(n % 2 == 0){
    console.log('偶數');
}else{
    console.log('奇數');
}

//判斷是否成年了
var age = parseInt(prompt("請您輸入年齡"));
if(age >= 18){
    console.log('恭喜您,您成年了!!');
}else{
    console.log('不好意思,您還未成年,快回家去寫作業');
}
if --- else if 語句
if (/* 條件1 */){
  // 成立執行語句
} else if (/* 條件2 */){
  // 成立執行語句
} else if (/* 條件3 */){
  // 成立執行語句
} else {
  // 最後默認執行語句
}
           
 //舉例:
    /*
    * 例子:
    * 獲取考試的分數,如果成績是在90(含)分以上的,則顯示級別:A
    * 如果成績是大於等於80的則:B
    * 如果成績是大於等於70的則:C
    * 如果成績是大於等於60的則:D
    * 如果成績是小於60的則:E
    *
    * */
    var score = parseInt(prompt("請輸入您的成績:(0-100之間)"));
    if (!isNaN(score) && score <= 100) {
        if (score >= 90) {
            console.log("您的成績爲A");
        } else if (score >= 80) {
            console.log("您的成績爲B");
        } else if (score >= 70) {
            console.log("您的成績爲C");
        } else if (score >= 60) {
            console.log("您的成績爲D");
        } else {
            console.log("您的成績爲E");
        }
    } else {
        console.log("您輸入的成績有誤!");
    }

案例 判斷一個年份是閏年還是平年


判斷一個年份是閏年還是平年
閏年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份
    var n = 2016;
    if(n % 4 == 0){
        if(n % 100 != 0){
            console.log('閏年');
        }else if(n % 400 == 0){
            console.log('閏年');
        }else{
            console.log('平年');
        }
    }else{
        console.log('平年');
    }
三元運算符
表達式1 ? 表達式2 : 表達式3
如果表達式1成立,則執行表達式2,否則執行表達式3
三元運算符是對if……else語句的一種簡化寫法


案例:

// 是否年滿18歲
var age = parseInt(prompt("請您輸入年齡"));
var s = age >= 18 ? '18歲了' : '未滿18歲';
console.log(s);
// 從兩個數中找最大值
var a1 = 110;
var a2 = 19;
var s = a1 > a2 ? a1 : a2;
console.log(s);
switch語句

語法格式:

   switch (表達式) {
        case 常量1:  
            語句;
            break;
        case 常量2:
            語句;
            break;
            
        case 常量n:
            語句;
            break;
        default:
            語句;
            break;
    }
/*
* 執行過程:
* 獲取表達式的值,和值1比較,相同則執行代碼1,遇到break跳出整個語句,結束
* 如果和值1不匹配,則和值2比較,相同則執行代碼2,遇到break跳出整個語句,結束
* 如果和值2不匹配,則和值3比較,相同則執行代碼3,遇到break跳出整個語句,結束
* 如果和值3不匹配,則和值4比較,相同則執行代碼4,遇到break跳出整個語句,結束
* 如果和之前的所有的值都不一樣,則直接執行代碼5,結束
*/
break可以省略,如果省略,代碼會繼續執行下一個case
switch 語句在比較值時使用的是全等操作符, 因此不會發生類型轉換(例如,字符串'10' 不等於數值 10

案例


/* *
* 判斷這個人的成績的級別:
* 如果是A,則提示,分數在90分以上
* 如果是B,則提示,分數在80分以上
* 如果是C,則提示,分數在70分以上
* 如果是D,則提示,分數在60分以上
* 否則提示,不及格
* */
varjiBie = "B";
switch (jiBie){
    case "A" : 
        console.log("分數在90分以上的");
        break;
    case "B" : 
        console.log("分數在80分以上的");
        break;
    case "C" : 
        console.log("分數在70分以上的");
        break;
    case "D" : 
        console.log("分數在60分以上的");
        break;
    default :
        console.log("不及格");
}

4.2 循環結構

在javascript中,循環語句有三種,while、do..while、for循環。

4.2.1 while語句

基本語法:


// 當循環條件爲true時,執行循環體,
// 當循環條件爲false時,結束循環。
while (循環條件) {
  //循環體
}

案例1:計算1-100之間所有數的和


// 初始化變量
var i = 1;
var sum = 0;
while (i <= 100) {   // 判斷條件
  sum += i;  // 循環體
  i++;  // 自增
}
console.log(sum);

案例2:打印100以內7的倍數


var i = 1;
while(i < 100){
    if(i % 7 == 0){
        console.log(i);
    }
    i++;
}

案例3:打印100以內所有偶數


var i = 1;
while(i <= 100){
    if(i % 2 == 0){
        console.log(i);
    }
    i++;
}

案例4:打印100以內所有偶數的和


var i = 1;
var s = 0;
while(i <= 100){
    if(i % 2 == 0){
        s = s + i;
    }
    i++;
}
console.log(s);

案例5:求賬號和密碼是否一致


  var userName = prompt("請您輸入賬號");
  var userPass = prompt("請您輸入密碼");
  while (userName != 'admin' || userPass != '123456') {
     userName = prompt("請您輸入賬號");
     userPass = prompt("請您輸入密碼");
    }
  alert("登錄成功!");

4.2.2 do...while語句

do..while循環 和 while循環 非常像,二者經常可以相互替代,

但是do..while的特點是不管條件成不成立,都會先執行一次。

執行過程 : 先執行一次循環體 , 判斷條件是否成立 , 不成立則跳出循環 , 成立則執行循環體 , 然後再判斷條件是否成立......


do {
  // 循環體;
} while (循環條件);

案例:計算1-100的和


// 初始化變量
var i = 0;
var sum = 1;
do {
  sum += i;//循環體
  i++;//自增
} while (i <= 100);//循環條件

4.2.3 for語句

while和do...while一般用來解決無法確認次數的循環。for循環一般在循環次數確定的時候比較方便

for循環語法:

// for循環的表達式之間用的是分號分隔的
for (初始化表達式1; 判斷表達式2; 自增表達式3) {
  // 循環體4
}

執行順序:1243 ---- 243 -----243(直到循環條件變成false)

  1. 初始化表達式

  2. 判斷表達式

  3. 自增表達式

  4. 循環體

//打印1-100之間所有數
for(var i=1;i<=100;i++){
    console.log(i);
}

//求1-100之間所有數的和
var s = 0;
for(var i = 0;i <= 100; i++){
    s += i;
}
console.log(s);

//求1-100之間所有偶數的和
var s = 0;
for(var i = 1;i <= 100; i++){
    if(i % 2 == 0){
        s += i;
    }
}
console.log(s);

//打印正方形
var start = '';
for (var i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    start += '* ';
  }
  start += '\n';
}
console.log(start);

//打印直角三角形
var start = '';
for (var i = 0; i < 10; i++) {
  for (var j = i; j < 10; j++) {
    start += '* ';
  }
  start += '\n';
}
console.log(start);

//打印9*9乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
  for (var j = i; j <=9; j++) {
    str += i + ' * ' + j + ' = ' + i * j + '\t';
  }
  str += '\n';
}
console.log(str);

表格版本的乘法口訣表
document.write(" <caption > 乘法口訣表 < /caption>"); 
document.write(" <table border = '1' cellpadding = '5' cellspacing = '0' > "); 
        for (var i = 1; i <=9; i++) {
        document.write("<tr>");
        for (var j = 1; j <= i; j++) {
        document.write("<td>");
        document.write(i +"*" + j + "=" + i * j);
        document.write("</td>");
        }
        document.write("</tr>");
    }
    document.write(" ");
    document.write("</table>");

4.2.4 continue和break

break:立即跳出整個循環,即循環結束,開始執行循環後面的內容(直接跳到大括號)

continue:立即跳出當前循環,繼續下一次循環(跳到i++的地方)

案例1:求1-100之間不能被7整除的整數的和(用continue)

var s = 0;
for(var i = 0; i < 100; i++){
    if(i % 7 == 0){
        continue;
    }
    s += i;
}
console.log(s);

案例2:求200-300之間所有的奇數的和(用continue)


var s = 0;
for(var i = 200; i <= 300; i++){
    if(i % 2 == 0){
        continue;
    }else{
        s+=i;
    }
}
console.log(s);

案例3:求200-300之間第一個能被7整數的數(break)


for(var i=200;i<=300;i++){
    if(i % 7 == 0){
        console.log(i);
        break;
    }
}


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