Day 27 のゴールと全体像
Day 27 では、「配列やリストの数値データを集計する基本テクニック」を学びます。 扱うテーマは次の 5 つです。
- 合計
- 平均
- 最大値
- 最小値
- 件数
これらは、売上集計・アクセス数分析・テストの点数処理など、 あらゆる場面で登場する「データ集計の基礎」です。
ここでは、ループを使って自分の手で集計する感覚を身につけることを目標に、 ステップバイステップで解説していきます。
合計を求める
合計の考え方
合計は、
「すべての要素を足し合わせた結果」
です。
配列やリストの合計を求める基本的な方法は、
- 合計用の変数を 0 で用意する
- ループで 1 つずつ値を取り出して足していく
という流れになります。
例:テストの点数の合計を求める
using System;
class Program
{
static void Main(string[] args)
{
// テストの点数の配列
int[] scores = { 80, 90, 75, 60, 100 };
// 合計を保存する変数。最初は 0 からスタートします。
int sum = 0;
// ループで 1 つずつ足していきます
for (int i = 0; i < scores.Length; i++)
{
sum += scores[i]; // sum = sum + scores[i]; と同じ意味
}
Console.WriteLine($"合計点: {sum}");
Console.ReadLine();
}
}
C#重要ポイント:
- 合計用の変数は必ず「初期値 0」で始めます。
sum += scores[i];のように、ループの中で足し込んでいきます。- 合計は、後で平均や割合を計算するときの基礎になります。
平均を求める
平均の考え方
平均は、
「合計 ÷ 件数」
で求めます。
つまり、
- 合計を求める
- 要素数(件数)を求める
- 合計を件数で割る
という 3 ステップです。
例:テストの平均点を求める
using System;
class Program
{
static void Main(string[] args)
{
int[] scores = { 80, 90, 75, 60, 100 };
int sum = 0;
for (int i = 0; i < scores.Length; i++)
{
sum += scores[i];
}
// 件数(要素数)は Length で取得できます
int count = scores.Length;
// 平均は「合計 ÷ 件数」
double average = (double)sum / count; // int 同士の割り算を避けるために double にキャスト
Console.WriteLine($"合計点: {sum}");
Console.WriteLine($"件数: {count}");
Console.WriteLine($"平均点: {average}");
Console.ReadLine();
}
}
C#重要ポイント:
- 平均を求めるときは、合計と件数の両方が必要です。
int同士の割り算は小数点以下が切り捨てられるため、doubleにキャストしてから割り算するのが安全です。
最大値を求める
最大値の考え方
最大値は、
「配列やリストの中で、最も大きい値」
です。
ループで最大値を求める基本的な方法は、
- 最初の要素を「仮の最大値」として変数に入れる
- 2番目以降の要素と比較して、より大きい値があれば更新する
という流れになります。
例:点数の最大値を求める
using System;
class Program
{
static void Main(string[] args)
{
int[] scores = { 80, 90, 75, 60, 100 };
// 最初の要素を仮の最大値として設定します
int max = scores[0];
// 2番目の要素から順番に比較していきます
for (int i = 1; i < scores.Length; i++)
{
if (scores[i] > max)
{
max = scores[i]; // より大きい値が見つかったら更新
}
}
Console.WriteLine($"最大値: {max}");
Console.ReadLine();
}
}
C#重要ポイント:
- 最大値の初期値には「配列の最初の要素」を使うのが基本です。
- ループの中で「今の最大値より大きいか?」を比較し、 大きければ最大値を更新します。
最小値を求める
最小値の考え方
最小値は、
「配列やリストの中で、最も小さい値」
です。
考え方は最大値と同じで、
- 最初の要素を「仮の最小値」として変数に入れる
- 2番目以降の要素と比較して、より小さい値があれば更新する
という流れになります。
例:点数の最小値を求める
using System;
class Program
{
static void Main(string[] args)
{
int[] scores = { 80, 90, 75, 60, 100 };
// 最初の要素を仮の最小値として設定します
int min = scores[0];
// 2番目の要素から順番に比較していきます
for (int i = 1; i < scores.Length; i++)
{
if (scores[i] < min)
{
min = scores[i]; // より小さい値が見つかったら更新
}
}
Console.WriteLine($"最小値: {min}");
Console.ReadLine();
}
}
C#重要ポイント:
- 最小値の初期値も「配列の最初の要素」を使います。
- ループの中で「今の最小値より小さいか?」を比較し、 小さければ最小値を更新します。
件数を求める
件数とは何か
件数は、
「配列やリストに何件のデータが入っているか」
を表す値です。
C# では、
- 配列:
Length List<T>:Count
で取得できます。
例:配列とリストの件数を表示する
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
int[] scoresArray = { 80, 90, 75, 60, 100 };
List<int> scoresList = new List<int> { 80, 90, 75, 60, 100 };
int arrayCount = scoresArray.Length; // 配列の件数
int listCount = scoresList.Count; // List の件数
Console.WriteLine($"配列の件数: {arrayCount}");
Console.WriteLine($"List の件数: {listCount}");
Console.ReadLine();
}
}
C#重要ポイント:
- 配列は
Length、List<T>はCountで件数を取得します。 - 件数は、平均や割合を計算するときに必須の情報です。
総合例:点数データの集計レポート
合計・平均・最大値・最小値・件数をまとめて計算する
ここまでの内容をまとめて、 1つの配列に対して「集計レポート」を出力する例を示します。
using System;
class Program
{
static void Main(string[] args)
{
// テストの点数データ
int[] scores = { 80, 90, 75, 60, 100 };
// 件数
int count = scores.Length;
// 合計
int sum = 0;
for (int i = 0; i < scores.Length; i++)
{
sum += scores[i];
}
// 平均
double average = (double)sum / count;
// 最大値
int max = scores[0];
for (int i = 1; i < scores.Length; i++)
{
if (scores[i] > max)
{
max = scores[i];
}
}
// 最小値
int min = scores[0];
for (int i = 1; i < scores.Length; i++)
{
if (scores[i] < min)
{
min = scores[i];
}
}
// 結果表示
Console.WriteLine("=== 点数集計レポート ===");
Console.WriteLine($"件数: {count}");
Console.WriteLine($"合計: {sum}");
Console.WriteLine($"平均: {average}");
Console.WriteLine($"最大値: {max}");
Console.WriteLine($"最小値: {min}");
Console.ReadLine();
}
}
C#この総合例で体験できること:
- 合計・平均・最大値・最小値・件数を一度に計算する流れ
- ループと変数を組み合わせた「集計ロジック」の基本形
練習テンプレート:汎用的な集計メソッド
配列を受け取って集計するメソッド
少し発展として、「集計処理をメソッドに切り出す」形も示します。
using System;
class Program
{
static void Main(string[] args)
{
int[] scores = { 80, 90, 75, 60, 100 };
PrintSummary(scores);
Console.ReadLine();
}
// 配列の集計結果を表示するメソッド
static void PrintSummary(int[] data)
{
int count = data.Length;
int sum = 0;
int max = data[0];
int min = data[0];
for (int i = 0; i < data.Length; i++)
{
int value = data[i];
sum += value;
if (value > max)
{
max = value;
}
if (value < min)
{
min = value;
}
}
double average = (double)sum / count;
Console.WriteLine("=== 集計結果 ===");
Console.WriteLine($"件数: {count}");
Console.WriteLine($"合計: {sum}");
Console.WriteLine($"平均: {average}");
Console.WriteLine($"最大値: {max}");
Console.WriteLine($"最小値: {min}");
}
}
C#ポイント:
- 集計ロジックをメソッドにまとめることで、 他の配列にも簡単に使い回せるようになります。
Day 27 のまとめ
Day 27 では、
- 合計
- 平均
- 最大値
- 最小値
- 件数
という「データ集計の基本」を、 ループと変数を使って自分の手で計算する方法として学びました。
これらは、
「データをただ眺めるだけでなく、意味のある数字に変換する」
ための第一歩です。
今後、LINQ や統計ライブラリなどを使うようになっても、 この「合計・平均・最大・最小・件数」を自分で計算できる感覚は必ず役に立ちます。
ぜひ、
- 売上データの配列を作って集計してみる
- 温度やアクセス数など、実際の数値を想定して集計してみる
- 複数の配列を比較して「どのクラスが平均点が高いか」などを考えてみる
といった練習を通して、 データ集計を「ただの計算」ではなく「情報を読み解くための武器」として 使いこなせるようになっていってください。
