if文の使い方その3
今回のC#プログラミング学習も、前回の続きで、分岐処理のif文を学んでいきます。
プログラム例
まずは今回学んでいくC#プログラム例を見てみましょう。
using System; namespace Sample { internal class Program { static void Main(string[] args) { Console.Write("整数値を入力:"); int nNumber = int.Parse( Console.ReadLine() ); // 入力された値を調べる if (nNumber == 0) { Console.Write("ゼロが入力されました"); } else if (nNumber > 0) { Console.Write("正の数が入力されました"); } else if (nNumber < 0) { Console.Write("負の数が入力されました"); } else { Console.Write("入力値を特定できませんでした"); } Console.ReadLine(); } } }
ダウンロードしたZIPファイルを解凍して、「Sample.sln」を開くとVisualStudioが立ち上がってきます。
ビルドメニューから「ソリューションのビルド」を選択し、ビルドします。
ビルドが成功したら、F5キーを押してプログラムを動かします。
整数値の入力を促されるので、「1」を入力しEnterキーを押します。
すると「正の数が入力されました」と表示されるので、Enterキーを押すとプログラムが終了します。
今回は分岐処理なので、もう一度F5キーを押してプログラムを立ち上げます。
ちなみにこの時点で、何も入力しないでEnterキーを押した場合は、例外処理が発生してしまうので、必ず何らかの数値を入力します。
今度は「0」を入力してEnterキーを押します。
すると、今度は「ゼロが入力されました」と表示されるので、Enterキーを押すとプログラムが終了します。
さらにもう一度F5キーを押してプログラムを立ち上げます。
最後は「-1」を入力してEnterキーを押します。
すると、「負の数が入力されました」と表示されるので、Enterキーを押してプログラムを終了させます。
プログラム解説
上記のプログラム例について解説します。
数値の入力
まずは、整数値の入力を促すメッセージを表示し、ユーザーが入力した数値を受け取ります。
Console.Write("整数値を入力:"); int nNumber = int.Parse( Console.ReadLine() );
ユーザーからの入力は、以前学習したように「Console.ReadLine」で行いますが、今回は、入力された文字を数値として扱っていきたいので、「int.Parse」のカッコに入れて使っています。
「int.Parse( Console.ReadLine() )」とすることで、int型の変数で数値を受け取ることができます。
入力値の判断
次に、入力された値をif文で判断し、その後の処理を分けます。
今回学習するif文のパターンは以下のような感じです。
if ( 条件式その1 ) { 条件式その1が成立したときに行われる処理 } else if ( 条件式その2 ) { 条件式その2が成立したときに行われる処理 } else { すべての条件式が成立しなかったときに行われる処理 }
上から順に条件式が成立するかどうかを調べます。
「if」「else if」に関係なく、カッコ内の条件式が成立していれば、その後に続く「{」から「}」に囲まれている部分が実行されます。
一度でも条件式が成立したら条件分岐を抜けます。
すべての条件式が成立しなかった場合には、elseの後の「{」から「}」に囲まれている部分が実行されます。
中央部分の「else if ( 条件式 ) { 条件式が成立していたら実行される部分 }」はいくつでも追加することが可能です。
今回のプログラム例では、以下のようになっています。
if (nNumber == 0) { Console.Write("ゼロが入力されました"); } else if (nNumber > 0) { Console.Write("正の数が入力されました"); } else if (nNumber < 0) { Console.Write("負の数が入力されました"); } else { Console.Write("入力値を特定できませんでした"); } Console.ReadLine();
if文で変数nNumberを評価します。
条件式は「nNumber == 0」です。
この条件式は、変数nNumber内の数値がゼロかどうかを調べるものです。
「==」というのは、「==」の左辺と右辺が等しかったら成立という意味があります。
なので、ユーザーが「0」を入力した場合は、変数nNumberの値も「0」になるので、条件式が成立し、「Console.Write("ゼロが入力されました")」が実行され条件分岐を抜けます。
しかし、「0」以外の数値を入力してしまった場合には、この条件式が成立しないので、二つ目の条件式に進みます。
二つ目の条件式は、「nNumber > 0」です。
この条件式は、変数nNumber内の数値がゼロより大きいかどうかを調べるものです。
「>」というのは、「>」の左辺の値が右辺よりも大きかったら成立という意味があります。
なので、ユーザーが「1」を入力した場合は、変数nNumberの値も「1」になるので、条件式が成立し、「Console.Write("正の数が入力されました")」が実行され条件分岐を抜けます。
しかし、「0」より小さい数値を入力してしまった場合には、ここまでの条件式がすべて成立しないので、三つ目の条件式に進みます。
三つ目の条件式は、「nNumber < 0」です。
この条件式は、変数nNumber内の数値がゼロより小さいかどうかを調べるものです。
「<」というのは、「<」の左辺の値が右辺よりも小さかったら成立という意味があります。
なので、ユーザーが「-1」を入力した場合は、変数nNumberの値も「-1」になるので、条件式が成立し、「Console.Write("負の数が入力されました")」が実行され条件分岐を抜けます。
プログラム例では、整数値が入力されることが前提になっているので、それ以外の数値というのはありえないんですが…。
ここまでのすべての条件式が成立しなかった場合は、elseに続く「{」から「}」に囲まれている部分が実行されます。
そして、どの部分の条件式が成立したとしても「Console.ReadLine」は実行されるので、プログラムが最後に一時停止されるという感じです。
まとめ
これがif文の基本になります。