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

C# 90日で身につけるC#
スポンサーリンク
スポンサーリンク
  1. Day 30 のゴールと全体像
  2. 変数と型
    1. 変数とは
    2. 型とは
  3. 演算子
    1. 算術演算子
    2. 比較演算子
    3. 論理演算子
  4. if 文
    1. 条件によって処理を分ける
    2. else if で条件を増やす
  5. switch 文
    1. 複数の選択肢から分岐する
  6. for 文
    1. 回数が決まっているループ
  7. while 文
    1. 条件が true の間、繰り返す
  8. foreach 文
    1. コレクションを「1つずつ」なめる
  9. メソッド
    1. 処理を「ひとまとまり」にして再利用する
  10. 配列
    1. 固定長の「同じ型のデータの並び」
  11. List
    1. 可変長の「同じ型のデータの並び」
  12. Dictionary
    1. キーと値のペアで管理する
  13. 総復習ミニテンプレート:簡単な成績プログラム
  14. Day 30 のまとめ
  15. Day 30 のゴールと全体像
  16. 変数と型:プログラムの「箱」と「中身」
    1. 変数とは何か
    2. 型とは何か
  17. 演算子:値を計算し、比較し、組み合わせる
    1. 算術演算子
    2. 比較演算子
    3. 論理演算子
  18. 条件分岐:if と switch
    1. if 文:条件によって処理を分ける
    2. switch 文:複数の選択肢から分岐する
  19. ループ:for / while / foreach
    1. for 文:回数が決まっている繰り返し
    2. while 文:条件が true の間、繰り返す
    3. foreach 文:コレクションを「1つずつ」なめる
  20. メソッド:処理をひとまとまりにして再利用する
    1. メソッドの基本
  21. 配列:固定長の「同じ型のデータの並び」
    1. 配列の基本
  22. List:可変長の「同じ型のデータの並び」
    1. List<T> の基本
  23. Dictionary:キーと値のペアで管理する
    1. Dictionary<TKey, TValue> の基本
  24. 総復習テンプレート:ミニ成績管理プログラム
  25. Day 30 のまとめと次への橋渡し

Day 30 のゴールと全体像

Day 30 は、ここまで学んできた C# の基礎を一気に振り返る総復習の日です。

復習する流れは次のとおりです。

  • 変数
  • 演算子
  • if
  • switch
  • for
  • while
  • foreach
  • メソッド
  • 配列
  • List
  • Dictionary

これらは、今後どんなプログラムを書くときにも「必ず土台になる」要素です。 ここでは、1つの小さなサンプルプログラムをイメージしながら、各要素をつなげて復習していきます。

変数と型

変数とは

変数は、

「値を一時的に保存しておくための名前付きの箱」

のようなものです。

int age = 20;        // 年齢を保存する箱
string name = "太郎"; // 名前を保存する箱
C#
  • agename が「箱の名前」
  • 20"太郎" が「箱の中身(値)」

というイメージです。

型とは

型は、

「その変数にどんな種類の値が入るかを決めるルール」

です。

代表的な型:

  • int:整数
  • double:小数
  • string:文字列
  • bool:真偽値(true / false
int score = 85;          // 点数(整数)
double height = 1.75;    // 身長(小数)
string message = "Hello";
bool isPassed = true;    // 合格かどうか
C#

重要ポイント:

  • 変数には必ず「型」が付きます。
  • 型が違うと、できる操作も変わります(文字列同士の足し算など)。

演算子

算術演算子

数値を計算するときに使う演算子です。

int a = 10;
int b = 3;

int sum = a + b;   // 足し算 → 13
int diff = a - b;  // 引き算 → 7
int mul = a * b;   // 掛け算 → 30
int div = a / b;   // 割り算 → 3(整数同士なので小数切り捨て)
int mod = a % b;   // 剰余(あまり) → 1
C#

比較演算子

値を比較して、true / false を返します。

int x = 5;
int y = 10;

bool result1 = (x < y);   // true
bool result2 = (x == y);  // false
bool result3 = (x != y);  // true
C#

論理演算子

条件を組み合わせるときに使います。

int score = 80;

bool isGood = (score >= 70) && (score <= 100); // 両方満たすと true
bool isBad  = (score < 50) || (score > 100);   // どちらか満たすと true
bool notPass = !(score >= 60);                 // 条件の反転
C#

重要ポイント:

  • 演算子は「条件分岐」や「ループ」の中で頻繁に使われます。
  • 比較演算子と論理演算子は、if とセットで覚えると理解しやすいです。

if 文

条件によって処理を分ける

if は、

「ある条件が true のときだけ、特定の処理を実行する」

ための構文です。

int score = 75;

if (score >= 60)
{
    Console.WriteLine("合格です。");
}
else
{
    Console.WriteLine("不合格です。");
}
C#
  • score >= 60 が条件
  • 条件が true → 「合格です。」
  • 条件が false → 「不合格です。」

else if で条件を増やす

int score = 85;

if (score >= 90)
{
    Console.WriteLine("評価:S");
}
else if (score >= 80)
{
    Console.WriteLine("評価:A");
}
else if (score >= 70)
{
    Console.WriteLine("評価:B");
}
else
{
    Console.WriteLine("評価:C");
}
C#

重要ポイント:

  • 条件は「bool 型の式」で書きます。
  • 条件分岐は、プログラムの「判断力」を作るための基本です。

switch 文

複数の選択肢から分岐する

switch は、

「1つの値に対して、複数の候補から分岐する」

ときに使います。

int menu = 2;

switch (menu)
{
    case 1:
        Console.WriteLine("メニュー1が選ばれました。");
        break;
    case 2:
        Console.WriteLine("メニュー2が選ばれました。");
        break;
    case 3:
        Console.WriteLine("メニュー3が選ばれました。");
        break;
    default:
        Console.WriteLine("不正なメニュー番号です。");
        break;
}
C#

重要ポイント:

  • case ごとに break を書くのが基本です。
  • メニュー選択など、「番号で分岐する」場面でよく使われます。

for 文

回数が決まっているループ

for は、

「決まった回数だけ繰り返す」

ためのループです。

for (int i = 0; i < 5; i++)
{
    Console.WriteLine($"i の値: {i}");
}
C#
  • int i = 0;:初期化
  • i < 5;:ループ継続条件
  • i++:1回ごとに i を増やす

重要ポイント:

  • 配列や List のインデックスを使うときに、for がよく使われます。

while 文

条件が true の間、繰り返す

while は、

「条件が true の間、ずっと繰り返す」

ためのループです。

int count = 0;

while (count < 3)
{
    Console.WriteLine($"count: {count}");
    count++; // 自分で増やさないと無限ループになります
}
C#

重要ポイント:

  • 「いつ終わるか」が条件で決まるループです。
  • 入力待ちやメニュー表示など、「終わりがユーザー次第」の処理に向いています。

foreach 文

コレクションを「1つずつ」なめる

foreach は、

「配列や List、Dictionary の要素を 1 つずつ取り出して処理する」

ための構文です。

string[] names = { "Alice", "Bob", "Charlie" };

foreach (string n in names)
{
    Console.WriteLine($"名前: {n}");
}
C#

重要ポイント:

  • インデックスを意識せず、「中身だけ」を順番に扱いたいときに便利です。

メソッド

処理を「ひとまとまり」にして再利用する

メソッドは、

「名前のついた処理のかたまり」

です。

static void Greet(string name)
{
    Console.WriteLine($"こんにちは、{name} さん。");
}

static void Main(string[] args)
{
    Greet("太郎");   // メソッド呼び出し
    Greet("花子");   // 同じ処理を再利用
}
C#

重要ポイント:

  • メソッドは「入力(引数)」と「出力(戻り値)」を持てます。
  • 同じ処理を何度も書かずに済むようにするための仕組みです。

配列

固定長の「同じ型のデータの並び」

配列は、

「同じ型の値を、決まった数だけ並べて持つ箱」

です。

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

Console.WriteLine(scores[0]); // 80
Console.WriteLine(scores[1]); // 90

for (int i = 0; i < scores.Length; i++)
{
    Console.WriteLine($"インデックス {i}: {scores[i]}");
}
C#

重要ポイント:

  • 要素数は固定(途中で増やせない)です。
  • Length で要素数を取得します。

List

可変長の「同じ型のデータの並び」

List<T> は、

「あとから追加・削除できる配列のようなもの」

です。

using System.Collections.Generic;

List<int> scores = new List<int>();

scores.Add(80);  // 追加
scores.Add(90);
scores.Add(75);

scores.Remove(90);   // 値を指定して削除
scores.RemoveAt(0);  // インデックスを指定して削除

Console.WriteLine($"件数: {scores.Count}");

foreach (int s in scores)
{
    Console.WriteLine($"点数: {s}");
}
C#

重要ポイント:

  • Add / Remove / RemoveAt / Count が基本操作です。
  • 「件数が変わるデータ」を扱うときに便利です。

Dictionary

キーと値のペアで管理する

Dictionary<TKey, TValue> は、

「キー(名前など)と値(点数など)をセットで管理するコレクション」

です。

using System.Collections.Generic;

Dictionary<string, int> scores = new Dictionary<string, int>();

scores.Add("太郎", 80);
scores.Add("花子", 95);

// キーから値を取り出す
int taroScore = scores["太郎"];
Console.WriteLine($"太郎さんの点数: {taroScore}");

// キーが存在するかチェック
if (scores.ContainsKey("花子"))
{
    Console.WriteLine("花子さんは登録されています。");
}

// ループで一覧表示
foreach (var entry in scores)
{
    string name = entry.Key;
    int score = entry.Value;
    Console.WriteLine($"名前: {name}, 点数: {score}");
}
C#

重要ポイント:

  • 「名前 → 点数」「商品コード → 在庫数」など、 「何かのラベルと値を紐づけたい」場面で非常に強力です。

総復習ミニテンプレート:簡単な成績プログラム

最後に、ここまでの要素を少しだけまとめた「超ミニ版成績プログラム」を示します。

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        Dictionary<string, int> scores = new Dictionary<string, int>();

        while (true)
        {
            Console.WriteLine("\n1: 登録  2: 一覧  3: 平均  0: 終了");
            Console.Write("番号を選んでください:");
            string? input = Console.ReadLine();

            if (input == "0")
            {
                Console.WriteLine("終了します。");
                break;
            }

            switch (input)
            {
                case "1":
                    Register(scores);
                    break;
                case "2":
                    ShowAll(scores);
                    break;
                case "3":
                    ShowAverage(scores);
                    break;
                default:
                    Console.WriteLine("不正な入力です。");
                    break;
            }
        }
    }

    static void Register(Dictionary<string, int> scores)
    {
        Console.Write("名前:");
        string? name = Console.ReadLine();

        Console.Write("点数:");
        string? text = Console.ReadLine();

        if (string.IsNullOrWhiteSpace(name) || !int.TryParse(text, out int score))
        {
            Console.WriteLine("入力が不正です。");
            return;
        }

        scores[name] = score; // 既存なら上書き、新規なら追加
        Console.WriteLine("登録しました。");
    }

    static void ShowAll(Dictionary<string, int> scores)
    {
        Console.WriteLine("=== 一覧 ===");
        foreach (var entry in scores)
        {
            Console.WriteLine($"名前: {entry.Key}, 点数: {entry.Value}");
        }
    }

    static void ShowAverage(Dictionary<string, int> scores)
    {
        if (scores.Count == 0)
        {
            Console.WriteLine("データがありません。");
            return;
        }

        int sum = 0;
        foreach (var entry in scores)
        {
            sum += entry.Value;
        }

        double avg = (double)sum / scores.Count;
        Console.WriteLine($"平均点: {avg:F2}");
    }
}
C#

Day 30 のまとめ

Day 30 では、

  • 変数・型・演算子
  • if / switch
  • for / while / foreach
  • メソッド
  • 配列 / List / Dictionary

という C# の基礎の「柱」を一気に振り返りました。

ここまでの内容がしっかり身についていると、

「ちょっとしたツールやミニアプリなら、自分で組み立てられる」

ところまで来ています。

この先は、

  • クラス・オブジェクト指向
  • 例外処理
  • LINQ
  • ファイル入出力
  • UI や Web

など、より高度な世界に進んでいきますが、 今日復習した基礎は、どこまで行ってもずっと使い続ける「土台」です。

ぜひ、

  • 自分で小さなプログラムを考えて作ってみる
  • ここまでのサンプルを少しずつ改造してみる
  • 「こういうことできないかな?」と発想を広げてみる

といった形で、 「書いて動かして試す」サイクルを楽しみながら、次のステップへ進んでいってください。

Day 30 のゴールと全体像

Day 30 の到達目標は、

「C#の基本的なプログラムを、自分で考えて書けるようになること」

です。

ここまで学んできた要素を、

  • 変数
  • 演算子
  • if
  • switch
  • for
  • while
  • foreach
  • メソッド
  • 配列
  • List
  • Dictionary

という流れでつなげて復習し、 最後に「自分で考えたミニプログラム」を書けるイメージを持てるようにしていきます。

変数と型:プログラムの「箱」と「中身」

変数とは何か

変数は、

「値を一時的に保存しておくための名前付きの箱」

です。

int age = 20;          // 年齢を保存する箱
string name = "太郎";  // 名前を保存する箱
C#
  • agename が「箱の名前」
  • 20"太郎" が「箱の中身(値)」

というイメージで考えると分かりやすいです。

型とは何か

型は、

「その変数にどんな種類の値が入るかを決めるルール」

です。

int score = 85;          // 整数
double height = 1.75;    // 小数
string message = "Hello"; // 文字列
bool isPassed = true;    // true / false
C#

重要ポイント:

  • 変数には必ず「型」が付きます。
  • 型が違うと、できる操作も変わります(文字列同士の足し算など)。

演算子:値を計算し、比較し、組み合わせる

算術演算子

数値の計算に使います。

int a = 10;
int b = 3;

int sum = a + b;   // 足し算 → 13
int diff = a - b;  // 引き算 → 7
int mul = a * b;   // 掛け算 → 30
int div = a / b;   // 割り算 → 3(整数同士なので小数切り捨て)
int mod = a % b;   // 剰余(あまり) → 1
C#

比較演算子

値を比較して、true / false を返します。

int x = 5;
int y = 10;

bool result1 = (x < y);   // true
bool result2 = (x == y);  // false
bool result3 = (x != y);  // true
C#

論理演算子

条件を組み合わせるときに使います。

int score = 80;

bool isGood = (score >= 70) && (score <= 100); // 両方満たすと true
bool isBad  = (score < 50) || (score > 100);   // どちらか満たすと true
bool notPass = !(score >= 60);                 // 条件の反転
C#

重要ポイント:

  • 演算子は「条件分岐」や「ループ」の中で頻繁に使われます。
  • 比較・論理演算子は、if とセットで覚えると理解しやすいです。

条件分岐:if と switch

if 文:条件によって処理を分ける

if は、

「ある条件が true のときだけ、特定の処理を実行する」

ための構文です。

int score = 75;

if (score >= 60)
{
    Console.WriteLine("合格です。");
}
else
{
    Console.WriteLine("不合格です。");
}
C#

さらに細かく分けたいときは else if を使います。

int score = 85;

if (score >= 90)
{
    Console.WriteLine("評価:S");
}
else if (score >= 80)
{
    Console.WriteLine("評価:A");
}
else if (score >= 70)
{
    Console.WriteLine("評価:B");
}
else
{
    Console.WriteLine("評価:C");
}
C#

重要ポイント:

  • 条件は「bool 型の式」で書きます。
  • 条件分岐は、プログラムの「判断力」を作るための基本です。

switch 文:複数の選択肢から分岐する

switch は、

「1つの値に対して、複数の候補から分岐する」

ときに使います。

int menu = 2;

switch (menu)
{
    case 1:
        Console.WriteLine("メニュー1が選ばれました。");
        break;
    case 2:
        Console.WriteLine("メニュー2が選ばれました。");
        break;
    case 3:
        Console.WriteLine("メニュー3が選ばれました。");
        break;
    default:
        Console.WriteLine("不正なメニュー番号です。");
        break;
}
C#

重要ポイント:

  • case ごとに break を書くのが基本です。
  • メニュー選択など、「番号で分岐する」場面でよく使われます。

ループ:for / while / foreach

for 文:回数が決まっている繰り返し

for は、

「決まった回数だけ繰り返す」

ためのループです。

for (int i = 0; i < 5; i++)
{
    Console.WriteLine($"i の値: {i}");
}
C#
  • int i = 0;:初期化
  • i < 5;:ループ継続条件
  • i++:1回ごとに i を増やす

重要ポイント:

  • 配列や List のインデックスを使うときに、for がよく使われます。

while 文:条件が true の間、繰り返す

while は、

「条件が true の間、ずっと繰り返す」

ためのループです。

int count = 0;

while (count < 3)
{
    Console.WriteLine($"count: {count}");
    count++; // 自分で増やさないと無限ループになります
}
C#

重要ポイント:

  • 「いつ終わるか」が条件で決まるループです。
  • 入力待ちやメニュー表示など、「終わりがユーザー次第」の処理に向いています。

foreach 文:コレクションを「1つずつ」なめる

foreach は、

「配列や List、Dictionary の要素を 1 つずつ取り出して処理する」

ための構文です。

string[] names = { "Alice", "Bob", "Charlie" };

foreach (string n in names)
{
    Console.WriteLine($"名前: {n}");
}
C#

重要ポイント:

  • インデックスを意識せず、「中身だけ」を順番に扱いたいときに便利です。

メソッド:処理をひとまとまりにして再利用する

メソッドの基本

メソッドは、

「名前のついた処理のかたまり」

です。

static void Greet(string name)
{
    Console.WriteLine($"こんにちは、{name} さん。");
}

static void Main(string[] args)
{
    Greet("太郎");   // メソッド呼び出し
    Greet("花子");   // 同じ処理を再利用
}
C#

重要ポイント:

  • メソッドは「入力(引数)」と「出力(戻り値)」を持てます。
  • 同じ処理を何度も書かずに済むようにするための仕組みです。

配列:固定長の「同じ型のデータの並び」

配列の基本

配列は、

「同じ型の値を、決まった数だけ並べて持つ箱」

です。

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

Console.WriteLine(scores[0]); // 80
Console.WriteLine(scores[1]); // 90

for (int i = 0; i < scores.Length; i++)
{
    Console.WriteLine($"インデックス {i}: {scores[i]}");
}
C#

重要ポイント:

  • 要素数は固定(途中で増やせない)です。
  • Length で要素数を取得します。

List:可変長の「同じ型のデータの並び」

List<T> の基本

List<T> は、

「あとから追加・削除できる配列のようなもの」

です。

using System.Collections.Generic;

List<int> scores = new List<int>();

scores.Add(80);  // 追加
scores.Add(90);
scores.Add(75);

scores.Remove(90);   // 値を指定して削除
scores.RemoveAt(0);  // インデックスを指定して削除

Console.WriteLine($"件数: {scores.Count}");

foreach (int s in scores)
{
    Console.WriteLine($"点数: {s}");
}
C#

重要ポイント:

  • Add / Remove / RemoveAt / Count が基本操作です。
  • 「件数が変わるデータ」を扱うときに便利です。

Dictionary:キーと値のペアで管理する

Dictionary<TKey, TValue> の基本

Dictionary<TKey, TValue> は、

「キー(名前など)と値(点数など)をセットで管理するコレクション」

です。

using System.Collections.Generic;

Dictionary<string, int> scores = new Dictionary<string, int>();

scores.Add("太郎", 80);
scores.Add("花子", 95);

// キーから値を取り出す
int taroScore = scores["太郎"];
Console.WriteLine($"太郎さんの点数: {taroScore}");

// キーが存在するかチェック
if (scores.ContainsKey("花子"))
{
    Console.WriteLine("花子さんは登録されています。");
}

// ループで一覧表示
foreach (var entry in scores)
{
    string name = entry.Key;
    int score = entry.Value;
    Console.WriteLine($"名前: {name}, 点数: {score}");
}
C#

重要ポイント:

  • 「名前 → 点数」「商品コード → 在庫数」など、 「何かのラベルと値を紐づけたい」場面で非常に強力です。

総復習テンプレート:ミニ成績管理プログラム

Day 30 の到達目標「自分で考えて書ける」に近づくために、 ここまでの要素をまとめた ミニ成績管理プログラムのテンプレートを示します。

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // 名前 → 点数 を管理する Dictionary
        Dictionary<string, int> scores = new Dictionary<string, int>();

        while (true) // メニューを繰り返し表示
        {
            Console.WriteLine("\n=== メニュー ===");
            Console.WriteLine("1: 成績登録");
            Console.WriteLine("2: 一覧表示");
            Console.WriteLine("3: 平均点表示");
            Console.WriteLine("0: 終了");
            Console.Write("番号を選んでください:");

            string? input = Console.ReadLine();

            if (input == "0")
            {
                Console.WriteLine("終了します。");
                break;
            }

            switch (input)
            {
                case "1":
                    Register(scores);
                    break;
                case "2":
                    ShowAll(scores);
                    break;
                case "3":
                    ShowAverage(scores);
                    break;
                default:
                    Console.WriteLine("不正な入力です。");
                    break;
            }
        }
    }

    // 成績登録
    static void Register(Dictionary<string, int> scores)
    {
        Console.Write("名前:");
        string? name = Console.ReadLine();

        Console.Write("点数:");
        string? text = Console.ReadLine();

        // 入力チェック
        if (string.IsNullOrWhiteSpace(name) || !int.TryParse(text, out int score))
        {
            Console.WriteLine("入力が不正です。");
            return;
        }

        scores[name] = score; // 既存なら上書き、新規なら追加
        Console.WriteLine("登録しました。");
    }

    // 一覧表示
    static void ShowAll(Dictionary<string, int> scores)
    {
        Console.WriteLine("=== 一覧 ===");

        if (scores.Count == 0)
        {
            Console.WriteLine("データがありません。");
            return;
        }

        foreach (var entry in scores)
        {
            Console.WriteLine($"名前: {entry.Key}, 点数: {entry.Value}");
        }
    }

    // 平均点表示
    static void ShowAverage(Dictionary<string, int> scores)
    {
        if (scores.Count == 0)
        {
            Console.WriteLine("データがありません。");
            return;
        }

        int sum = 0;

        foreach (var entry in scores)
        {
            sum += entry.Value;
        }

        double avg = (double)sum / scores.Count;
        Console.WriteLine($"平均点: {avg:F2}");
    }
}
C#

このテンプレートには、

  • 変数・型
  • 演算子(+/
  • if
  • switch
  • while
  • foreach
  • メソッド
  • Dictionary

がすべて登場しています。

Day 30 のまとめと次への橋渡し

Day 30 では、

  • 変数・型・演算子
  • if / switch
  • for / while / foreach
  • メソッド
  • 配列 / List / Dictionary

という C# の基礎の「柱」を一気に振り返り、 それらを組み合わせたミニプログラムのイメージまで確認しました。

Day 30 の到達目標である

「C#の基本的なプログラムを、自分で考えて書ける」

という状態は、

  • 何をしたいかを日本語で整理する
  • 必要な「変数」「条件分岐」「ループ」「コレクション」を選ぶ
  • それを C# の文法で組み立てていく

という流れを、自分で回せるようになることです。

ここから先は、

  • クラス・オブジェクト指向
  • 例外処理
  • LINQ
  • ファイル入出力
  • UI や Web

など、より高度な世界に進んでいきますが、 今日復習した基礎は、どこまで行ってもずっと使い続ける「土台」です。

ぜひ、

  • 自分で小さなプログラムのアイデアを考えて書いてみる
  • ここまでのサンプルを少しずつ改造してみる
  • 「こういうことできないかな?」と発想を広げてみる

といった形で、 「考えて、書いて、動かして、直す」サイクルを楽しみながら、次のステップへ進んでいってください。

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