C#でループの中に条件分岐を書く方法!入れ子制御構造の基本
生徒
「C#で繰り返し処理をしている途中で、条件によって違う動きをさせることってできますか?」
先生
「はい、できますよ。C#ではループの中にif文を入れることで、条件に応じた処理を繰り返すことができます。」
生徒
「それって難しくないですか?どんな風に書くのか想像がつかなくて…」
先生
「心配いりません。とてもシンプルなので、一緒に見ていきましょう!」
1. ループとは?
ループとは、同じ処理を何回も繰り返して行うためのしくみです。たとえば、数字を1から10まで順番に表示したいときなどに使います。
C#では、for文、while文、foreach文などのループがあります。この記事では、代表的なfor文を使って説明します。
2. 条件分岐とは?
条件分岐とは、「ある条件に合っているかどうか」によって処理を変えることです。C#では、if文を使って条件分岐を行います。
たとえば、「もしスコアが60点以上だったら合格と表示する」といった処理ができます。
3. ループの中にif文を入れるとは?
for文などのループの中に、if文を組み合わせることで、繰り返しの中で条件に応じた処理を行うことができます。これを「入れ子(ネスト)構造」といいます。
たとえば、「1から10までの数字のうち、偶数だけを表示したい」といった処理に使えます。
4. 具体的なコード例を見てみよう
以下は、1から10までの数字をループで回して、その中で偶数だけを表示する例です。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
Console.WriteLine(i + " は偶数です。");
}
}
実行結果:
2 は偶数です。
4 は偶数です。
6 は偶数です。
8 は偶数です。
10 は偶数です。
5. コードの解説
for (int i = 1; i <= 10; i++)の部分は、「iを1から始めて10まで1ずつ増やしながら繰り返す」という意味です。
if (i % 2 == 0)は、「iを2で割った余りが0、つまり偶数のときに」という条件です。
このように、ループの中に条件分岐を入れることで、「繰り返しの中でも、条件を見て処理を分ける」ということができます。
6. もっとわかりやすい例で確認しよう
次は、10人の生徒のテストの点数があって、60点以上なら「合格」と表示する例です。
int[] scores = { 55, 78, 62, 45, 90, 33, 70, 85, 59, 60 };
for (int i = 0; i < scores.Length; i++)
{
if (scores[i] >= 60)
{
Console.WriteLine((i + 1) + "番目の生徒は合格です(" + scores[i] + "点)");
}
}
実行結果:
2番目の生徒は合格です(78点)
3番目の生徒は合格です(62点)
5番目の生徒は合格です(90点)
7番目の生徒は合格です(70点)
8番目の生徒は合格です(85点)
10番目の生徒は合格です(60点)
7. 入れ子構造の注意点
入れ子(ネスト)が深くなりすぎると、コードが読みにくくなったり、バグの原因になったりします。
たとえば、ループの中にifがあって、さらにその中に別のifがあると、だんだん見づらくなってしまいます。
なるべく入れ子を深くしすぎず、処理を分けたり、メソッドを使って整理するのがよい方法です(今回はメソッドの説明は省略)。
8. 入れ子構造の応用アイデア
ループの中にif文を入れるテクニックは、いろんな場面で使えます。たとえば:
- 複数の条件に応じて、異なるメッセージを出す
- 条件に応じて合計点を計算する
- 特定の条件を満たすデータだけを処理する
現実のプログラムでもとてもよく使う基本テクニックなので、しっかり身につけておきましょう。