後判定ループ【後置判定ループ】post-test loop
概要

プログラミング言語の制御構文には、ループの継続あるいは終了を決める条件を指定できるものが用意されている。この条件判定を処理の実行後に行う方式が後判定ループであり、実行順序は初回の処理 → 1回目の条件判定 → 2回目の処理 → 2回目の条件判定…という順になる。継続条件が一度も満たされていない場合であっても、構造上、最初の判定が行われる前に処理が実行されるため、最低1回は処理が行われることになる。
C言語、またその構文を継承するJavaやJavaScript、PHPなどでは、後判定ループを実現する構文としてdo-while文が用意されている。「do{処理}whilte(条件)」という構文で、doブロック内の処理を実行した後、while節に指定した条件式を評価し、条件が真であれば再度doブロックの処理に戻り、偽であればループを終了する。Visual BasicおよびVBAでは同様の処理がDo Loop UntilやDo Loop Whileとして実装されている。
これに対し、処理を実行する前に条件判定を行う方式を「前判定ループ」という。while文やfor文など一般的なループ構文の多くがこれに分類される。この方式では、最初の判定で条件を満たさない場合、内部の処理が一度も実行されないままループを終了する。後判定ループは、利用者に入力を促し、その入力値が不正であれば再入力を求めるような処理、あるいは、処理結果を確認してから次の反復を判断する状況で用いられることが多い。
なお、後判定ループの内部でbreak文などを使えば、条件判定を待たずに途中でループを抜けることも可能である。この場合、while節の条件式は通常の終了条件を指定するために用いられるに留まる。実行順序が直感的である一方、初期状態で意図しない処理が行われないよう、データの初期化や条件式の設計には注意を要する。