FreeBASIC マニュアルのトップに戻る

FreeBASIC ProPgControlFlow

目次→教本→プログラマーのための案内Control Flow Statements←オリジナル・サイト

フロー制御命令文 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

実行の流れを指示する、命令文。

記述:
流れを制御する命令文は、プログラムの実行を、1つの命令文から次の命令文に、制御します。
流れを制御する命令文は、何かの状態に基づいて、どの命令文が実行されるか、いつ実行されるか、を決定します。
ここでいう状態とは、つねに何かの式で、その値が、正か誤か、判定されます。
ほとんどのフロー制御命令文は、ある種の状態をチェックします。そして、それに従って、コードの流れ、つまり、1つのブロックのコードを、実行するか、または実行しないかを、指示します。(フロー移動制御命令文と、DO..LOOP は、オプションの状態を持っています)。
さらに、すべてのフロー制御命令文は、入れ子にすることができます。すなわち、フロー制御命令文のブロックの中に、他のフロー制御命令文を持つことができます。

フロー制御命令文は、3つの種類があります:
移動、分岐、およびループです。
フロー移動制御命令文は、コードの別の部分に、実行を移します。
フロー分岐制御命令文は、状態に基づき、ある命令文のブロックを実行します。
フロー・ループ制御命令文は、状態が合致している間、または、合致するまで、コードを繰り返し実行します。

移動命令文
この命令文は、無条件に、または条件により、そして、一時的にか、永久的に、実行を転送するために使われます。
"ON" 変形は、条件により、テキスト・ラベルのリストから、転送先を選択します。
実行は、分岐先が、ローカルの配列や、可変長の文字列や、オブジェクト定義で、なにかに該当しないと、異る範囲に移すことになってしまいます。

GOTO
無条件に、テキスト・ラベルで定義された、コードの別の場所に、実行を移します。
実行は、ラベルの後の、最初の命令文で再開します。

GOSUB
無条件に、そして一時的に、テキスト・ラベルで定義された、コードの別の場所に、実行を移します。
実行は、ラベルの後の、最初の命令文で再開します。
そして、実行は、RETURN キーワードで、元の位置に返されます。
GOSUB 命令文を、入れ子にすることができます。すなわち、複数の GOSUB 命令文は、最初の対応する RETURN の前で実行されます。しかし、アプリケーションのコース中に、対応する RETURN が、常になければなりません。

ON GOTO
式の値に基づいて、テキスト・ラベルで定義したコードの、いくつかの場所の1つへ、実行を、転送します。

ON GOSUB
一時的に、式の値に基づいて、テキスト・ラベルによって定義されたコードの、いくつかの場所の1つに、実行を移します。

分岐命令文
この命令文は、いつくかの命令文ブロックの内の、1 つを実行するために、使われます。

IF.. END IF
式が正の状態として評価されると、ブロックの命令文を実行します。
そして、式が誤と評価された場合だけ、ELSEIF キーワードを使った、さらに別の式が正と評価されると、別の命令文ブロックを実行できます。
そして、これらの式のすべてが誤として評価された場合にだけ、命令文ブロックは ELSE キーワードを使って実行できます。

SELECT.. END SELECT
いつくかの命令文ブロックのうちの1つを、実行します。
この分岐命令は、式の状態と、いくつかの場合の式の1つを、合致させようとします。
ケース式は、これらが与えられている順番でチェックされます。そして、ケースの式が、最初に合致した、関連する命令文ブロックが、実行されます。
IF.. END IF と同様に、どのケース式も条件を満たさない場合のために、デフォルトのケースを、定義することができます。
また、ループ・フロー制御命令文と同様、EXIT キーワードで、早めにケースの命令文ブロックから抜け出させることができます。

ループ命令文
この命令文は、命令文のブロックを、繰り返し実行するために、使います。
命令文ブロックの中で、繰返しは、CONTINUE キーワードを使って、早めに、実行し直すことができます。また、EXIT キーワードを使って、外に出ることができます。
繰返ループが、状態に従って終わるか、EXIT キーワードで終わるかにかかわらず、これに続く実行は、常にブロックの後の、最初の命令文に続きます。

WHILE.. WEND
指定した式が、正の状態として評価されているあいだ、一つの命令文のブロックを、実行しつづけます。
式は、命令文のブロックが実行される前に、評価され、チェックされます。

FOR.. NEXT
WHILE.. WEND と同様ですが、繰返し回数を指定して処理するのに、より適しています。
このループは、テストの式でチェックされる値の初期値で、反復子を、初期化します。
反復子が、テストの式の状態「以下」とみなされるあいだ、命令文のブロックは実行されます。そして、反復子は加算されます。
また、ループは、ループの繰返しのたびに、反復子が減少するようにも設定できます。この場合は、テスト式に対して、「以上」で比較されます。
反復子には、INTEGERDOUBLE のような数値データ型、またはユーザ定義型が使われます。
ユーザ定義型は、演算子 for を実装しなければなりません。


DO.. LOOP
DO.. LOOP は、ループフロー制御命令文の中で、最も多能です。このループは、式が正の状態として評価されているあいだ、あるいは評価されるまで、命令文のブロックを実行しつづけます。
式の照合を、ブロックが1回目の実行を終わるまで、遅らせることができます。これは、ブロックの命令文が、少なくとも一回実行される必要がある場合に、役に立ちます。
このループは、状態を全く設定しないで、単に無制限にループさせることも、できます。

プログラマーのための案内に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2020-08-13 03:34:30
日本語翻訳:WATANABE Makoto、原文著作者:LaananFisher

ホームページのトップに戻る

表示-非営利-継承