if文

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

if文(イフぶん)はプログラミング言語において「もし~だったら」という条件を示すである。if else文と呼ばれることもある。

文法はプログラミング言語によって異なるが、条件文はifの後に処理の条件となる条件式、条件に合致する場合に処理される真文、条件に合わない場合に処理される偽文で構成されている。

目次

[編集] 文法

[編集] 共通する注意事項

  • 以下の言語では小文字から始まるifを用いなければならない。

[編集] Cの場合

真の時だけ実行するとき

if (条件式)
 真文

真と偽で実行文を変えるとき

if (条件式)
 真文
else
 偽文
  • if(条件式) 真式文 else 偽式文」は条件演算子三項演算子? および : を用いて「条件式?真式:偽式」とも表せる。ただし、条件演算子は式であるので値をもつことがif文と異なる。

[編集] 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 {
  偽文
}

[編集] プログラム例

特に断りがない場合nanbの大きい方を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文として代用する場合が多々ある。

[編集] 関連項目