- Day 30 のゴールと全体像
- 変数と型
- 演算子
- if 文
- switch 文
- for 文
- while 文
- foreach 文
- メソッド
- 配列
- List
- Dictionary
- 総復習ミニテンプレート:簡単な成績プログラム
- Day 30 のまとめ
- Day 30 のゴールと全体像
- 変数と型:プログラムの「箱」と「中身」
- 演算子:値を計算し、比較し、組み合わせる
- 条件分岐:if と switch
- ループ:for / while / foreach
- メソッド:処理をひとまとまりにして再利用する
- 配列:固定長の「同じ型のデータの並び」
- List:可変長の「同じ型のデータの並び」
- Dictionary:キーと値のペアで管理する
- 総復習テンプレート:ミニ成績管理プログラム
- Day 30 のまとめと次への橋渡し
Day 30 のゴールと全体像
Day 30 は、ここまで学んできた C# の基礎を一気に振り返る総復習の日です。
復習する流れは次のとおりです。
- 変数
- 型
- 演算子
- if
- switch
- for
- while
- foreach
- メソッド
- 配列
- List
- Dictionary
これらは、今後どんなプログラムを書くときにも「必ず土台になる」要素です。 ここでは、1つの小さなサンプルプログラムをイメージしながら、各要素をつなげて復習していきます。
変数と型
変数とは
変数は、
「値を一時的に保存しておくための名前付きの箱」
のようなものです。
int age = 20; // 年齢を保存する箱
string name = "太郎"; // 名前を保存する箱
C#ageやnameが「箱の名前」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#ageやnameが「箱の名前」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
など、より高度な世界に進んでいきますが、 今日復習した基礎は、どこまで行ってもずっと使い続ける「土台」です。
ぜひ、
- 自分で小さなプログラムのアイデアを考えて書いてみる
- ここまでのサンプルを少しずつ改造してみる
- 「こういうことできないかな?」と発想を広げてみる
といった形で、 「考えて、書いて、動かして、直す」サイクルを楽しみながら、次のステップへ進んでいってください。

