C#プログラムでは、条件に応じて処理の流れを制御することが重要です。この「制御フロー」を適切に使うことで、プログラムが論理的かつ効率的に動作するように設計できます。この章では、条件分岐やループ処理、そしてそれらを制御するための文法を詳しく解説していきます。
4.1 if-else文による条件分岐
if-else
文は、特定の条件に基づいて異なる処理を行うための基本的な構文です。条件式がtrue
かfalse
かによって、実行される処理が変わります。
基本構文
int number = 10;
if (number > 0)
{
Console.WriteLine("Number is positive.");
}
else
{
Console.WriteLine("Number is not positive.");
}
解説
– if
キーワードの後に続く括弧内の条件式がtrue
の場合、if
ブロック内のコードが実行されます。
– 条件式がfalse
の場合、else
ブロック内のコードが実行されます。
この例では、number
が正の数であれば「Number is positive.」が出力され、そうでなければ「Number is not positive.」が出力されます。
else-ifによる複数条件の評価
int number = 0;
if (number > 0)
{
Console.WriteLine("Number is positive.");
}
else if (number < 0)
{
Console.WriteLine("Number is negative.");
}
else
{
Console.WriteLine("Number is zero.");
}
この例では、number
が正、負、またはゼロであるかを判定し、それぞれに応じたメッセージが表示されます。
4.2 switch文の活用とケースラベル
switch
文は、特定の変数や式の値に応じて、複数のケースに分岐することができる構文です。switch
文は、if-else
文の代わりに使われることが多く、数値や文字列の値に基づいて処理を分岐させる場合に非常に便利です。
基本構文
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
default:
Console.WriteLine("Invalid day");
break;
}
解説
– switch
文では、最初に評価する変数(この場合はday
)を指定します。
– case
の後に、特定の値に対する処理を記述します。ここではday
が1なら「Monday」、2なら「Tuesday」、3なら「Wednesday」が表示されます。
– 各case
ブロックの最後にbreak
文を入れることで、他のcase
ブロックに処理が進むことを防ぎます。
– default
は、どのcase
にも一致しなかった場合の処理です。
この例では、day
が3なので、「Wednesday」が表示されます。
4.3 ループ処理 (for, while, do-whileの使い分け)
プログラム内で同じ処理を繰り返す場合、ループ構文を使います。C#では、代表的な3つのループ構文としてfor
、while
、do-while
が用意されています。それぞれの使い方と用途を詳しく見ていきましょう。
forループ
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
解説
結果として、0から4までの数値が順番に出力されます。
whileループ
int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
解説
– while
ループは、条件がtrue
の間、ループを続けます。
– この例では、i
が5未満である限りi
の値が出力されます。i++
で変数i
の値が毎回増加します。
結果として、0から4までの数値が表示されます。
do-whileループ
int i = 0;
do
{
Console.WriteLine(i);
i++;
} while (i < 5);
解説
この例でも、0から4までの数値が表示されますが、1回は必ず実行されるという特徴があります。
4.4 break, continue, return文の使い方
ループや制御フローの中で、処理を中断したり次の反復に進めるためにbreak
やcontinue
、return
文を使います。
break文
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
Console.WriteLine(i);
}
解説
– このfor
ループでは、i
が5に達したときにbreak
文が実行され、ループが中断されます。
結果として、0から4までが表示され、その後ループが終了します。
continue文
for (int i = 0; i < 5; i++)
{
if (i == 2)
{
continue;
}
Console.WriteLine(i);
}
解説
– i
が2になったときにcontinue
文が実行され、この回のループはスキップされます。
– そのため、2は出力されず、0, 1, 3, 4が表示されます。
return文
static int Add(int a, int b)
{
return a + b;
}
解説
– return
文により、メソッドAdd
はa + b
の計算結果を呼び出し元に返します。
例えば、a = 10
とb = 5
であれば、結果として15が返されます。
4.5 goto文とラベルの適切な使い方
goto
文は、プログラム内で特定のラベルにジャンプするために使用されますが、一般的には使用が推奨されません。理由は、コードの可読性が低下し、複雑になりやすいためです。
int number = 5;
if (number > 0)
{
goto Positive;
}
Negative:
Console.WriteLine("Number is negative");
goto End;
Positive:
Console.WriteLine("Number is positive");
End:
Console.WriteLine("End of program");
解説
– goto
文は、条件に基づいて特定のラベル(Positive
やNegative
)にジャンプします。
– ここでは、number
が正であれば「Number is positive」が表示され、その後「End of program」が出力されます。
まとめ
この章では、C#における制御フローの基本的な構文と使い方を詳しく学びました。if-else
文やswitch
文を使った条件分岐、for
, while
, do-while
による繰り返し処理、さらにbreak
, continue
, return
によるループの制御方法について理解できたと思います。制御フローを効果的に使うことで、プログラムの柔軟性と効率を向上させることができます。また、goto
文のような特定の状況で役立つが、通常避けるべき構文についても学びました。これらの知識を活用して、より洗練されたコードを記述できるようになりましょう。
コメント