制御構造
ジャンプに限らず、単純な文や入れ子になったブロックを THEN というキーワードの後に置くことができる。構造化された形式である。
「宙ぶらりんelse問題(dangling else problem、en:Dangling else)」も関係するのだが、文法の設計(デザイン)によっては、
のように、「複数の場合に対する場合分け」の単純な多分岐であるにもかかわらず、どんどんネストが深くなるような書き方をせざるをえない場合がある(C言語の文法の設計は、こうなってはいない)。これは ELSEIF のようなキーワードの導入で解決できる。elseif, elsif, elif など言語によるバリエーションが多いので、テキストエディタによるリアルタイムなシンタックスハイライトが非常に有効である。言語によっては else if という「2語から成るキーワードのようなもの」という設計のものもある。
あまり一般的でないバリエーションとして、以下のような例がある。
FORTRANなどの一部の言語では、3方向の分岐を扱う「算術IF文」があり、数値を正か、ゼロか、負か判定して処理を分岐させる。
多くの関数型言語などではif文が関数や式として実装されており、そのようなifは評価した式の結果を返す。
一部の言語ではif文が演算子の様に実装されており、例えばC言語の条件演算子がある。
PerlではC言語風の if だけでなく、when と unless や、コードの後に条件式が来る if がある。
Smalltalkでは言語組込みの機能としてではなく、ifTrue と ifFalse というメッセージに手続き引数を与えることで、条件付き実行ができる。
一般論として、関数の引数を積極評価してしまう言語では、条件実行のようなものを関数にできない。遅延評価のような機構が何かあれば、条件実行を特に言語機能にしなくても、引数を遅延評価する関数によって、条件実行もできる。
ループはソースコード上で1回だけ書かれた文の並びを連続して複数回実行することである。ループの「中」のコード(本体と呼び、下記の例では xxx で表されている)は指定回数実行されるか、指定されたコレクションの各要素に対応して実行されるか、何らかの条件が成立するまで繰り返し実行される。無限に繰り返されることもある。
SchemeやHaskellのような関数型言語では、ループより再帰呼び出しや不動点コンビネータを使用してプログラミングするのが普通である。末尾再帰は再帰呼び出しの特殊ケースであり、容易にループに変換できる(正確には「末尾呼び出しは容易にジャンプに変換できる。末尾再帰は末尾呼び出しの対象が自身になっているという特殊ケースであり、ループに変換できる」)。