Le idee chiave della programmazione strutturata si possono ricondurre alla critica della
struttura di controllo del
salto incondizionato (o
goto, "vai a"), che rappresentava, negli
anni sessanta, lo strumento fondamentale per la definizione di
algoritmi complessi nel software. In un celebre articolo del
1968,
Goto statement considered harmful,
Edsger Dijkstra discusse approfonditamente gli effetti deleteri del
goto sulla qualità del software, e in particolare sulla sua
leggibilità e
modificabilità (il cosiddetto problema dello
spaghetti code).
Un'altra celebre pubblicazione che risultò fondamentale all'affermarsi della programmazione strutturata fu
Flow Diagrams, Turing Machines, and Languages with Only Two Formation Rules, in cui
Corrado Böhm e
Giuseppe Jacopini dimostrarono il loro celebre
teorema. Secondo tale teorema, qualsiasi programma scritto usando il
goto poteva essere riscritto senza, a patto di avere a disposizione altri tre tipi di strutture di controllo:
sequenza,
ripetizione e
alternativa. Il risultato di Böhm-Jacopini può anche essere espresso dicendo che, dato un qualunque
diagramma di flusso, ne esiste almeno un altro che a parità di input produce sempre gli stessi output del primo e in cui i nodi del diagramma di flusso rispettano un certo insieme di vincoli.