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.
111 lines
5.8 KiB
111 lines
5.8 KiB
# 결정 내리기: 학생 성적 처리기
|
|
|
|
## 학습 목표
|
|
|
|
이 과제에서는 이번 수업의 의사결정 개념을 연습하기 위해 서로 다른 성적 체계에서 학생 성적을 처리하는 프로그램을 만듭니다. `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', // 학점 - 합격
|
|
'B-', // 학점 - 합격
|
|
1, // 숫자 점수 - 불합격
|
|
4, // 숫자 점수 - 합격
|
|
5, // 숫자 점수 - 합격
|
|
2 // 숫자 점수 - 불합격
|
|
];
|
|
|
|
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
|
|
// 다양한 학점 조합으로 테스트하십시오
|
|
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
|
|
let testGrades2 = [5, 'A', 2, 'C-', 4];
|
|
|
|
// 유효한 학점의 모든 조합에서 작동해야 합니다
|
|
```
|
|
|
|
## 보너스 도전과제
|
|
|
|
기본 과제를 완료한 후 다음 확장 과제를 시도하세요:
|
|
|
|
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 DISCLAIMER START -->
|
|
**면책 조항**:
|
|
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나 자동 번역에는 오류나 부정확성이 포함될 수 있음을 양지해 주시기 바랍니다. 원문 문서는 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우 전문 인력에 의한 번역을 권장합니다. 본 번역 사용으로 인한 오해나 잘못된 해석에 대해서는 당사가 책임지지 않습니다.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |