You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/tw/2-js-basics/3-making-decisions/assignment.md

5.1 KiB

做決策:學生成績處理器

學習目標

在此作業中,你將透過建立一個處理不同評分系統中學生成績的程式,來練習本課程的決策概念。你將使用 if...else 陳述式、比較運算子及邏輯運算子,判斷哪些學生通過課程。

挑戰說明

你在一所剛與另一所學校合併的學校工作。現在你需要處理來自兩種完全不同評分系統的學生成績,並判斷哪些學生合格。這是練習條件邏輯的絕佳機會!

了解評分系統

第一種評分系統(數字)

  • 成績以 1-5 的數字給分
  • 及格成績3 及以上3、4 或 5
  • 不及格成績:低於 31 或 2

第二種評分系統(字母級分)

  • 成績以字母呈現:AA-BB-CC-
  • 及格成績AA-BB-CC-(所有列出的字母分數都及格)
  • 注意:此系統沒有包含像 DF 這樣的不及格字母

你的任務

給定以下陣列 allStudents,代表所有學生及其成績,請建立一個新陣列 studentsWhoPass,包含依各自評分系統判定及格的學生。

let allStudents = [
  'A',    // 字母等級 - 通過
  'B-',   // 字母等級 - 通過
  1,      // 數字等級 - 不及格
  4,      // 數字等級 - 通過
  5,      // 數字等級 - 通過
  2       // 數字等級 - 不及格
];

let studentsWhoPass = [];

分步驟方法

  1. 設置迴圈,遍歷 allStudents 陣列中的每個成績
  2. 檢查成績類型(是數字還是字串?)
  3. 套用適用的評分規則
    • 對數字:判斷成績是否 >= 3
    • 對字串:檢查是否為有效的及格字母級分
  4. 將及格的成績 加入 studentsWhoPass 陣列

有用的程式技巧

使用本課程介紹的 JavaScript 概念:

  • typeof 運算子typeof grade === 'number' 用來判斷是否為數字成績
  • 比較運算子>= 用來比較數字成績
  • 邏輯運算子|| 用來檢查多個字母級分條件
  • if...else 陳述式:用於處理不同的評分系統
  • 陣列方法.push() 用來將及格成績加入新陣列

預期輸出

當你執行程式後,studentsWhoPass 應該包含:['A', 'B-', 4, 5]

這些成績為何及格:

  • 'A''B-' 是有效的字母級分(此系統所有字母成績均為及格)
  • 45 是數字成績且 >= 3
  • 12 因為小於 3 而不及格

測試你的解決方案

使用不同場景測試你的程式:

// 使用不同的分数组合進行測試
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
let testGrades2 = [5, 'A', 2, 'C-', 4];

// 你的解法應該能適用於任何有效的分数组合

進階挑戰

完成基本作業後,嘗試以下擴展:

  1. 增加驗證:檢查不合法成績(像是負數或無效字母)
  2. 計算統計:計算有多少學生及格與不及格
  3. 成績轉換將所有成績轉換為單一數字系統A=5B=4C=3等等

評分規準

標準 優異 (4) 熟練 (3) 進展中 (2) 初階 (1)
功能性 程式能正確分辨兩種系統的所有及格成績 程式運作正常,少數邊緣狀況問題 程式部分正常,但有邏輯錯誤 程式錯誤嚴重或無法執行
程式架構 程式碼乾淨且組織良好,有適當的 if...else 邏輯 結構良好,使用適當的條件語句 架構尚可,有組織性問題 架構差,邏輯難以理解
概念運用 有效使用比較運算子、邏輯運算子與條件陳述式 利用課程概念良好,少許缺漏 部分使用課程概念,缺少重要元素 使用課程概念有限
問題解決能力 清楚理解問題並提出優雅解決方案 概念清楚,邏輯穩健 解題能力尚可,但部分混亂 方法不明確,無法展現理解

提交指引

  1. 充分測試你的程式,以提供的範例為主
  2. 加入註解說明邏輯,尤其是條件判斷部分
  3. 確認輸出與預期結果吻合:['A', 'B-', 4, 5]
  4. 考慮邊緣狀況,如空陣列或非預期資料型態

💡 專業小提示:先從簡單開始!先讓基本功能順利運作,再加入更複雜的特性。記得,目標是練習本課程的決策邏輯與工具。


免責聲明
本文件係使用 AI 翻譯服務 Co-op Translator 所翻譯而成。雖然我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始語言文件應視為權威來源。對於重要資訊,建議採用專業人工翻譯。因使用本翻譯而產生之任何誤解或錯誤詮釋,我們概不負責。