if文

条件分岐を書くときに使う最も基本的な構文

これはこのページの過去の版です。Bethlehem4 (会話 | 投稿記録) による 2012年7月28日 (土) 04:45個人設定で未設定ならUTC)時点の版 (FORTRAN)であり、現在の版とは大きく異なる場合があります。

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文として代用する場合が多々ある。

関連項目