# 意思決定: 学生の成績処理プログラム ## 学習目標 この課題では、レッスンで学んだ意思決定の概念を練習し、異なる成績評価システムから学生の成績を処理するプログラムを作成します。`if...else`文、比較演算子、論理演算子を使用して、どの学生がコースを合格しているかを判断します。 ## 課題 あなたは最近別の学校と合併した学校で働いています。これにより、2つの全く異なる成績評価システムから学生の成績を処理し、どの学生が合格しているかを判断する必要があります。これは条件付きロジックを練習する絶好の機会です! ### 成績評価システムの理解 #### 第一の成績評価システム(数値) - 成績は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. **エッジケース**(空の配列や予期しないデータ型など)を考慮する > 💡 **プロのヒント**: シンプルに始めましょう!基本的な機能をまず動作させ、その後より高度な機能を追加してください。目標は、このレッスンで学んだ意思決定ロジックを練習することです。 --- **免責事項**: この文書はAI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてお考えください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解について、当社は責任を負いません。