Budując program na podstawie języka wysokiego poziomu, należy zwrócić uwagę na to, jak będzie przebiegało jego wykonanie. Bardzo rzadko się zdarza, że program składający się z ciągu instrukcji będzie je realizował jedna po drugiej. Najczęściej pewne sekwencje muszą być powtarzane lub następuje rozgałęzienie wykonywania, w zależności od warunków wynikowych.
Klasyczna metoda przedstawiania kolejności wykonywania instrukcji podczas projektowania programów polega na narysowaniu schematu blokowego, który w sposób graficzny obrazuje działanie programu, bez zbytecznego zagłębiania się w szczegóły jego algorytmów. Na takich schematach instrukcje wykonywane mają postać prostokątów, natomiast warunki kontrolujące przebieg i koniec poszczególnych pętli są przedstawiane w postaci rombów. Starsze języki programowania, np. FORTRAN lub BASIC, zawierały instrukcję skoku bezwarunkowego GOTO (pochodzącą od angielskiego słowa „go to”, czyli „idź do”). Instrukcja skoku bezwarunkowego GOTO pochodzi z języka symbolicznego - asemblera. Dodatkowo do instrukcji GOTO dodano wiele instrukcji umożliwiających realizację skoków warunkowych oraz zmianę kolejności wykonywania poszczególnych linii kodu.
Pod koniec lat sześćdziesiątych narodził się nowy styl programowania, który mocno ograniczył korzystanie z instrukcji GOTO, wprowadzając inne, bardziej czy-
C nie jest w pełni językiem ze strukturą blokową, gdyż nie pozwala na utworzenie funkcji wewnątrz innych funkcji (Schildt, 1998).