フラグ
In コンピューターサイエンスでは、フラグは関数やプロセスの信号として機能する値です。このフラグの値を使って、プログラムの次の処理を決定します。フラグは、多くの場合バイナリフラグで、ブール値(trueまたはfalse)を含みます。ただし、すべてのフラグがバイナリというわけではなく、複数の値を保存できるものもあります。
バイナリフラグは、falseのときは横になっていて、trueになると立ち上がる小さな赤い旗だと考えることができます。旗が立つと、プログラムに「停止して、別の処理をしなさい」と伝えます。コンピュータープログラミングでのフラグの一般的な例として、whileループ内の変数があります。次のPHPのループは、$flagがtrueに設定されるまで反復処理を行います。
$flag = false;
$i = 1;
while (!$flag) // stop when $flag is true
{
echo "$i, ";
$i++; // increment $i
if ($i > 100) $flag = true;
}
上記のコードは、100まで数値(1、2、3...)を出力します。その後、$flagがtrueに設定されるため、ループは終了します。この例でフラグを使う方法は効果的ですが、必要ではありません。代わりに、whileループの条件にはwhile ($i < 101)を指定し、while (!$flag)とすることもできます。これでも同じ結果になり、$flag変数も不要になります。効率よく書かれたプログラムでは、明示的なフラグが必要になることはほとんどありません。関数内にすでに存在する変数をフラグとして使えることが多いためです。
バイナリではないフラグ
バイナリではないフラグは複数のビットを使い、「はいかいいえ」や「trueかfalse」より多くの値を保存できます。この種類のフラグには1ビットより多くのビットが必要ですが、必ずしも1バイト全体が必要なわけではありません。例えば、2ビットで4つの選択肢を作ることができます。
- 00 = オプションA
- 01 = オプションB
- 10 = オプションC
- 11 = オプションD
バイナリではないフラグは、複数の色が付いた旗だと考えることができます。プログラムは、1)複数ビットのフラグが設定されているか、2)どの値が含まれているかを確認できます。フラグの値(または「色」)に応じて、プログラムは対応する方向へ処理を続けます。
知識をテストする