昔のメモを見つけたので投稿しておきます。
手続き的なプログラミング言語ではループをよく書くと思いますが、大半は定型パターンがあります。たとえば配列のようなものから特定の条件を満たすものを検索する場合、普通は配列の要素を列挙するループを書き、その中で条件を満たすものがあればループを終了するよう書くでしょう。つまり、次のような実装が普通だと思います(一応C, C++, Java, C#いずれでも通用する書き方にしてあります)。
item = GetFirst( items ); /*最初の要素を取得*/
while( item != NULL ) { /*要素が無くなればループ終了*/
if( IsTarget(item) ) /*条件を満たす要素ならばループ終了*/
break;
item = GetNext( items );/*次の要素を取得*/
}
if( item == NULL ) /*見つからなかったならばエラー*/
return;
/*以後itemを使った処理*/
しかし、この書き方ではループを抜けた後での判定が必要になる点が今ひとつです。そこで、ループを「配列の要素がある間」ではなく「目的の要素が見つかるまで」という条件に書き換えてみます。
item = GetFirst( items ); /*最初の要素を取得*/
while( IsTarget(item) == false ) { /*条件を満たす要素ならばループ終了*/
if( item == NULL ) /*要素が見つからなければエラー*/
return;
item = GetNext( items ); /*次の要素を取得*/
}
/*以後itemを使った処理*/
こうするとスッキリします。ループの考え方が実態に合っているため、「そりゃそうだ」という感覚もありますが、プログラミングに慣れてくると意外にループ条件を定型でしか書かなくなっていることがあります。いつでも使えるパターンではありませんが、こういう書き方もできるのだということが、役に立つときがあるかもしれません。