Unity:C#でif文(もし~したら~する)の書き方/比較演算子/論理演算子

例えばあなたが自動販売機に1000円札を入れたとしましょう。そして130円のリンゴジュースを購入しました。さてお釣りはいくら出てくると正解でしょうか?ここでまさかのお釣り無し!!だったら凄くショックですよね…。ぜひ正しい金額を返す処理をしたいところです。
というわけで今回はif文(もしも~したら~する)について勉強しましょう。(私も記事を書きながら一緒に勉強するのでね^^)

if文とは

もしも~をしたら~する、というのがif文です。これはC#に限らずどの言語にも存在します。(一文字が知る限りですが)

例えば自販機がうんたら言っていた上の文章の例だとこのような感じでしょうか。↓

もしも自動販売機に1000円札を入れられて130円のリンゴジュースのボタンが押されたら870円のお釣りを吐き出す処理をする

このように【プレイヤーに選択して貰った結果どのようなことをするか決める】とても便利で必要不可欠な存在です。

if文の書き方

if文の書き方は大枠のテンプレートがあります。これです。↓

if (条件)
        {
            処理の内容;
        }

条件の中にはもしも~したらの部分を書き、処理の内容には~する、の部分を書きます。
具体的に書くとするとこうでしょうか。

if(変数 比較演算子 条件 (必要なら論理演算子) )
{条件に当てはまった時の処理}

比較演算子論理演算子については後程説明します。
冒頭の文章をif文に当てはめてみるとこんな感じです

if (jihankinyukingaku == 1000 && kounyushohin == "オレンジジュース")
        {
            oturi = 870;
        }

jihankinyukingaku(自販機入金額)という名前の変数の中身が1000と等しくて且つ(&&)kounyushohin(購入商品)という変数の中が“オレンジジュース”という日本語と等しければoturiという変数に870を代入する、というプログラムになります。

もしもこの条件にあてはまらない場合はこの{}の中身の処理をされずスルーして、}の一つ下へと処理が流れます。

==というのは「等しい場合」という意味の比較演算子で、&&というのは「且つ」という単純に&(アンド)の意味を持つ論理演算子です。

も~!とかくプログラミング界は何かしら難しい名前を付けたがる~!
…でもね、これは全然難しく考える必要はありません!!if文を使いたいときに「そういえばそんなのあったな、どうやって使うんだっけ?調べよ~。」って感じで一文字のこのページを見て貰えたらそれで充分だと思います。

比較演算子とは

比較演算子とは~だなんて難しいこと言ってるようですけど、要は「トマトが300円よりも安かったら買うわ~」とか「テストの点数が30点以下ならこっぴどく説教ね!!」みたいな、●●より○○の場合(その名の通り比較する)~って感じに使う為のものです。
こう見ると日常にもよく紛れ込んでますね、比較演算子。その比較演算子の種類を下で説明します。

比較演算子の種類使い方意味
==i == xiとxは等しい
!=i! = xiとxは等しくない
>i > xiはxより大きい
(xは含まない)
>=i >= xiはx以上
(xを含む)
<i < xiはxより小さい
(xは含まない)
<=i <= xiはx以下
(xを含む)

この以上とか以下とか、思った以上に大事な部分になります。
例えば赤点が30点以下からだとしましょう。あなたは30点を採りました(気を悪くしないでくださいね)。さてあなたは赤点補習になるでしょうか?ならないでしょうか?
……願望は実らず、あなたは赤点補習決定です。以下だとその値も含まれますし、未満ならその値は含まれません。結構大事なボーダーラインの決定じゃないでしょうか。
あと等しくないというのは私のゲ制経験上意外と使います。例えば当てはまる条件の方が多い場合は、当てはまらないことを判定基準にした方が必要コードが少なくて済みますからね。

論理演算子とは

論理演算子とは、判定したい条件が複数個ある場合に使用します。
論理演算子はこのようなものがあります。↓

論理演算子の種類使い方意味
&&i && xiとxの両方があてはまる場合
英語の「and」と同義
||i || xiかxのいずれかがあてはまる場合
英語の「or」と同義

| は shiftキー+\キーで入力可能だよ★(windowsもmacも同じ)

例えばあなたがスイーツを食べたいとしましょう。今のあなたの気分は「プリンとヨーグルトか、もしくはケーキで気に入ったものがあれば買う」です。さて、これをif文で書くとしたらどうなるでしょうか。

if(sweets=="purin" && sweets2=="yoguruto" || sweets=="keeki"){}

英語が適当なのはさて置き、変数sweetsの中に入っている値がpurinであり且つ変数sweets2の中に入っているのがyoguruto、もしくは変数sweetsの中に入っている値がkeekiであること。これが条件となります。
(※これは余談ですがもしこれを厳密に細かくプログラミングするなら、お店の在庫を変数に入れておき、purin>=1&&yoguruto>=1 || keeki>=1←このような形で判定するかと思います。もしもプリンの在庫が1以上あり且つヨーグルトの在庫が1以上ある場合(お店に置いてある場合)それを買う→purin = purin-1;(プリンの在庫を1つ減らしてる)のように)

比較演算子の優先順位

では条件式が複数ある場合、プログラム側が優先して処理するのは&&と||どちらでしょう。
正解は&&(且つ)の方です。だから上の例で言うと、例えば

if(sweets=="keeki" || sweets=="purin" && sweets2=="yoguruto"){}

||(or)もしくは、の方が先に来ていたとしても先に判定されるのは後の方に書いてあるsweets==”purin” && sweets2==”yoguruto”の方だということです。
なのであなたはスイーツ店に入り真っ先にプリンとヨーグルトが置いてあるかを確認し、もしも置いてなかったなら仕方なくケーキを買う流れということですね。(言い方悪い)
この優先順位は意外と重要になって来るんですが、なんでだったかは忘れましたてへぺろ★
とにかく優先順位は&の方が強いということを頭の片隅に置いておくと良いと思います。

&&で指定した条件の方が||よりも先に処理(判定)される

コメント

タイトルとURLをコピーしました