|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "ffe366b2d1f037b99fbadbe1dc81083d",
|
|
|
"translation_date": "2025-10-22T22:35:48+00:00",
|
|
|
"source_file": "2-js-basics/3-making-decisions/assignment.md",
|
|
|
"language_code": "mo"
|
|
|
}
|
|
|
-->
|
|
|
# 做決策:學生成績處理器
|
|
|
|
|
|
## 學習目標
|
|
|
|
|
|
在這次作業中,您將通過建立一個處理不同評分系統的學生成績的程式,來練習本課的決策概念。您將使用 `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) 進行翻譯。儘管我們致力於提供準確的翻譯,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 |