if文
if文(イフぶん)はプログラミング言語において「もし~だったら」という条件を示す文である。if else文と呼ばれることもある。
文法はプログラミング言語によって異なるが、条件文はifの後に処理の条件となる条件式、条件に合致する場合に処理される真文、条件に合わない場合に処理される偽文で構成されている。
目次 |
[編集] 文法
[編集] 共通する注意事項
[編集] Cの場合
真の時だけ実行するとき
if (条件式) 真文
真と偽で実行文を変えるとき
if (条件式) 真文 else 偽文
[編集] Common Lispの場合
真の時だけ実行するとき
(if 条件文 真文)
真と偽で実行文を変えるとき
(if 条件文 真文 偽文)
(cond (条件 真文) (t 偽文))と同一
[編集] Pascalの場合
真の時だけ実行するとき
if 条件文 then 真文
真と偽で実行文を変えるとき
if 条件文 then 真文 else 偽文
[編集] Adaの場合
真の時だけ実行するとき
if 論理値 then 真文 end if;
真と偽で実行文を変えるとき
if 論理値 then 真文 else 偽文 end if;
- Adaの場合,if文の論理値として許容されるのは,言語既定義の列挙型である
Boolean(もしくはBooleanの派生型)のみであり,例えばCなどのような,0を偽とし,0以外を真とする条件とは異なる。
[編集] Perlの場合
真の時だけ実行するとき
真文 if 条件文
偽の時だけ実行するとき
偽文 unless 条件文
また、C言語風の記述法も可能である。
真の時だけ実行するとき
if(条件文) { 真文 }
真と偽で実行文を変えるとき
if(条件文) { 真文 } else { 偽文 }
[編集] Rubyの場合
Rubyのifは厳密に言えばif式であり、条件が成立した方の節で最後に評価された式の値を返す。
真の時だけ実行するとき
if 条件式 (then) 真文 end
真と偽で実行文を変えるとき
if 条件文 (then) 真文 else 偽文 end
[編集] BASICの場合
真の時だけ実行するとき
IF 条件式 THEN 真文
真と偽で実行文を変えるとき
IF 条件式 THEN 真文 ELSE 偽文
真文・偽文が1行で書ききれない場合はgoto文が併用される。
[編集] Visual Basicの場合
真の時だけ実行するとき
If 条件式 Then 真文 End If
真と偽で実行文を変えるとき
If 条件式 Then 真文 Else 偽文 End If
真文・偽文が短い場合には BASIC と同様の書き方も可能である。
[編集] REALbasicの場合
真の時だけ実行するとき
If 条件式 Then 真文 End If
真と偽で実行文を変えるとき
If 条件式 Then 真文 Else 偽文 End If
[編集] OpenOffice.org Calcの場合
真の式だけ実行するとき
IF(条件式;真文;"")
真と偽で実行文を変えるとき
IF(条件式;真文;偽文)
[編集] FORTRAN
以下は、Fortran77以降の、論理IF分の場合である。1行のみの場合
if(条件式) 真文
複数行にまたがる場合
if(条件式1) then 条件式1が真の場合ここから ここまでのプログラムが実行される(複数行) else if(条件式2) then 条件式2が真の場合ただしすでに条件式1が成り立っている場合は除くここから ここまでのプログラムが実行される(複数行) else すべてのなかのいずれの条件にも当てはまらない場合ここから ここまでのプログラムが実行される(複数行) end if
[編集] Forthの場合
真の時だけ実行するとき
条件式 IF 真文 THEN
偽の時だけ実行するとき
条件式 NIF 偽文 THEN
真と偽で実行文を変えるとき
条件式 IF 真文 ELSE 偽文 THEN
または
条件式 NIF 偽文 ELSE 真文THEN
[編集] ひまわりの場合
真の時だけ実行するとき
もし、{条件式}ならば、(
{処理}
)
真と偽で実行文を変えるとき
もし、{条件式}ならば、(
{処理}
)
違ったら、(
{処理}
)
[編集] HSPの場合
真の時だけ実行するとき
if 条件式 : 真文
真と偽で実行文を変えるとき
if 条件式 : 真文 : else : 偽文
また、Cのようにブレイスを用いることもできる。
if 条件式 {
真文
} else {
偽文
}
[編集] プログラム例
特に断りがない場合naとnbの大きい方をncに代入という意味である。
[編集] Cでの例
if(na > nb) { nc = na; } else { nc = nb; }
nc = (na > nb) ? na : nbとしても同じ事ができる。
[編集] Common Lisp での例
(if (> na nb) (setq nc na) (setq nc nb) )
これはcondを使った
(cond ((> na nb) (setq nc na)) (t (setq nc nb)) )
と同様である。
[編集] Pascalでの例
if na > nb then nc := na else nc := nb
[編集] R言語での例
nc <- ifelse(na > nb, na, nb)
[編集] FORTRANの例
if(a.eq.b) c=5
上記の記述ではa=bの場合c=5になる簡単なプログラム例である。
if(a.eq.100) then b=30 else if(a.eq.80) then b=25 else b=20 end if
上記の記述ではa=100の場合はb=30となり,a=80の場合はb=25,その他の場合はb=20となるプログラム例である。
[編集] 論理積・論理和による擬似的なIf文
仮に && を論理積を表す演算子として、
左辺 && 右辺
という論理式で、左辺が真にならなければ右辺を評価しない言語(短絡評価)では、これを
If (左辺) { 右辺 }
と等価とみなすことができる。つまり左辺が条件文で、右辺が真文となるわけである。
同様に || を論理和を表す演算子だとすると、
左辺 || 右辺
は
If (Not 左辺) { 右辺 }
と等価となり、左辺が偽のときだけ右辺が実行される。
たとえばMS-DOSやWindowsのバッチファイルでは
CHDIR C:\HOGE || ECHO フォルダがみつかりません
(もしCHDIRコマンドが失敗したら、ECHOコマンドが実行される)
言語によっては、このように論理積演算や論理和演算を擬似的なIf文として代用する場合が多々ある。