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

118 lines
9.7 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-24T15:23:52+00:00",
"source_file": "2-js-basics/3-making-decisions/assignment.md",
"language_code": "uk"
}
-->
# Прийняття рішень: Обробка оцінок студентів
## Цілі навчання
У цьому завданні ви будете практикувати концепції прийняття рішень з цього уроку, створюючи програму, яка обробляє оцінки студентів з різних систем оцінювання. Ви використаєте оператори `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. **Розгляньте крайні випадки**, такі як порожні масиви або неочікувані типи даних
> 💡 **Корисна порада**: Почніть з простого! Спочатку забезпечте базову функціональність, а потім додавайте більш складні функції. Пам'ятайте, що мета — практикувати логіку прийняття рішень за допомогою інструментів, які ви вивчили на цьому уроці.
---
**Відмова від відповідальності**:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.