if文 | MATLAB基礎14

条件を満たしたときに実行する

前回はwhile文について説明しました。

今回はif文について説明します。if文とは英語のifが「もし〇〇なら」という意味であるように、条件を満たしたときに実行する処理を書くことができます。

早速簡単な例を下記で紹介します。

MATLAB
for i = 1:10
    if i==5
        disp(i)
    end
end

上の例はfor文の中にif文があります。2~3行目のif~endで囲まれた部分がif文全体です。2行目でiが5のときのみ実行するという条件が記述しており、条件が満たされた場合のみ3行目の処理が実行されます。

if文 iが5のときに実行

実行結果は、コマンドウインドウに5と表示されているはずです。

関係演算子

さて、上の例の2行目にi==5と記述していましたがi=5の間違いではありません。通常の「=(イコール)」は左辺に右辺の値を代入するという意味であることを説明しました。一方「==」は左右の値が等しいか評価するという意味になります。そして等しければ「1」等しくなければ「0」という結果になります。if文はi==5の結果が1のときのみ実行されます。このように値の関係性を比較する演算子を関係演算子と呼びます。比較演算子と呼ぶこともあります。Matlabで使用する関係演算子は下記の表のとおりです。

==左右が一致しているか
>=左辺が右辺以上か
>左辺が右辺より大きい値か
<=左辺が右辺以下か
<左辺が右辺より小さいか
~=左辺と右辺が一致しないか
Matlab 関係演算子一覧

関係演算子をいることで様々な条件のif文を記述することができます。実はwhile文 | Matlab基礎13でも関係演算子を使用していました。

2つ以上の条件

上記の関係演算子を使って2つ以上の条件を指定することも可能です。例えば先ほどの例に加えてiが8の場合もコマンドウインドウに表示するようにします。

MATLAB
for i = 1:10
    if i==5 || i==8
        disp(i)
    end
end

実行結果は下記のとおりです。

if文 2つ以上の条件

上の例では2行目に「|| i==8」の記述を追加しました。ここで「||」は「または」という意味を表し2行目は「iが5の場合または、iが8の場合に実行する」という意味になります。ですので実行結果はコマンドウインドウに5と8が表示されます。

論理演算子

上記例の「||」は論理演算子といいます。ほかにも下記のような例があります

&AND:両方の条件を満たした場合(配列に使用)
|OR:どちらか一方の条件を満たした場合(配列に使用)
&&AND:両方の条件を満たした場合
||OR:どちらか一方の条件を満たした場合
~NOT:論理演算結果の逆
Matlab 関係演算子一覧

論理演算のAND, OR, NOTが上記の演算子で表現できます。また「&」と「&&」、「|」と「||」は配列に使用するかそうではないかで使い分けることができます。上の例では「i==5」, 「i==8」の結果はともに配列ではないため「||」を使用しました。上の例で「|」を使用しても同じ結果を得ることができますが警告が表示されカーソルを合わせると「||」を使用することを推奨されます。

警告マーク
警告メッセージ

関係演算子と論理演算子を組み合わせて必要な条件の際のみ実行するif文を作成してください。

else:条件が満たされなかったとき

これまでの例では条件が満たされたときの処理のみ実行しましたが、満たされなかったときの処理は「else」を用いて記述することができます。

MATLAB
for i = 1:10
    if i==5 || i==8
        disp(i)
    else
        disp('iは5または8ではありません')
    end
end

if文のなかに「else」を記述すると、条件が満たされなかった場合の処理が記述できます。実行結果は下記のとおりです。

else:条件が満たされなかったとき

上の例ではiが5か8ではない場合5行目の式が実行されます。その際にdispでコマンドウインドウにメッセージを表示しました。

elseif:3つ以上の分岐

これまでは「条件が満たされとき」と「満たされなかったとき」で処理を分けることができましたが、3つ以上の条件で分岐させたい場合は「elseif」を使用します。

MATLAB
for i = 1:10
    if i==5
        disp(i)
    elseif i==8
        disp('iは8です')
    else
        disp('iは5または8ではありません')
    end
end

i==8のとき「iは8です」とコマンドウインドウに表示するように変更しました。実行結果は下記のとおりです。

elseif:3つ以上の分岐

elseifを使用して3つの条件分岐を記述できました。「elseif」を追加すると3つ以上の条件分岐を記述することもできます。「else」の後に「elseif」を記載するとエラーになるので複数条件を記述した場合でも「else」が一番下になるように注意が必要です。

まとめ

今回はif文について説明しました。if文では「もし○○なら」という条件でプログラムの処理を分岐させることができました。関係演算子を用いてif文の条件を記述し、論理演算子で条件の組み合わせが可能になります。elseやelseifを用いることで2つ以上の条件分岐が実現できることが説明しました。for文、while文、if文を組み合わせることで、複雑な処理も実現できるのでぜひ使い方をマスターしてください。

次回はswitch文について説明します。

関連記事

コメント

この記事へのコメントはありません。