Accounting Principles (MGT1001-03 & MGT1001-04) Data Analytics 教學講義 Author:國立臺灣大學會計學系數位助教 杜昕 Mic Tu


範例檔案

Google Sheet Teaching Materials-Chapter 12 Examples


Table of Contents


12.1 For Loops

迴圈提供一個快速又簡潔的方法來重複地做某件事。以上一章最後的例子為例,可發現判斷是否pass的機制在每一個學生皆相同,但是在程式碼中卻出現了三次,此時便可以使用for迴圈將一樣的程式碼重複執行三次,for的語法為for ([初始表達式]; [條件式]; [遞增表達式]) {內容},當執行一個for迴圈時,會依序執行以下步驟:

  1. 執行初始表達式初始表達式通常會初始化迴圈計數器
  2. 評估條件式,如果評估出的值為true則會執行迴圈的內容,反之則會終止for迴圈
  3. 執行迴圈內容
  4. 如果有更新表達式的遞增表達式便執行
  5. 回到Step 2.,上述Step 2. ~ Step 4. 稱為一次迭代(Iteration)

上面的說明可能有點複雜,以下將上面的例子寫成迴圈說明之

// 原本的程式碼
function pass() {
  var score = [['A', 75], ['B', 85], ['C', 55]];
  if (score[0][1] >= 60) console.log(score[0][0] + ' Pass!'); // A Pass!
  else console.log(score[0][0] + ' Fail!');
  if (score[1][1] >= 60) console.log(score[1][0] + ' Pass!'); // B Pass!
  else console.log(score[1][0] + ' Fail!');
  if (score[2][1] >= 60) console.log(score[2][0] + ' Pass!');
  else console.log(score[2][0] + ' Fail!'); // C Fail!
}

// 使用迴圈的程式碼
function pass() {
  var score = [['A', 75], ['B', 85], ['C', 55]];
  for (var i = 0; i < score.length; i = i + 1) {
    if (score[i][1] >= 60) console.log(score[i][0] + ' Pass!'); // A Pass!
    else console.log(score[i][0] + ' Fail!');
  }
}

上述程式碼的初始表達式條件式遞增表達式內容如下:

  1. 初始表達式var i = 0:在條件式遞增表達式中,會判斷i的值決定迴圈是否進行內容,因此在初始表達式中,設立一個變數i = 0,以初始化迴圈計數器
  2. 條件式:如果評估出的值為true則會執行迴圈的內容,而這個迴圈會對每個同學一次,因此會根據score的長度決定是被執行的次數,因此條件式為i < score.length