C# | 1 日 60 分 × 7 日アプリ学習:超初級編

Web APP C#
スポンサーリンク

5日目のゴール

5日目のテーマは
「C# で“同じ種類のデータをまとめて扱う”感覚をつかむこと」 です。

ここまでで、
変数
計算
条件分岐(if)
繰り返し(for / while)
をやってきました。

今日はそこに、
「同じような値をたくさん扱うときの道具」=配列(array)
を足していきます。


「変数が増えたときのモヤモヤ」を言葉にしてみる

day1, day2, day3… が増えていくつらさ

4日目の最後に、こんなコードを書きました。

int day1 = 30;
int day2 = 45;
int day3 = 20;
int day4 = 60;
int day5 = 0;
int day6 = 50;
int day7 = 40;

int total = 0;

total = total + day1;
total = total + day2;
total = total + day3;
total = total + day4;
total = total + day5;
total = total + day6;
total = total + day7;
C#

動きとしては正しいけれど、
「同じような変数がたくさんある」
「同じような行を何度も書いている」
というモヤモヤが出てきます。

ここで登場するのが「配列」です。


配列は「同じ種類の箱を並べたもの」

まずは int の配列を作ってみる

配列は、「同じ型の変数を、番号つきで並べたもの」です。

int[] scores = { 80, 90, 75, 60 };
C#

この一行で、
「int 型の配列 scores を作って、
0 番目に 80、1 番目に 90、2 番目に 75、3 番目に 60 を入れる」
という意味になります。

ここでのポイントは二つです。

int[] という書き方
…「int の配列ですよ」という宣言

{ 80, 90, 75, 60 }
… 中に入れる値を並べて書いている

配列の中の一つ一つの値を「要素」と呼びます。


配列の要素にアクセスする

インデックス(番号)で取り出す

配列の中身は、「インデックス」と呼ばれる番号でアクセスします。

int[] scores = { 80, 90, 75, 60 };

Console.WriteLine(scores[0]);  // 80
Console.WriteLine(scores[1]);  // 90
Console.WriteLine(scores[2]);  // 75
Console.WriteLine(scores[3]);  // 60
C#

ここで重要なのは、
「配列の番号は 0 から始まる」 というルールです。

最初の要素:インデックス 0
2 番目:インデックス 1
3 番目:インデックス 2
…というふうに続きます。

「0 から始まるの、なんか気持ち悪い…」
と感じるのは普通です。
でも、C# だけでなく多くの言語がこのルールなので、
「そういうもの」として慣れていきましょう。


配列と for 文は“親友”みたいな関係

全部の要素を順番に処理する

配列の真価は、「for 文と組み合わせたとき」に発揮されます。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = { 80, 90, 75, 60 };

        for (int i = 0; i < scores.Length; i++)
        {
            Console.WriteLine("scores[" + i + "] = " + scores[i]);
        }
    }
}
C#

ここで新しく出てきたのが scores.Length です。

Length は、「配列の要素数(何個入っているか)」を表します。
この例では、scores.Length は 4 です。

for 文の条件 i < scores.Length は、
「i が 0, 1, 2, 3 のあいだ繰り返す」
という意味になります。

流れとしては、

i = 0 → scores[0] を表示
i = 1 → scores[1] を表示
i = 2 → scores[2] を表示
i = 3 → scores[3] を表示
i = 4 → 条件(4 < 4)は false → 終了

という感じです。


配列の合計を求める

4日目の「sum パターン」を配列に応用する

配列と for を使えば、
「1 から 10 までの合計」と同じノリで、
「配列の中身の合計」が求められます。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = { 80, 90, 75, 60 };

        int sum = 0;

        for (int i = 0; i < scores.Length; i++)
        {
            sum = sum + scores[i];
        }

        Console.WriteLine("合計点は " + sum + " 点です");
    }
}
C#

ここでのポイントは、

sum を 0 でスタートさせる
for の中で sum = sum + scores[i]; として、
配列の要素を一つずつ足していく

という流れです。

「ループの外にある変数が、ループの中で育っていく」
というパターンは、4日目とまったく同じです。


平均値を出してみる

合計 ÷ 個数

合計が出せたら、平均もすぐです。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] scores = { 80, 90, 75, 60 };

        int sum = 0;

        for (int i = 0; i < scores.Length; i++)
        {
            sum = sum + scores[i];
        }

        double average = (double)sum / scores.Length;

        Console.WriteLine("合計点は " + sum + " 点です");
        Console.WriteLine("平均点は " + average + " 点です");
    }
}
C#

ここで一つだけ新しいポイントがあります。

(double)sum / scores.Length;(double) です。

sum は int(整数)ですが、
平均は小数になる可能性があります。

そのため、(double)sum と書いて、
「sum を double として扱ってね」と C# に伝えています。
これを「キャスト」と呼びます。

2日目でやった「int と double」の話が、ここでつながります。


配列を使って「1週間の勉強時間」を書き直す

day1〜day7 を配列にまとめる

4日目のコードを、配列でスッキリさせてみましょう。

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] studyMinutes = { 30, 45, 20, 60, 0, 50, 40 };

        int total = 0;

        for (int i = 0; i < studyMinutes.Length; i++)
        {
            total = total + studyMinutes[i];
        }

        Console.WriteLine("1週間の合計勉強時間は " + total + " 分です");
    }
}
C#

変数が 7 個並んでいたのが、
int[] studyMinutes = { ... }; の一行にまとまりました。

for 文の中では、
「i 日目の勉強時間」を studyMinutes[i] で取り出して、
total に足していっています。

「同じ種類のデータがたくさんある」
→ 配列にまとめる
→ for で一気に処理する

この流れが見えてきたら、もう配列の入口はクリアです。


文字列の配列も使ってみる

string[] で「名前リスト」を作る

配列は int だけでなく、string にも使えます。

using System;

class Program
{
    static void Main(string[] args)
    {
        string[] names = { "太郎", "花子", "次郎" };

        for (int i = 0; i < names.Length; i++)
        {
            Console.WriteLine("こんにちは、" + names[i] + " さん");
        }
    }
}
C#

ここでは、

string[] names で「文字列の配列」を宣言
names[0] は “太郎”
names[1] は “花子”
names[2] は “次郎”

という対応になっています。

配列の型は、
int[](整数の配列)
string[](文字列の配列)
というように、「型+[]」で表します。


5日目のミニアプリ:簡易「出席リスト」表示

名前と出席状況を配列で扱う

少しだけ工夫して、
「名前リスト」と「出席フラグ」を組み合わせてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        string[] names = { "太郎", "花子", "次郎", "三郎" };
        bool[] isPresent = { true, false, true, true };

        for (int i = 0; i < names.Length; i++)
        {
            if (isPresent[i])
            {
                Console.WriteLine(names[i] + " さん:出席");
            }
            else
            {
                Console.WriteLine(names[i] + " さん:欠席");
            }
        }
    }
}
C#

ここでやっていることは、

同じインデックス i を使って、
names[i]isPresent[i] をセットで扱う
isPresent[i] が true なら「出席」、false なら「欠席」と表示

という流れです。

配列+for+if が組み合わさると、
かなり「アプリっぽい」ことができるようになります。


5日目で絶対に押さえておきたいポイント

配列の“型と形”を体で覚える

配列の宣言と初期化:

int[] numbers = { 1, 2, 3, 4 };
string[] names = { "太郎", "花子" };
C#

要素へのアクセス:

numbers[0];  // 1
names[1];    // "花子"
C#

要素数(Length):

numbers.Length;  // 4
C#

for と組み合わせる基本パターン:

for (int i = 0; i < 配列.Length; i++)
{
    // 配列[i] を使った処理
}
C#

そして何より大事なのは、
「同じ種類のデータがたくさん出てきたら、配列を思い出す」
という感覚です。


もし余裕があればやってみてほしいこと

自分の「好きなものリスト」を配列にしてみる

例えば、

好きな食べ物
好きなゲーム
行ってみたい国

などを string[] で配列にして、
for で全部表示してみてください。


5日目のまとめ

1〜4日目で作った土台に、
5日目は「配列」という強力な道具が加わりました。

変数:1 個の値
配列:同じ型の値を、番号つきでたくさん持てる

配列+for を使えるようになると、
「データのまとまり」を扱う力が一気に上がります。

次のステップでは、
「処理のまとまり」を扱う=メソッド(関数)に進んでいきます。
データをまとめる配列と、処理をまとめるメソッド。
この二つがそろうと、コードがぐっと“設計っぽく”なっていきます。

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