Structured programming is a paradigm with at least two possible meanings:
low-level meaning implies that program logic is constructed of several sub-structures combined in a certain way. The elementary sub-structures usually are sequence (execution of several statements or blocks in certain order), selection (execution of one of a list of statements depending on the current program state) and repetition (execution of one block of statements several times). Most modern imperative languages support this understanding of structured programming.
higher-level meaning implies that program logic is divided into several subprograms, each of them having one point of entry. The opinion about the number of points of exit varies: multiple exit points are often used when program logic branches to signalize that an error occurred in one of the branches or the job is done. Sure enough, procedures with multiple exit points can usually be rewritten to have only one exit point, but this unnecessarily over-complicates the code. This meaning is somewhat similar to procedural programming.
The main achievement of this paradigm is that it reduces the importance of GOTO statements. Most modern imperative languages still implements GOTO statements in some form, but it ceased to be the main means of flow control.
Structured programming is a sub-paradigm of imperative programming.
- Algol68 (dialects: Algol68 r0, Algol68 r1, Algol68 sublanguage)
- C (dialects: ANSI C, C11, C99, K&R C)
- C# (dialects: Cω, Polyphonic C#)
- Pascal (dialects: Extended Pascal, Standard Pascal)