【C#】C#制御構文の基本 - 簡単に理解する条件分岐とループの使い方
2024-08-19
2024-08-19
プログラミングでは、決まった順序でしか動かないと、実用的なプログラムが作れません。そこで登場するのが制御構文です。制御構文を使うと、プログラムの流れを変えたり、同じ処理を繰り返したりできます。これをうまく使いこなすと、柔軟で賢いプログラムを作ることができるようになります。
今回は、C#
の主要な制御構文であるif
文、switch
文、for
ループ、while
ループについて、わかりやすく解説していきます。
if文
if
文は「もしも~なら」という条件を使って、どの処理を実行するかを決めるために使います。たとえば、スーパーでレジに立っている時、「もし20歳以上ならお酒を売る」といった場面をプログラムにするなら、if
文を使います。
基本的な if 文
「もし20歳以上なら成人」と表示するプログラムはこんな感じです。
int age = 20;
if (age >= 18)
{
Console.WriteLine("成人です。");
}
この場合、年齢が18歳以上なら「成人です。」というメッセージが表示されます。
if-else 文
「もし合格点を取ったら合格、それ以外は不合格」といった場合、else
を使って次のように書けます。
int score = 75;
if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
この例では、点数が60点以上なら「合格」、それ未満なら「不合格」と表示されます。
if-else if-else 文
条件がいくつかある場合はどうするのでしょう?たとえば、成績に応じて「A」「B」「C」「D」を表示するなら、else if
を使ってこう書きます。
int grade = 85;
if (grade >= 90)
{
Console.WriteLine("A");
}
else if (grade >= 80)
{
Console.WriteLine("B");
}
else if (grade >= 70)
{
Console.WriteLine("C");
}
else
{
Console.WriteLine("D");
}
これで、点数に応じて適切な成績が表示されるようになります。
三項演算子(条件演算子)
もしもif-else
文が1行で済むなら、三項演算子を使うことで短く書くことができます。たとえば、「成人」か「未成年」を判定する場合です。
int age = 20;
string status = (age >= 18) ? "成人" : "未成年";
Console.WriteLine(status);
このコードは、if-else
を短くした形ですが、同じ働きをします。
switch文
switch
文は、「どの条件が当てはまるか」によって、複数の選択肢から1つの処理を選ぶときに使います。たとえば、「今日は何曜日?」という質問に対して、月曜なら「月曜日」、火曜なら「火曜日」と表示する場合、switch
文が便利です。
基本的な switch 文
たとえば、曜日に応じて違うメッセージを表示するなら、次のように書きます。
int dayNumber = 3;
switch (dayNumber)
{
case 1:
Console.WriteLine("月曜日");
break;
case 2:
Console.WriteLine("火曜日");
break;
case 3:
Console.WriteLine("水曜日");
break;
case 4:
Console.WriteLine("木曜日");
break;
case 5:
Console.WriteLine("金曜日");
break;
case 6:
case 7:
Console.WriteLine("週末");
break;
default:
Console.WriteLine("無効な日数");
break;
}
このコードでは、曜日の数字に応じてメッセージが変わります。数字が6か7なら「週末」と表示され、それ以外の場合は対応する曜日が表示されます。
forループ
forループは、決まった回数だけ何度も繰り返し処理を実行するための構文です。たとえば、「りんごを5個並べる」という作業をプログラムにすると、for
ループが役立ちます。
基本的な for ループ
たとえば、カウントを5回表示するプログラムはこんな感じです。
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"カウント: {i}");
}
これを実行すると、0
から4
までの数字が順番に表示されます。
配列やコレクションの反復処理
複数のデータが並んでいる「配列」もfor
ループで簡単に処理できます。たとえば、フルーツの名前を表示する場合は次のように書きます。
string[] fruits = { "りんご", "バナナ", "オレンジ" };
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
これで、りんご
, バナナ
, オレンジ
が順番に表示されます。
foreach ループ
foreach
ループを使えば、配列の要素をもっと簡単に反復処理できます。
string[] colors = { "赤", "青", "緑" };
foreach (string color in colors)
{
Console.WriteLine(color);
}
このコードでは、各色が順番に表示されます。
whileループ
whileループは、ある条件が満たされる限り、何度でも繰り返す処理を実行します。たとえば、「車の燃料がある限り走る」といった場合、while
ループが使えます。
基本的な while ループ
たとえば、5回カウントするプログラムは次のように書けます。
int count = 0;
while (count < 5)
{
Console.WriteLine($"カウント: {count}");
count++;
}
このコードでは、カウントが5
になるまで、ループが繰り返されます。
do-while ループ
do-whileループは、少なくとも1回は処理を実行してから、条件をチェックします。たとえば、数字を入力するプログラムにぴったりです。
int number;
do
{
Console.Write("1から10までの数字を入力してください: ");
number = int.Parse(Console.ReadLine());
} while (number < 1 || number > 10);
Console.WriteLine($"入力された数字: {number}");
このコードでは、1から10までの数字が入力されるまで、何度でも入力を求められます。
制御構文の組み合わせ
実際のプログラムでは、これらの制御構文を組み合わせて使うことが一般的です。たとえば、1から10までの数字を調べて、偶数か奇数かを判定するプログラムは次のように書けます。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
Console.WriteLine($"{i} は偶数です");
}
else
{
Console.WriteLine($"{i} は奇数です");
}
}
このコードでは、1から10までの数字が順に表示され、偶数か奇数かを判定しています。
まとめ
C#の制御構文は、プログラムの流れをコントロールするために欠かせない道具です。if
文で条件分岐を行い、switch
文で選択肢を整理し、for
やwhile
ループで繰り返し処理を実行します。
これらの構文を組み合わせることで、より複雑で柔軟なプログラムを作成することができるようになります。