C#初心者によるC#のお勉強やろう03 条件分岐編

最近寒くなりましたね。風邪には気をつけましょうね。el(える)です。

 

今回は分岐条件をやっていこうと思います。

 分岐条件とは条件に応じて処理を変化させる方法です 

 

当たり判定の条件

当たり条件のプログラムを書いていきましょう。

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            //人の位置
            int playerPos = 7;
            //モンスターの位置
            int enemyPos = 10;

            if(playerPos == enemyPos)
            {
                Console.WriteLine("接触しました");
            }
        }
    }
}

playerPosを人の位置、enemyPosをモンスターの位置として宣言しています。

このプログラムを実行しても位置が違うため表示はされません。

if文の書式

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {

            if (条件式)
            {
                条件式を満たしたときに実行する処理
            }
            
        }
    }
}

 

if文は条件式の真偽によって処理の流れを変えられます。

条件式が真の場合は{}の中に書いたプログラムが実行されます。

偽の場合は、{}の中の処理は実行されません。

if文

条件式は関係演算子を使います。

左辺と右辺が等しいかどうかを調べる==演算子をつかっています。

演算子は他にもあります。

演算子 使用例 意味
== a == b aとbが等しければ真
!= a != b aとbが等しくなければ真
> a > b aがbより大きければ真
>= a >= b aがb以上なら真
< a < b aがbより小さければ真
<= a <= b aがb以下なら真

 

スコープ

プログラム内の{}で囲まれた部分をブロックと呼び、プログラムコードのまとまりを示しています。

 変数は、宣言したブロック内でのみ使うことができます。 

これを変数のスコープ(有効範囲)といいます。

また、if文やメソッドなどのブロック内で宣言した変数をローカル変数といいます。

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5; ←if文の範囲外で宣言
            if (a == 5)
            {
                int b = 10; ←if文の範囲で宣言
            }
            Console.WriteLine(a); ←if文の外で定義しているので有効範囲となり実行される
            Console.WriteLine(b); ←if文の中の変数なので有効範囲外でエラーとなる
        }
    }
}

 

2つの条件を同時に満たす

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int Player1Pos = 3;
            int Player2Pos = 8;

            if (Player1Pos == 3)
            {
                if(Player2Pos == 8)
                {
                    Console.WriteLine("2つの条件が満たされました");
                }
            }
        }
    }
}

 

このプログラムではif文を入れ子(if文の中にif文を書く)ようにしています。

条件式をシンプルに書くこともできます。

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int Player1Pos = 3;
            int Player2Pos = 8;

            if (Player1Pos == 3 && Player2Pos == 8)
            {
                Console.WriteLine("2つの条件が満たされました");
            }
        }
    }
}

 

 複数の条件を満たしたときだけ処理を実行 するには、条件式を&&演算子で繋ぎます。

 複数の条件のうち1つでも満たせば処理を実行 するには||演算子で繋ぎます。

条件式はいくつ繋げてもよいです。

アクションを変えよう

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int Player1Pos = 3;


            if (Player1Pos >= 0)
            {
                Console.WriteLine("歩く");
            }
            else
            {
                Console.WriteLine("泳ぐ");
            }
        }
    }
}

 

今回のプログラムはプレイヤが地上にいるときは歩く、地上にいないときは泳ぐ動作をします。

条件を満たす場合と満たさない場合で異なる処理をするには、

if~else文を使います。

if~else文の書式

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {

            if (条件式)
            {
                条件を満たす場合の処理
            }
            else
            {
                条件を満たさない場合の処理
            }
           
        }
    }
}

 

if文の後ろにelseブロックがくっつきます。

 条件式が満たされた場合は条件式に続くブロック内の処理が実行 され、

 満たされない場合はelseに続くブロック内の処理が実行 されます。

 

if_else

動作を変えよう

3種類以上の場合分けをしたい時は次のプログラムを使います。

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int mapType = 3;


            if (mapType == 0)
            {
                Console.WriteLine("歩く");
            }
            else if(mapType == 1)
            {
                Console.WriteLine("泳ぐ");
            }
            else if(mapType == 2)
            {
                Console.WriteLine("走る");
            }
            else
            {
                Console.WriteLine("止まる");
            }
        }
    }
}

 

このプログラムではmapTypeの数値によってアクションが変わっています。

このように、 条件式が複数必要な場合はif~else if~else文 を使います。

 

if~else if~else文の書式(else ifは複数書くことが出来ます)

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {

            if (条件式)
            {
                条件を満たす場合の処理
            }
            else if (条件式) 
            {
                条件を満たす場合の処理
            }
            else
            {
                条件を満たさない場合の処理
            }
            
        }
    }
}

 

if~else if~else文は上から 順番に条件式をチェックし、真の場合は条件式に続くブロックの処理を実行 します。

 どの条件にも満たさない場合には、最後のelseブロックの処理が実行 されます。

switch文

3種類以上の場合に分けて条件を指定するときはif~else if~else文のかわりに、

switch文が使われる時があります。

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int mapType = 3;

            switch (mapType)
            {
                case 0:
                    Console.WriteLine("歩く");
                    break;
                case 1:
                    Console.WriteLine("泳ぐ");
                    break;
                case 2:
                    Console.WriteLine("走る");
                    break;
                default:
                    Console.WriteLine("止まる");
                    break;
            }
           
           
        }
    }
}

 

switch文の書式

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

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {

            switch (条件式)
            {
                case 定数1:
                    文1・・・
                    break;
                case 定数2:
                    文2・・・
                    break;
                default:
                    文D・・・
                    break;
            }
            
        }
    }
}

 

 switch文内の条件式がcaseのあとの定数と一致すれば 

 そのあとに続く文からbreakまでの文を実行 します。

 

どれにもあてはまらなければ、default:の文を実行します。

default:は省略することも可能です。

 

終わりに

今回はif文でしたね。

これもシェルとかバッチとかWSHとかでも出てきたので問題なさそうです。

ちゃんと覚えておりました。

文法的にも難しくはないはずです。

でもまだ不安だから勉強のために以下の本が欲しいなぁ。

でもお金がない。。。

 

それではまた次回。

シェアしてくれたら嬉しいです!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です