# 做決策:學生成績處理器 ## 學習目標 在這次作業中,您將通過建立一個處理不同評分系統的學生成績的程式,來練習本課的決策概念。您將使用 `if...else` 條件語句、比較運算符和邏輯運算符來判斷哪些學生通過了課程。 ## 挑戰 您所在的學校最近與另一所機構合併。現在,您需要處理來自兩個完全不同評分系統的學生成績,並判斷哪些學生通過了課程。這是一個練習條件邏輯的絕佳機會! ### 理解評分系統 #### 第一評分系統(數字) - 成績以 1-5 的數字表示 - **及格分數**:3 及以上(3、4 或 5) - **不及格分數**:低於 3(1 或 2) #### 第二評分系統(字母成績) - 成績使用字母表示:`A`、`A-`、`B`、`B-`、`C`、`C-` - **及格成績**:`A`、`A-`、`B`、`B-`、`C`、`C-`(所有列出的成績均為及格) - **注意**:此系統不包括不及格成績,例如 `D` 或 `F` ### 您的任務 給定以下陣列 `allStudents`,該陣列表示所有學生及其成績,構建一個新的陣列 `studentsWhoPass`,其中包含所有根據其各自評分系統通過的學生。 ```javascript let allStudents = [ 'A', // Letter grade - passing 'B-', // Letter grade - passing 1, // Numeric grade - failing 4, // Numeric grade - passing 5, // Numeric grade - passing 2 // Numeric grade - failing ]; let studentsWhoPass = []; ``` ### 步驟指引 1. **設置迴圈**,遍歷 `allStudents` 陣列中的每個成績 2. **檢查成績類型**(是數字還是字串?) 3. **應用相應的評分系統規則**: - 對於數字:檢查成績是否 >= 3 - 對於字串:檢查是否是有效的及格字母成績之一 4. **將及格成績**加入到 `studentsWhoPass` 陣列中 ### 有用的程式技巧 使用本課中的以下 JavaScript 概念: - **typeof 運算符**:`typeof grade === 'number'` 用於檢查是否為數字成績 - **比較運算符**:`>=` 用於比較數字成績 - **邏輯運算符**:`||` 用於檢查多個字母成績條件 - **if...else 條件語句**:用於處理不同的評分系統 - **陣列方法**:`.push()` 用於將及格成績加入到新陣列中 ### 預期輸出 當您執行程式時,`studentsWhoPass` 應包含:`['A', 'B-', 4, 5]` **為什麼這些成績及格:** - `'A'` 和 `'B-'` 是有效的字母成績(此系統中的所有字母成績均為及格) - `4` 和 `5` 是數字成績 >= 3 - `1` 和 `2` 不及格,因為它們是數字成績 < 3 ## 測試您的解決方案 使用不同的場景測試您的程式: ```javascript // Test with different grade combinations let testGrades1 = ['A-', 3, 'C', 1, 'B']; let testGrades2 = [5, 'A', 2, 'C-', 4]; // Your solution should work with any combination of valid grades ``` ## 額外挑戰 完成基本作業後,嘗試以下擴展: 1. **添加驗證**:檢查無效成績(例如負數或無效字母) 2. **統計數據**:計算通過和不及格的學生數量 3. **成績轉換**:將所有成績轉換為單一的數字系統(A=5,B=4,C=3,等等) ## 評分標準 | 評分標準 | 優秀 (4) | 熟練 (3) | 發展中 (2) | 初學 (1) | |----------|----------|----------|----------|----------| | **功能性** | 程式正確識別兩個系統中的所有及格成績 | 程式運行正常,但有輕微問題或邊界情況 | 程式部分運行,但存在邏輯錯誤 | 程式有重大錯誤或無法運行 | | **程式結構** | 代碼清晰、組織良好,具有適當的 if...else 邏輯 | 結構良好,具有適當的條件語句 | 結構尚可,但存在一些組織問題 | 結構差,邏輯難以理解 | | **概念使用** | 有效使用比較運算符、邏輯運算符和條件語句 | 良好使用課程概念,但有輕微不足 | 部分使用課程概念,但缺少關鍵元素 | 使用課程概念有限 | | **問題解決** | 清楚理解問題並採用優雅的解決方案 | 良好的問題解決方法,邏輯清晰 | 問題解決能力尚可,但有些混亂 | 方法不清晰,未能展示對問題的理解 | ## 提交指南 1. **徹底測試您的程式**,使用提供的範例 2. **添加註解**,解釋您的邏輯,特別是條件語句部分 3. **確認輸出** 與預期結果匹配:`['A', 'B-', 4, 5]` 4. **考慮邊界情況**,例如空陣列或意外的數據類型 > 💡 **小提示**:從簡單開始!先讓基本功能正常運行,然後再添加更複雜的功能。記住,目標是使用您在本課中學到的工具來練習決策邏輯。 --- **免責聲明**: 本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們致力於提供準確的翻譯,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。