【C#】分岐を書く方法 | if 文を使用する方法

この記事では C# で重要(C# だけでなく、プログラミングとして重要)な「分岐」の使い方を解説していきます。分岐とはいわゆる「条件」になり、プログラミングでは条件がとても大事になるので重要なトピックです。

分岐で何ができるか

分岐を学ぶことで何ができるかについて、まずは簡単に解説していきます。

分岐とは「Aだったら・・・Bだったら・・・」と条件で処理を「分けて」書くことができる構文です。私たちの実生活の中でも「卵が売ってたら買おう」とか「ワンピースの最新刊が売っていたら買おう」みたいな判断をしていますよね。雨が降りそうだから傘を持とう、歩くよりもバスを使おうなどなど。

私たちは行動を特定の条件によって分けて、その時に合わせて柔軟に対応しています。これこそが、まさに「分岐」といえます。アプリケーションの構築では「条件」によって「処理を分ける」ことを「分岐」とするのです。

2で割り切れたら「偶数です。」と表示し、2で割った余りが1だったら「奇数です。」と表示する

こんな感じのことを「分岐」で対応していきます。この構文を学ぶことでプログラミングの処理を制御することが可能になります。これがプログラミングに強力な柔軟性をもたらすということです。

C#で分岐を書く方法

C#で分岐を書くには「if文」という構文を使用します。いくつか書き方の種類があるのですが、まずは最もシンプルな分岐から始めていき、全部で3つの書き方をマスターします。

if ~ 構文の書き方

最もシンプルなif文は以下のような構文で記述することができます。

if( 条件式 )
{
    
}

上記の構文を使用して簡単なサンプルから書いていきたいと思います。新しいアプリを作成して、以下のプログラムを書いて、入力値が「apple」と「banana」の2パターンで実行してみてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("あなたが好きな果物はappleですか?それともbananaですか?");
            string input = Console.ReadLine();

            if(input == "apple")
            {
                Console.WriteLine("リンゴは健康にいいですね。");
            }
            Console.WriteLine("処理を終了します。");
            Console.ReadLine();
        }
    }
}

サンプルの中で「if (input == “apple”)」と記述をしました。「==」は右辺と左辺を比べる「演算子」になります。右辺と左辺を比べて「同じ」であれば真、違っていれば「偽」となる演算子です。入力値が「apple」と「banana」でメッセージが違うのでわかると思います。

「同じ値である」は「同値」と言ったりもします。

if ~ 構文はカッコ内に記述した条件を満たす場合は波括弧(”{ }”)の中を処理し、条件を満たさない場合は波括弧の中に入らない処理になります。ここでの「条件を満たす」というのは「入力値が”apple”である場合」になります。要するにif文の括弧内が真(True)になる場合です。

if ~ else ~ 文の書き方

次に学ぶのは複数の条件を「並列」で書きたい場合の書き方です。if ~ 文では「特定の条件を満たす場合は、○○の処理をする」というような感じでした。今回やりたいのは「Aだったら○○の処理、Bだったら××の処理をする」というような処理が並列の場合です。

if( 条件式 )
{
    
}
else
{

}

if ~ else ~ 文の公式は上記のようになります。早速以下のサンプルコードを新規のアプリケーションを作成してください。今回も入力値を「apple」「banana」、「peach」で試してみましょう。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App02
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("あなたはappleとそれ以外の果物でどちらを知りたいですか?");
            string input = Console.ReadLine();

            if(input == "apple")
            {
                Console.WriteLine("リンゴは赤い果物です。");
            }
            else
            {
                Console.WriteLine("リンゴ以外の果物です。");
            }

            Console.WriteLine("処理を終了します。");
            Console.ReadLine();
        }
    }
}

サンプルが雑な気がしますが、これでも説明として十分に説明できる内容です。入力値がappleであれば「リンゴは赤い果物です。」を表示し、bananaとpeachの場合は、「リンゴ以外の果物です。」を表示します。このように、if ~ else ~ 文は「特定の条件」と「それ以外の時」で処理を分けられます。

なお、if ~ 文とif ~ else ~ 文の違いで分かると気付いたかもしれませんが、else ~ の部分は記述しなくても問題ありません。ただしif ~ の部分は必ず記述する必要があるので忘れないようにしてください。

if ~ else if ~ else ~ 文の書き方

では最後に複数の条件を並列に書きたいとき、またその条件に合致しない場合の処理を記載したい場合に使える構文であるif ~ else if ~ else ~ 文を紹介します。新しいプロジェクトを作成して以下のサンプルを書いて実行してみましょう。今回の入力値も前回と同様に「apple」「banana」「peach」で試してみてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App03
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("apple, banana, peachのどれかを入力してください。");
            string input = Console.ReadLine();

            if(input == "apple")
            {
                Console.WriteLine("リンゴは赤い果物です。");
            }
            else if(input == "banana")
            {
                Console.WriteLine("バナナは黄色い果物です。");
            }
            else
            {
                Console.WriteLine("リンゴとバナナ以外の果物です。");
            }

            Console.WriteLine("処理を終了します。");
            Console.ReadLine();
        }
    }
}

ちなみにpeach以外の入力値を入力しても「リンゴとバナナ以外の果物です。」が画面に表示されます。if ~ else if ~ else ~ 文は「特定の複数の条件」と「それ以外の場合」を記述することができます。

また、if ~ else if ~ 文としてelse ~ の部分を抜いても問題なく動作します。是非とも試しに作ってみてください。また、上記のサンプルは以下のようにも作ることができるので、新規プロジェクトを作って試してみましょう。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App04
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("apple, banana, peachのどれかを入力してください。"); 
            string input = Console.ReadLine(); 
            
            if (input == "apple")
            {
                Console.WriteLine("リンゴは赤い果物です。"); 
            }
            else
            {
                if (input == "banana")
                {
                    Console.WriteLine("バナナは黄色い果物です。");
                }
                else
                {
                    Console.WriteLine("リンゴとバナナ以外の果物です。");
                }
            }

            Console.WriteLine("処理を終了します。"); 
            Console.ReadLine();
        }
    }
}

先ほどのサンプルと同じ処理をするプログラムですが、記述方法が異なるように見えますね。あなたは先ほどのプログラムとこのプログラムのどちらが読みやすいと思いますか?私は断然、先ほどのサンプルのほうが読みやすいと感じます。

同じ処理内容をするプログラムでも、このように違う書き方で実現できます。こういう時に重要になるのが「読みやすさ」や「理解しやすさ」です。意外と審美眼が養われるのがプログラミングでもあるのです。

以上、C#で記述するif文の書き方を紹介しました。様々なパターンから、その状況に最適な書き方を考えて処理を実現させるのがプログラミングの醍醐味でもありますので、ここで解説した内容は超重要事項・必須知識といっても良いでしょう。