Jednoduché programy lze psát tak, že pořadí vyhodnocování příkazů v řádcích odpovídá pořadí čtení programu (ze shora dolů). To, ale není vždy dostatečné, protože je potřebné v některých případech provést určitou část kódu, jen pokud je například něco splněno nebo dokonce nějakou část kódu je třeba provést vícekrát.
Toto chování je možné zajistit využitím řídích struktur programů, které lze rozdělit do dvou kategorií na: