# Вземане на решения: Програма за обработка на оценки на ученици ## Цели на обучението В това задание ще практикувате концепциите за вземане на решения от този урок, като създадете програма, която обработва оценки на ученици от различни системи за оценяване. Ще използвате `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` ### Полезни техники за кодиране Използвайте тези концепции от урока: - **Оператор 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). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.