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

118 lines
7.5 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ffe366b2d1f037b99fbadbe1dc81083d",
"translation_date": "2025-10-24T13:29:05+00:00",
"source_file": "2-js-basics/3-making-decisions/assignment.md",
"language_code": "vi"
}
-->
# Xử lý quyết định: Bộ xử lý điểm số học sinh
## Mục tiêu học tập
Trong bài tập này, bạn sẽ thực hành các khái niệm về xử lý quyết định từ bài học bằng cách xây dựng một chương trình xử lý điểm số học sinh từ các hệ thống chấm điểm khác nhau. Bạn sẽ sử dụng các câu lệnh `if...else`, các toán tử so sánh và toán tử logic để xác định học sinh nào đạt yêu cầu trong các khóa học của họ.
## Thử thách
Bạn làm việc cho một trường học vừa sáp nhập với một tổ chức khác. Bây giờ bạn cần xử lý điểm số học sinh từ hai hệ thống chấm điểm hoàn toàn khác nhau và xác định học sinh nào đạt yêu cầu. Đây là cơ hội tuyệt vời để thực hành logic điều kiện!
### Hiểu hệ thống chấm điểm
#### Hệ thống chấm điểm thứ nhất (Số)
- Điểm được cho dưới dạng số từ 1-5
- **Điểm đạt yêu cầu**: 3 trở lên (3, 4 hoặc 5)
- **Điểm không đạt yêu cầu**: Dưới 3 (1 hoặc 2)
#### Hệ thống chấm điểm thứ hai (Điểm chữ)
- Điểm sử dụng chữ: `A`, `A-`, `B`, `B-`, `C`, `C-`
- **Điểm đạt yêu cầu**: `A`, `A-`, `B`, `B-`, `C`, `C-` (tất cả các điểm liệt kê đều đạt yêu cầu)
- **Lưu ý**: Hệ thống này không bao gồm các điểm không đạt yêu cầu như `D` hoặc `F`
### Nhiệm vụ của bạn
Dựa vào mảng `allStudents` dưới đây, đại diện cho tất cả học sinh và điểm số của họ, hãy tạo một mảng mới `studentsWhoPass` chứa tất cả học sinh đạt yêu cầu theo hệ thống chấm điểm tương ứng.
```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 = [];
```
### Cách tiếp cận từng bước
1. **Thiết lập vòng lặp** để duyệt qua từng điểm số trong mảng `allStudents`
2. **Kiểm tra loại điểm số** (là số hay chuỗi?)
3. **Áp dụng quy tắc của hệ thống chấm điểm tương ứng**:
- Đối với số: kiểm tra nếu điểm >= 3
- Đối với chuỗi: kiểm tra nếu nó là một trong các điểm chữ đạt yêu cầu
4. **Thêm điểm đạt yêu cầu** vào mảng `studentsWhoPass`
### Kỹ thuật mã hóa hữu ích
Sử dụng các khái niệm JavaScript từ bài học:
- **Toán tử typeof**: `typeof grade === 'number'` để kiểm tra nếu đó là điểm số dạng số
- **Toán tử so sánh**: `>=` để so sánh điểm số dạng số
- **Toán tử logic**: `||` để kiểm tra nhiều điều kiện điểm chữ
- **Câu lệnh if...else**: để xử lý các hệ thống chấm điểm khác nhau
- **Phương thức mảng**: `.push()` để thêm điểm đạt yêu cầu vào mảng mới
### Kết quả mong đợi
Khi bạn chạy chương trình, `studentsWhoPass` sẽ chứa: `['A', 'B-', 4, 5]`
**Tại sao các điểm này đạt yêu cầu:**
- `'A'``'B-'` là các điểm chữ hợp lệ (tất cả điểm chữ trong hệ thống này đều đạt yêu cầu)
- `4``5` là các điểm số >= 3
- `1``2` không đạt yêu cầu vì chúng là điểm số < 3
## Kiểm tra giải pháp của bạn
Kim tra mã ca bn vi các kch bn khác nhau:
```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
```
## Thử thách bổ sung
Sau khi hoàn thành bài tp cơ bn, hãy th các phn m rng sau:
1. **Thêm xác thực**: Kim tra các đim không hp l (như s âm hoc ch không hp lệ)
2. **Tính toán thống kê**: Tính s lượng hc sinh đạt yêu cu so vi không đạt yêu cu
3. **Chuyển đổi điểm số**: Chuyn tt c đim sang mt h thng s duy nht (A=5, B=4, C=3, v.v.)
## Tiêu chí đánh giá
| Tiêu chí | Xut sc (4) | Đạt yêu cu (3) | Đang phát trin (2) | Bt đầu (1) |
|----------|---------------|----------------|----------------|---------------|
| **Chức năng** | Chương trình xác định chính xác tt c các đim đạt yêu cu t c hai h thng | Chương trình hot động vi mt s vn đề nh hoc trường hp đặc bit | Chương trình hot động mt phn nhưng có li logic | Chương trình có li nghiêm trng hoc không chy |
| **Cấu trúc mã** | Mã sch, t chc tt vi logic if...else hp lý | Cu trúc tt vi các câu lnh điu kin phù hp | Cu trúc chp nhn được vi mt s vn đề t chc | Cu trúc kém, logic khó theo dõi |
| **Sử dụng các khái niệm** | S dng hiu qu các toán t so sánh, toán t logic và câu lnh điu kin | S dng tt các khái nim bài hc vi mt s thiếu sót nh | S dng mt phn các khái nim bài hc nhưng thiếu các yếu t chính | S dng hn chế các khái nim bài hc |
| **Giải quyết vấn đề** | Th hin s hiu rõ vn đề và cách tiếp cn gii pháp hiu qu | Cách tiếp cn gii quyết vn đề tt vi logic vng chc | Cách gii quyết vn đề chp nhn được nhưng có mt s nhm ln | Cách tiếp cn không rõ ràng, không th hin s hiu biết |
## Hướng dẫn nộp bài
1. **Kiểm tra mã của bạn** k lưỡng vi các ví d đã cung cp
2. **Thêm chú thích** gii thích logic ca bn, đặc bit là đối vi các câu lnh điu kin
3. **Xác minh kết quả đầu ra** khp vi kết qu mong đợi: `['A', 'B-', 4, 5]`
4. **Xem xét các trường hợp đặc biệt** như mng rng hoc kiu d liu không mong mun
> 💡 **Mẹo chuyên nghiệp**: Bắt đầu đơn giản! Hãy làm cho chức năng cơ bản hoạt động trước, sau đó thêm các tính năng phức tạp hơn. Hãy nhớ rằng, mục tiêu là thực hành logic xử lý quyết định với các công cụ bạn đã học trong bài học này.
---
**Tuyên bố miễn trừ trách nhiệm**:
Tài liu này đã được dch bng dch v dch thut AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mc dù chúng tôi c gng đảm bo độ chính xác, xin lưu ý rng các bn dch t động có th cha li hoc không chính xác. Tài liu gc bng ngôn ng bn địa nên được coi là ngun thông tin chính thc. Đối vi thông tin quan trng, nên s dng dch v dch thut chuyên nghip bi con người. Chúng tôi không chu trách nhim cho bt k s hiu lm hoc din gii sai nào phát sinh t vic s dng bn dch này.