Procedural programming
Procedural programming describes a way of decomposing a programming problem, when a larger problem is decomposed into smaller ones by means of subprograms. This type of decomposition is called procedural. It is typical for imperative programming and functional programming paradigms.
In object-oriented programming procedural decomposition plays a subordinate role. Subprograms become methods of objects, which replace the former as building blocks.
Historically procedural programming played a decisive role in the creation of programming solutions to engineering problems.