基礎から学ぶC#入門 90日コース | 配列・コレクション・文字列 - Day 21:配列

C# 90日で身につけるC#
スポンサーリンク
スポンサーリンク

Day 21 のゴールと全体像

Day 21 では、C# の基礎の中でもとても重要な 配列(array) を学びます。 配列は「同じ種類のデータをまとめて扱うための箱の並び」のようなもので、 現実のプログラムでも頻繁に使われる基本的な仕組みです。

学ぶ内容は次の 4 つです。

  • 配列とは
  • インデックス
  • Length
  • 初期化

これらをステップバイステップで理解しながら、 「1つの変数ではなく、複数の値をまとめて扱う」感覚を身につけていきます。

配列とは

同じ型の値が並んだ「箱の列」

配列とは、

同じ型の値を、連続した「番号付きの箱」に入れてまとめて扱う仕組み

です。

例えば、5人分のテストの点数を別々の変数で管理すると、次のようになります。

int score1 = 80;
int score2 = 90;
int score3 = 75;
int score4 = 60;
int score5 = 95;
C#

これでも動きますが、人数が増えるとすぐに管理しきれなくなります。 そこで、配列を使って「点数の一覧」としてまとめます。

int[] scores = new int[5]; // int 型の箱が 5 個並んだ配列を作成
C#

この scores という配列には、

  • int 型の値が 5 個入る
  • それぞれの箱に「番号(インデックス)」が振られている

という状態になります。

配列を使うことで、

  • 「同じ種類のデータ」をひとまとまりとして扱える
  • ループと組み合わせて、まとめて処理できる

ようになります。

インデックス

0 から始まる番号で要素を指定する

配列の中の 1 つ 1 つの値のことを 要素(element) と呼びます。 要素には「インデックス」と呼ばれる番号が付いていて、

  • 最初の要素 → インデックス 0
  • 2番目の要素 → インデックス 1
  • 3番目の要素 → インデックス 2

というように、0 から始まるのがポイントです。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = new int[5]; // 要素数 5 の配列

        // インデックスを使って値を代入します
        scores[0] = 80; // 1人目の点数
        scores[1] = 90; // 2人目の点数
        scores[2] = 75; // 3人目の点数
        scores[3] = 60; // 4人目の点数
        scores[4] = 95; // 5人目の点数

        // インデックスを使って値を取り出します
        Console.WriteLine(scores[0]); // 80
        Console.WriteLine(scores[4]); // 95

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 配列のインデックスは 0 から始まる
  • 要素数が 5 の配列なら、インデックスは 04 まで
  • scores[5] のように範囲外のインデックスを指定すると、 実行時に IndexOutOfRangeException というエラーが発生します

インデックスは、

「配列の中のどの箱を使うか」を指定するための番号

だとイメージすると分かりやすいです。

Length プロパティ

配列の「要素数」を教えてくれる

配列には、

その配列にいくつ要素があるか(要素数)

を教えてくれる Length プロパティがあります。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = new int[5];

        Console.WriteLine(scores.Length); // 5 と表示されます

        Console.ReadLine();
    }
}
C#

Length を使うことで、

  • 配列の要素数をコードから確認できる
  • ループで配列を回すときに「どこまで回せばいいか」を自動的に決められる

ようになります。

Length を使ったループの基本形

配列を for 文で回すときの基本形は、次のようになります。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = { 80, 90, 75, 60, 95 }; // 要素数 5 の配列

        // i はインデックス(0 〜 scores.Length - 1)
        for (int i = 0; i < scores.Length; i++)
        {
            Console.WriteLine($"scores[{i}] = {scores[i]}");
        }

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • i < scores.Length とすることで、
    • インデックス 0 から
    • インデックス Length - 1 まで を安全に回せます。
  • Length を使うことで、「配列のサイズが変わってもループが自動的に対応」できるようになります。

配列の初期化

new と代入で初期化する

配列の初期化には、いくつかの書き方があります。

1. サイズだけ決めて、あとから値を入れる

using System;

class Program
{
    static void Main(string[] args)
    {
        // 要素数 5 の配列を作成(中身はすべて 0 で初期化されます)
        int[] scores = new int[5];

        // あとから値を代入していきます
        scores[0] = 80;
        scores[1] = 90;
        scores[2] = 75;
        scores[3] = 60;
        scores[4] = 95;

        Console.ReadLine();
    }
}
C#

この場合、

  • new int[5] の時点では、すべての要素が 0 で初期化されています。
  • そのあとで、1つずつ値を代入していきます。

2. 中身もまとめて書く初期化

using System;

class Program
{
    static void Main(string[] args)
    {
        // new と { } を使って中身もまとめて初期化
        int[] scores = new int[] { 80, 90, 75, 60, 95 };

        Console.WriteLine(scores[0]); // 80
        Console.WriteLine(scores[4]); // 95

        Console.ReadLine();
    }
}
C#

さらに、型が明らかな場合は new int[] を省略できます。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 型が明らかな場合は new int[] を省略可能
        int[] scores = { 80, 90, 75, 60, 95 };

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • { ... } を使うと「この配列には、最初からこの値を入れておきたい」というときに便利です。
  • new int[5] は「サイズだけ決めて、あとから値を入れる」場合に便利です。
  • どちらの書き方もよく使われるので、両方に慣れておくとよいです。

例題:5人分の点数の平均を求める

配列+インデックス+Length の総合練習

ここまでの内容を組み合わせて、 「5人分の点数の平均を求める」プログラムを書いてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 5人分の点数を配列で管理します
        int[] scores = new int[5];

        // 点数を入力してもらう
        for (int i = 0; i < scores.Length; i++)
        {
            Console.WriteLine($"{i + 1}人目の点数を入力してください:");

            string? input = Console.ReadLine();

            // 入力を int に変換します
            // 本来は TryParse を使って安全に変換するのが望ましいですが、
            // ここでは配列の説明に集中するため簡略化しています。
            scores[i] = int.Parse(input); // i 番目の要素に代入
        }

        // 合計を求める
        int sum = 0;
        for (int i = 0; i < scores.Length; i++)
        {
            sum += scores[i]; // sum = sum + scores[i];
        }

        // 平均を求める(double にキャストして小数も扱えるようにします)
        double average = (double)sum / scores.Length;

        Console.WriteLine($"合計点:{sum}");
        Console.WriteLine($"平均点:{average}");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイント:

  • 配列 scores に、インデックス i を使って点数を入れています。
  • scores.Length を使って、「何人分の点数があるか」をプログラムが自動的に把握しています。
  • 合計や平均を求める処理は、配列のサイズが変わってもそのまま使い回せます。

練習テンプレート:配列の基本形

配列を作って、全要素を表示するテンプレート

配列の感覚をつかむための、基本的なテンプレートを示します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 配列の初期化(3つの文字列をまとめて管理します)
        string[] names = { "Alice", "Bob", "Charlie" };

        // Length を使って、全要素を表示します
        for (int i = 0; i < names.Length; i++)
        {
            Console.WriteLine($"names[{i}] = {names[i]}");
        }

        Console.ReadLine();
    }
}
C#

このテンプレートをベースに、

  • 要素数を増やしてみる
  • 型を intdouble に変えてみる
  • 入力した値を配列に入れてみる

といった練習をすると、配列の基本的な使い方が自然に身についていきます。

Day 21 のまとめ

Day 21 では、C# の基本的なデータ構造である 配列 について、

  • 配列とは:同じ型の値が並んだ「番号付きの箱の列」
  • インデックス:0 から始まる番号で要素を指定する
  • Length:配列の要素数を教えてくれるプロパティ
  • 初期化:new と代入/{ ... } でまとめて初期化

という 4 つの軸で学びました。

配列は、

「複数の値をまとめて扱う」

ための最初の一歩となる重要な仕組みです。

ぜひ、

  • 自分で配列を作って、インデックスを使って値を入れたり取り出したりしてみる
  • Length を使って安全にループを書く練習をする
  • 初期化の書き方(new int[5]{ ... })を使い分けてみる

といった練習を通して、 配列を自然に使いこなせるようになっていってください。

タイトルとURLをコピーしました