制御構造
↑ while (true) は構文としては無限ループ専用の構文ではないので、ここでは無限ループに含めていない。一方、for (式;;式) は無限ループ専用とみなしている
1 2 3 4 5 6 7 8 C言語の for (init; test; increment) は汎用であり、カウント制御専用ではないが、カウント制御として使われることが多い。
1 2 3 4 5 6 C、C++、C# での深い入れ子からの脱出は、ラベルとgoto文を使用する。
↑ C++11標準で、範囲に基づくforループが導入された。STLには std::for_each というテンプレート関数があり、STLのコンテナに対して各要素に単項関数を適用できる。同様の機能はマクロを使っても実現可能。
1 2 カウント制御ループは整数 interval によるイテレーションで実現される。早期脱出は exit に条件を追加することでなされる。
理論的(理論計算機科学的)にはコンピュータは一種類の命令、たとえば「subtract one number from another and branch if the result is negative」さえあれば何でもできるが(チューリング完全あるいは「万能」、en:One instruction set computer も参照)全く実用的ではなく、実際のコンピュータは多数の命令を備えているということと類似している。
Böhm と Jacopini の論文は全てのプログラムから goto 文を無くすことができることを示した。
また、他の研究により入り口と出口がそれぞれひとつになっている制御構造が他の構造よりも理解し易いということが示された。特にそのような制御構造はプログラムの任意の箇所に制御構造を乱すことなく挿入可能な点が有利とされた。
しかし実は、「理論に従ってgoto 文を無くしたプログラム」が「理解し易い」ものであるか否かは不明であり、実際のところ全くそのようにはならないのである。
以下ではなぜかキーワードに変にこだわっているが、そういった字句にこだわるのではなく、構文(シンタックス)として総合的に捉えれば、たいしてこだわる意味はない。この節冒頭に挙げたリンク先の各記事を参照。