演習 - 学生の課題のスコアの平均を計算する
この演習では、各学生の課題スコアの平均を計算して格納します。 各学生のスコアが付けられた課題の数がわかっているため、平均は課題のスコアの合計を課題数で割ると計算されます。 平均を格納するには、Decimal データ型を使用します。
平均を格納する変数を作成する
このタスクでは、採点された課題の平均スコアを格納するために使用できる各学生の変数を作成します。
.NET エディターで、各学生の合計スコアを表示するために使用される
Console.WriteLine()
ステートメントを見つけてください。Console.WriteLine()
ステートメントの上に新しい空白のコード行を作成してください。作成した空白のコード行で、学生の現在のスコアに使用される Decimal 変数を宣言するには、次のコードを入力してください。
decimal sophiaScore; decimal nicolasScore; decimal zahirahScore; decimal jeongScore;
decimal
変数を宣言しているだけであり、初期化していないことに注意してください。decimal
型を選択したのは、平均的な成績を表すためであり、整数を使用した場合は使用できない小数点以下の桁数を含める必要があるためです。 これにより、89.9 のスコアを得た学生を、B から A に上げることができます。前の演習では、整数変数を初期化して、コンソール出力ですぐに使用できるようにしました。 ここでは、これらの
decimal
変数は、Sophia のスコアから始まる既存のデータを使う計算を使用して、次のステップで初期化されます。クラス内の Sophia の現在のスコアを 10 進数の
sophiaScore
に代入するには、変数を次のコードで更新してください。decimal sophiaScore = sophiaSum / currentAssignments;
クラスの学生の現在のスコアを計算するには、課題スコアの合計を課題の合計数で除算してください。 クラス内の各学生には、5 つの課題があり、セットアップ中に初期化した
currentAssignments
によって表されます。学生の残りのスコアを代入するには、次のコードを入力してください。
decimal nicolasScore = nicolasSum / currentAssignments; decimal zahirahScore = zahirahSum / currentAssignments; decimal jeongScore = jeongSum / currentAssignments;
最終的には、このアプリケーションに各学生の成績を表示したいと考えています。 次の手順では、課題の合計ではなく、各学生のスコアを表示するようにコードを変更します。
各学生の現在のスコアを表示するには、表示ステートメントの合計変数をスコア変数に置き換えてください。
Console.WriteLine("Sophia: " + sophiaScore); Console.WriteLine("Nicolas: " + nicolasScore); Console.WriteLine("Zahirah: " + zahirahScore); Console.WriteLine("Jeong: " + jeongScore);
少し時間をかけて、このアプリケーションの開発に使用している増分アプローチについてよく考えてみてください。
問題を小さく分割することは、開発者にとって重要なスキルです。 コードを段階的にビルドし、作業を頻繁に確認すると、信頼性の高いアプリケーションをすばやく開発できます。 この場合、
Console.WriteLine()
を再利用して、プロセスの各ステージを完了するときに、計算が正しいことを確認することができます。各学生の現在の成績の値を表示するには、[実行] を選択してください。
次の出力が表示されます。
Sophia: 94 Nicolas: 83 Zahirah: 83 Jeong: 95
スコアは小数ではなく整数として表示されることに注目してください。
除算計算の結果を 10 進値にする場合、被除数または除数 (あるいは両方) は 10 進型である必要があります。 計算で整数変数を使用する場合は、整数を 10 進数に "変換" するキャストと呼ばれている手法を適用する必要があります。
スコア計算では、合計変数または
currentAssignments
のいずれかを 10 進数型にキャストすると、10 進数の結果を得ることができます。 この場合は、合計を 10 進数としてキャストします。除算操作で整数変数を 10 進数としてキャストするには、コードを次のように更新してください。
decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments;
除算の結果が 10 進値になるようにするには、被除数または除数を 10 進型にする必要があるだけです。 ここでは、被除数として使用される合計変数のみをキャストしてください。
教師がレター グレードを割り当てるために使用する次の採点尺度を確認してください。
97 - 100 A+ 93 - 96 A 90 - 92 A- 87 - 89 B+ 83 - 86 B
次の手順では、各学生の合計スコアに基づくレター グレードを含めます。 表示された出力へのレター グレードの追加は、手動のプロセスになります。
各学生の現在の成績の値を決定するには、[実行] を選択してください。
各学生の現在の成績を使用して、必要に応じて切り上げまたは切り捨てを行い、適切なレターグレードを決定します。
各学生の数値スコアの後にレター グレードの成績を追加するには、次のようにコードを更新してください。
Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
作業を確認する
このタスクでは、コードを実行して、出力が正しいことを検証します。
ご自分のコードを次と比較してください。
int currentAssignments = 5; int sophia1 = 93; int sophia2 = 87; int sophia3 = 98; int sophia4 = 95; int sophia5 = 100; int nicolas1 = 80; int nicolas2 = 83; int nicolas3 = 82; int nicolas4 = 88; int nicolas5 = 85; int zahirah1 = 84; int zahirah2 = 96; int zahirah3 = 73; int zahirah4 = 85; int zahirah5 = 79; int jeong1 = 90; int jeong2 = 92; int jeong3 = 98; int jeong4 = 100; int jeong5 = 97; int sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5; int nicolasSum = nicolas1 + nicolas2 + nicolas3 + nicolas4 + nicolas5; int zahirahSum = zahirah1 + zahirah2 + zahirah3 + zahirah4 + zahirah5; int jeongSum = jeong1 + jeong2 + jeong3 + jeong4 + jeong5; decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments; Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
コードを実行し、学生のスコアをレター グレードと共に表示するには、[実行] を選択してください。
コードが想定どおりに動作していることを確認するには、アプリケーションの出力を次の出力と比較します。
Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
これで、コードに学生のスコアが 10 進値として表示され、割り当てたレター グレードが表示されているはずです。
コードによって表示される結果が異なる場合は、コードを確認し、エラーを見つけて更新する必要があります。 コードをもう一度実行して、問題が修正されたかどうかを確認します。 コードで予期される結果が得られるまで、コードの更新と実行を続けます。
重要
これまでに記述したコードは削除しないでください。 次の演習で、このコード上にビルドします。