Procedurální programování je programování v imperativním jazyce , ve kterém mohou být sekvenčně prováděné příkazy sestaveny do podprogramů , tj. větších integrálních jednotek kódu , pomocí mechanismů jazyka samotného [1] .
Procedurální programování je odrazem tradiční počítačové architektury , kterou navrhl Von Neumann ve 40. letech 20. století. Turingův stroj slouží jako teoretický model pro procedurální programování . Provádění programu je redukováno na sekvenční provádění operátorů, aby se počáteční stav paměti, tedy hodnoty počátečních dat, převedl do konečného stavu, tedy výsledků. Z pohledu programátora tedy existuje program a paměť, přičemž první postupně aktualizuje obsah druhé paměti.
Procedurální programovací jazyk umožňuje programátorovi definovat každý krok v procesu řešení problému. Zvláštností takových programovacích jazyků je, že úkoly jsou rozděleny do kroků a řešeny krok za krokem. Pomocí procedurálního jazyka programátor definuje jazykové konstrukce k provedení sekvence algoritmických kroků. Důležitým krokem ve vývoji procedurálního programování byl přechod ke strukturálnímu paradigmatu , které vzniklo díky objevu možnosti vytvářet Turingovy úplné programy bez operátoru nepodmíněného skoku ( Boehm-Jacopiniho teorém ).
Většina časných imperativních programovacích jazyků, včetně Fortran , Cobol , Algol , BASIC , C , PL/1 , Pascal , Forth , jsou procedurální; pozdější imperativní jazyky, zejména ty, které implementují objektové paradigma ( Smalltalk , C++ , Java ), zpravidla nejsou klasifikovány jako procedurální, protože princip organizování prováděcích bloků do podprogramů je v nich implementován na jiné úrovni abstrakce. Jisté oživení procedurálního přístupu je pozorováno u řady skriptovacích jazyků ( Tcl , Perl , Lua , shellové jazyky ), nicméně většina z nich je multiparadigmata - umí vytvářet programy i v neprocedurálních stylech. (objektový, funkční ).