初心者のためのFlash ActionScript講座
Flash ActionScript Helper
Home Menu

最終更新日: 2003年3月8日

if文

if、else、else if の3つのステートメント

if文(if ステートメント)は、条件によって異なる処理をする(分岐制御または条件分岐)際に使用されます。
if文には、追加可能な else if else の2つのステートメントが存在し、ユーザーは必要に応じてこれらのステートメントを組み合わせて記述します(下の書式例参照)。

if文の基本的な書式

if ステートメントは必須で、必ず最初のブロックに置きます。else ステートメントは必須ではありませんが、使用する場合には必ず最後のブロックに置きます。else if ステートメントは、if ステートメント以外の条件を追加するときに使用します。同時に複数使用することができます。
なお、if 文は各ブロック内に入れ子にすることも可能です。これについては中級編で解説します。

基本的な書式で具体的に見ていきましょう。



if ステートメント

まずは、if ステートメントだけの書式(書式1)です。
'if' の後にカッコ()でくくった条件式、その後ろに中カッコ{}でくくった処理ブロックを記述します。
条件式は文字どおり条件を記述する式で、評価結果がブールとなる論理式(詳細は「論理式」参照)が用いられます。
この書式では、条件に当てはまるとき(条件式の評価結果が ' true ' のとき)だけ処理ブロック内のステートメントを実行します。当てはまらないときは処理ステートメントは実行しません。
下の記述例では、変数 nAge が20未満のときに、出力ウィンドウに「未成年」と表示します。




else ステートメント

記述例に、20以上のときは「成人」と表示する処理を追加してみましょう。
else ステートメントを追加します(書式2)。
else または、else if の追加ステートメントを利用すると、全体がひとつの if 文として扱われます。条件に当てはまると該当する処理ブロックを実行し、すぐに if 文の処理を終了します。それ以降の条件式の評価はスキップされます。記述例では変数 nAge が20未満の場合、出力ウィンドウに「未成年」と表示すると、すぐに if 文を抜け出します。

else ステートメントには条件式を記述しません。これは else が自分より上のステートメントに記述されたすべての条件に当てはまらないときに実行するステートメントだからです。したがって、else ステートメントは必ず最後のブロックに置かなければなりません。else ステートメントを追加した if 文は、必ずどこかのブロックを実行します。記述例では20未満それ以外の二者択一となります。



else if ステートメント

今度は、20未満のときは「未成年」、65以上のときは「シルバー」と表示するようにしてみましょう。20〜65未満のときはなにもしません。
このようにデータが取りうる値の一部にのみ処理を行うときは、else ステートメントは使えません。else if ステートメントを追加した書式(書式3)を使用します。
else if ステートメントは if ステートメント以外の新たな条件を付け加えるときに使用します。 if ステートメントの後ろに ' else if ' とカッコ()でくくった条件式、その後ろに処理ブロックを置きます。記述例は65以上ですので条件式を( nAge >= 65 )とします。

if ステートメントと同様に、条件に当てはまるときだけ、処理ブロック内のステートメントを実行します。
記述例では、変数 nAge が20未満のとき出力ウィンドウに「未成年」と表示し、65以上のときは「シルバー」と表示します。それ以外の値のとき(20〜65未満のとき)は、2つの条件式は評価しますが、ともに当てはまらないため、どの処理ブロックも実行しません。

さらに、20〜65未満のときに「成人」と表示する処理を追加してみましょう。3つの分岐処理を行う左下の書式(書式4)を利用します。
効率を上げるため、値の小さなものから順番に評価、処理を行うことにします。まず if ステートメントはそのまま「未成年」を評価 ( nAge < 20 ) します。次の else if ステートメントでは「成人」を評価 ( nAge < 65 ) 、最後に else ステートメントを追加して、これで「シルバー」を処理する構成に変更します。完成した if 文は下の記述例です。


ここで、else if ステートメントの条件式に注目してください。本来、「成人」は20以上〜65未満です。しかし、条件式には、65未満 ( nAge < 65 ) と記述されています。なぜでしょうか。これが先ほど効率を上げるために、値の小さなものから順番に並べた理由です。
if 文は上から順に条件式を評価し、当てはまるものがあると該当する処理ブロックを実行して、if 文から抜け出します。例のように評価対象が連続した値の場合、この性格を利用すると、評価対象の値の範囲を徐々に絞っていくことが可能になります。まず最初の条件式 ( nAge < 20 ) では、すべての値を対象として評価を行い、20未満の場合は処理ブロックを実行して終了します。次の条件式 ( nAge < 65 ) が評価されるのは、nAge の値が20以上の場合だけです。したがって、条件式 ( nAge < 65 ) の評価結果が ' true ' となるのは、必然的に nAge の値が20以上〜65未満のときとなります。同様に、else ステートメントで処理される対象は65以上です。


なお、今回は値の小さなものから評価しましたが、大きなものから順番に評価しても、同じように効率的な処理ができます。その場合の条件式は ( nAge >= 65 ) 、 ( nAge >= 20 ) となり、「シルバー」「成人」「未成年」(else)の順に評価します。

このようにif 文では、条件式と3つのステートメントを組み合わせ、効率的なスクリプトを記述することが大切になります。



・関連項目

論理式
式、ステートメント、ブロック
フロー制御
if 文のデバッグ

(C)2000-2004 Ginga Baba. All rights reserved. お問い合わせ先:ginga@nifty.com
ページTOPへ
Home Menu