IFB文とは条件を分岐させるための構文で動作は基本的に<ruby>IF文<rt></rt></ruby>と同じですが、IFBは複数の条件で分岐でき、処理も複数書くことができます。
ELSEIFは必要だけ記述することができ、ELSEIF・ELSEは必要がなければ省略することもできます。
- 構文
- IF 式 [THEN]
真[ELSEIF 式 [THEN]]…[ELSE]偽ENDIF
- 引数
- 戻り値
IFB文とは
IFB文は<ruby>IF文<rt></rt></ruby>と同様、条件や値によって分岐する処理を書くことができます。<ruby>IF文<rt></rt></ruby>はTHEN節・ELSE節に1文しか処理が書けなかったり単独の条件式での分岐しかできませんが、IFB文は複数の条件分岐を書くことができます。
フローチャート
IFB文をフローチャートで表すと以下のいずれかになります。
条件式がTrueのときに処理を実行し、Falseのときに何も実行しないときは以下のようになります。
処理が1つの場合は、<ruby>IF文<rt></rt></ruby>で書き換えることができます。

条件式がTrueのときに処理1を実行し、Falseのときに処理2を実行するときは以下のようになります。
処理1・処理2がともに1つのときは<ruby>IF文<rt></rt></ruby>で書き換えることができます。
.drawio.webp)
条件式1がTrueのときに処理1を実行します。条件式1がFalseで条件式2がTrueのときは処理2を実行します。条件式2がFalseのときは何も実行しません。
ELSEIF節は条件の数に応じて必要な数だけ記述することができます。
.drawio.webp)
条件式1がTrueのときに処理1を実行します。条件式1がFalseで条件式2がTrueのときは処理2を実行します。条件式2がFalseのときは処理3実行します。
ELSEIF節は条件の数に応じて必要な数だけ記述することができます。
.drawio.webp)
IFB文で使える演算子
比較演算子
比較演算子とは2つの式や値を比較するための演算子で、2つの値が等しい・等しくない、大きい・小さいといった比較ができるようになります。
比較演算子を使うことで、○○と一致したときや○○ではないときといった条件式を書くことができます。
UWSCで使える比較演算子は以下のとおりで、a,bはともに数値が代入されているものとします。
| 演算子 | 記述例 | 意味 |
|---|---|---|
| < | a < b | aがbより小さければ真 |
| <= | a <= b | aがb以下ならば真 |
| > | a > b | aがbより大きければ真 |
| >= | a >= b | aがb以上ならば真 |
| = | a = b | aとbが等しければ真 |
| <> | <> b | aとbが等しくなければ真 |
論理演算子
論理演算子とは、論理演算をするための演算子のことで、論理演算子を使うことで○○かつ○○、○○または○○といった比較演算子だけではできない複数の条件式を比較するといった書き方ができるようになります。
以下の例ではa,bともに論理値(TrueまたはFalse)が代入されているものとします。数値の場合は論理演算ではなくビット演算になるので注意が必要です。
| 演算子 | 記述例 | 意味 |
|---|---|---|
| AND | a AND b | aとbがともに真の場合に真 |
| OR | a OR b | aかbの少なくとも1つが真の場合に真 |
| XOR | a XOR b | aかbのいずれか一方が真の場合に真 |
| ! | !x | xが偽の場合に真 |
IFB文の書き方
以下は分岐させる条件が3つのときの処理の流れを表したものです。
IFB文の処理の流れとしては、まず条件式1が成り立つ場合は処理1を実行。条件式1が成り立たず条件式2が成り立つ場合は処理2を実行。条件式2が成り立たず条件式3が成り立つ場合は処理3を実行。どの条件式にも一致しなかった場合はELSE節の処理が実行されます。条件式・処理は必要な数だけ記述することができ、ELSE節は必要がなければ省略することも可能です。
またどこかで条件式が一致した場合、それ以降の条件式の判定は行われません。最初に一致した箇所の処理が終わったらENDIFの直後まで処理が飛びます。
これをまとめると以下のようになります。
以下はscoreの値によって処理を分岐させるプログラムです。scoreの値が90以上ならAと出力します。score >= 90が成り立たなかったら次のELSEIFの条件式が成り立つか調べ80以上ならB、score >= 80が成り立たなかったら次のELSEIFの条件式が成り立つか調べ70以上ならCという風に上から順番に条件式が成り立つかどうかを調べていきます。条件式が成り立ち処理が実行された時点でENDIF直後まで処理が飛び、残りの条件式が成り立つがどうかの判定は行いません。
このプログラムの場合、5行目の条件式(score >= 80)が一致するのでBと出力されます。
- 結果
このプログラムをELSEIFを使わずに書くと以下のようになります。
ELSEIF文はこれまでに書かれたすべての条件式が成り立たなかったときに実行される条件式なので、以下のようにこれまでに成り立たなかった条件式を改めて書く必要はありません。
5行目のscore >= 80 AND score < 90という条件式は3行目のscore >= 90が成り立たなかったときに実行される条件式なので、5行目に来る時点で90未満なのは確定しています。そのためAND score < 90は書く必要はありません。7行目、9行目のAND以降も同様の理由で必要ありません。
プログラム実行例
コトバンクで指定した熟語の読みを調べる
4行目のwordに指定した単語の読み方をコトバンクで調べます。
コトバンクに掲載のない単語は取得できません。
関連記事
- IF文
- IF文は条件によって処理を分岐させたいときに利用します。条件が成り立たないときの処理(偽)は省略することができます。処理が2文以上のときは<ruby>IFB文<rt></rt></ruby>を使います。
- SELECT文
- 値を複数条件で比較し条件が一致したところの処理を実行する。
