今回はプログラムでは必ず必要になるif文、条件分岐によって処理を分ける仕組みについてです。
また、if文の構成で必ず必要になってくる演算子についても触れることになります。
前回までのおさらい
前回はC#での変数に触れてみました。
前回作成したコードをVisual Studioでプロジェクトを開きます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 10; /* int型変数を宣言と同時に値を代入する */ string str_text = "あいうえお"; /* string型変数を宣言と同時に値を代入する */ bool bool_sw = true; /* bool型変数を宣言と同時に値を代入する */ Console.WriteLine(int_i); Console.WriteLine(str_text); Console.WriteLine(bool_sw); Console.ReadLine(); /* ここまで追加します*/ } } }
このように変数の宣言と変数に値を代入するプログラムを作りました。
こんかいもこのソースを使うので前回作った部分が不要なのでコメント(/*~*/)の間の行を削除して準備します。
基本のif文
変数を使った単純なifを書きます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 1; if (int_i == 1) Console.WriteLine("変数int_iは1です。"); Console.ReadLine(); /* ここまで追加します*/ } } }
変数int_iが1であれば「変数int_iは1です。」が表示されますが、変数int_iが1以外は何も表示されません。
この様に書けるのは変数int_iが1の時の処理が1行だけの時だけです。
複数行の処理
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 1; if (int_i == 1) { Console.WriteLine("変数int_iは1です。"); Console.WriteLine("複数行の場合は{}で囲みます。"); } Console.ReadLine(); /* ここまで追加します*/ } } }
変数int_iが1の時の処理が2行以上あるばあいはその処理行を{}で囲みます。
当然ですが変数int_iが1以外の場合は何も表示されません。
不一致の判定
変数int_iが特定の値以外の時に処理するコードを書いてみます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 2; if (int_i == 1) { Console.WriteLine("変数int_iは1です。"); Console.WriteLine("複数行の場合は{}で囲みます。"); } else { Console.WriteLine("変数int_iは1以外です。"); Console.WriteLine("不一致の判定です。"); } Console.ReadLine(); /* ここまで追加します*/ } } }
不一致の判定はelseを使います。
変数int_iが1以外であれば「変数int_iは1以外です。」と「不一致の判定です。」が表示されます。
if文のネスト
if文をネストで書くことができます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 1; int int_j = 2; if (int_i == 1) { Console.WriteLine("変数int_iは1です。"); if (int_j == 2) { Console.WriteLine("変数int_jは2です。"); Console.WriteLine("if文をネストしました。"); } else { Console.WriteLine("変数int_jは2以外です。"); Console.WriteLine("変数int_j不一致の判定です。"); } } else { Console.WriteLine("変数int_iは1以外です。"); Console.WriteLine("変数int_i不一致の判定です。"); } Console.ReadLine(); /* ここまで追加します*/ } } }
変数int_iが1でならば「変数int_iは1です。」が表示されます。
変数int_iが1以外は「変数int_iは1以外です。」と「変数int_i不一致の判定です。」が表示されます。
更に変数int_jが2ならば「変数int_jは2です。」と「if文をネストしました。」が表示されます。
int_jが2以外は「変数int_jは2以外です。」と「変数int_j不一致の判定です。」が表示されます。
if文をネストしている個所はインデントして書いていますが、インデントは無くても動作には影響ありませんがコードを見やすくするためにもインデントするのが通例です。
if文をネストして2つの変数に対して条件比較しましたが他の書き方も可能です。
複数アイテムを同時に条件比較
ややこしくなるので先ほどまでのコードを1度けしましょう。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testProjects { class Program { static void Main(string[] args) { /* ここから追加します */ int int_i = 1; int int_j = 2; if (int_i == 1 && int_j == 2) { Console.WriteLine("int_iは1です。"); Console.WriteLine("int_jは2です。"); } else { Console.WriteLine("int_iが1以外の可能性があります。"); Console.WriteLine("int_jが2以外の可能性があります。"); } Console.ReadLine(); /* ここまで追加します*/ } } }
変数int_iが1で且つint_jが2であれば「int_iは1です。」と「int_jは2です。」が表示されます。
int_iまたはint_jのいずれかが不一致であれば「int_iが1以外の可能性があります。」と「int_jが2以外の可能性があります。」が表示されます。
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以下 |
論理演算子
演算子 | 使い方 | 解説 |
&& | a = 1 && b = 2 | aは1で且つbは2(AND) |
|| | a = 1 || a = 2 | aは1又は2(OR) |
演算子は他にも存在するので必要に応じて調べてみて下さい。
if文と関係演算子、論理演算子について触れてきました。
ではまた次回!!。
コメント