第4章: 制御フロー

csharp-control-flow-guide

C#プログラムでは、条件に応じて処理の流れを制御することが重要です。この「制御フロー」を適切に使うことで、プログラムが論理的かつ効率的に動作するように設計できます。この章では、条件分岐やループ処理、そしてそれらを制御するための文法を詳しく解説していきます。

4.1 if-else文による条件分岐

if-else文は、特定の条件に基づいて異なる処理を行うための基本的な構文です。条件式がtruefalseかによって、実行される処理が変わります。

基本構文

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つのループ構文としてforwhiledo-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文の使い方

ループや制御フローの中で、処理を中断したり次の反復に進めるためにbreakcontinuereturn文を使います。

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文により、メソッドAdda + bの計算結果を呼び出し元に返します。

例えば、a = 10b = 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文は、条件に基づいて特定のラベル(PositiveNegative)にジャンプします。

– ここでは、numberが正であれば「Number is positive」が表示され、その後「End of program」が出力されます。

まとめ

この章では、C#における制御フローの基本的な構文と使い方を詳しく学びました。if-else文やswitch文を使った条件分岐、for, while, do-whileによる繰り返し処理、さらにbreak, continue, returnによるループの制御方法について理解できたと思います。制御フローを効果的に使うことで、プログラムの柔軟性と効率を向上させることができます。また、goto文のような特定の状況で役立つが、通常避けるべき構文についても学びました。これらの知識を活用して、より洗練されたコードを記述できるようになりましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次