|
制御構造(せいぎょこうぞう)あるいは制御フローとは、計算機科学において文や命令、また命令型プログラミングや宣言型プログラミングにおけるサブルーチン呼び出しを実行または評価する順序を意味する。 命令型プログラミング言語では、制御構文(せいぎょこうぶん)とは命令の実行順序を通常の逐次実行以外の順番に変化させる構文であり、2つ以上の経路のいずれかを選択するものである。正格でない関数型言語では、関数や言語構成物が同様の結果を達成するために存在しているが、それらは必ずしも制御構文とは呼ばれない。 制御構文の種類は言語によって様々だが、大まかに以下のように分類できる。 * 別の文から実行を継続する(分岐命令、ジャンプ) * 何らかの条件が成立したときだけ文の並びを実行する(選択、条件分岐) * 文の並びを繰り返し実行する(ループ、コードの先頭に近いほうへの条件分岐と等価) * 離れた箇所の文の並びを実行し、元の場所に制御を戻す(サブルーチン、コルーチン、継続) * プログラムを停止し、その後の実行を防ぐ(停止) 割り込みとシグナルは制御フローを変化させる別の機構であり、サブルーチンに似ているが、言語内の制御構文ではなく外部のイベントなどの結果として非同期に発生するものである。自己書き換えコードも副作用によって制御フローを変化させることができる。ただし、それを制御構文として明確化することはほとんどない。 機械語やアセンブリ言語では、制御命令はプログラムカウンタを変更する働きを持つ。多くのCPUでは制御命令として(条件付きおよび無条件の)分岐命令しか用意されていない。 == 基本構文 == === ラベル === ラベルとは、ソースコード上の固定の位置を示す何らかの名前(あるいは数値)であり、ソースコード上の他の箇所の制御構文で参照される。ソースコード上の位置を記録する以外の効果はない。 行番号は一部の言語(FORTRANやBASIC)でラベルの一種として使われ、負でない整数がソースコードの各テキスト行の先頭に置かれる。行番号を使用する言語では、連続で実行される文には行番号が増えるように行番号を与える必要がある。ただし、連続な番号である必要はない。例えば BASIC では次のようになっている。 CやAdaといった言語のラベルは識別子であり、文の前に書かれ、その直後にコロンが書かれる。例えば C では次のようになる。 Algol 60 言語はラベルとして識別子も非負整数も使用可能(どちらもその後にコロンが続く)だが、多くのAlgol系言語では非負整数をラベルとして許容していない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「制御構造」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Control flow 」があります。 スポンサード リンク
|