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/mo/2-js-basics/3-making-decisions/assignment.md

118 lines
5.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
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
- **不及格分數**:低於 31 或 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=5B=4C=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) 進行翻譯。儘管我們致力於提供準確的翻譯,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。