Programmazione strutturata: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
- voci non esistenti tra le correlate
m Collegamenti esterni: Aggiunto il parametro "Nome del soggetto" nel template "FOLDOC"
 
(16 versioni intermedie di 15 utenti non mostrate)
Riga 3:
 
== Origini concettuali ==
Le idee chiave della programmazione strutturata si possono ricondurre alla critica della [[struttura di controllo]] del ''[[GOTO|salto incondizionato]]'' (o ''goto'', "vai a"), che rappresentava, negli [[anni 1960|anni sessanta]], lo strumento fondamentale per la definizione di [[algoritmo|algoritmi]] complessi nel software. In un celebre articolo del [[1968]], [https://web.archive.org/web/20070703050443/http://www.acm.org/classics/oct95/ ''Goto statement considered harmful''], [[Edsger Dijkstra]] discusse approfonditamente gli effetti deleteri del ''goto'' sulla qualità del software, e in particolare sulla sua [[leggibilità (software)|leggibilità]] e [[modificabilità (software)|modificabilità]] (il cosiddetto problema dello ''[[spaghetti code]]'').
 
Le idee chiave della programmazione strutturata si possono ricondurre alla critica della [[struttura di controllo]] del ''[[GOTO|salto incondizionato]]'' (o ''goto'', "vai a"), che rappresentava, negli [[anni 1960|anni sessanta]], lo strumento fondamentale per la definizione di [[algoritmo|algoritmi]] complessi nel software. In un celebre articolo del [[1968]], [http://www.acm.org/classics/oct95/ ''Goto statement considered harmful''], [[Edsger Dijkstra]] discusse approfonditamente gli effetti deleteri del ''goto'' sulla qualità del software, e in particolare sulla sua [[leggibilità (software)|leggibilità]] e [[modificabilità (software)|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 [[Teorema di Böhm-Jacopini|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'', ''selezione'' e ''ciclo''. 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.
 
== La strutturazione del controllo ==
 
{{Vedi anche|Struttura di controllo}}
Le strutture di controllo ammesse dai linguaggi strutturati, e le regole sintattiche e semantiche del loro uso, possono variare nei dettagli specifici; tuttavia, devono essere rispettati un insieme di requisiti fondamentali:
Riga 36 ⟶ 34:
 
[[File:progr_strutt_alternative.gif|center|Due tipi di alternative strutturate]]
Finestra
 
=== Nuove rappresentazioni grafiche. ===
[[File:Structured program patterns.png|thumb|upright=3.2|center|In azzurro i diagrammi scatuli o di [[:en:Nassi–Shneiderman diagram|Nassi–Shneiderman]], inventati per la nuova teoria. In verde vedete i loro equivalenti.]]
=== Componibilità ===
 
=== Componibilità ===
Il seguente diagramma mostra un esempio di composizione di due strutture di controllo: una struttura di selezione viene inserita in una iterativa. Si può osservare che l'intera composizione mantiene un unico punto d'ingresso e un unico punto d'uscita.
 
Riga 46 ⟶ 45:
 
== I linguaggi di programmazione strutturati ==
 
I '''linguaggi di programmazione strutturati''' iniziarono a emergere intorno all'inizio degli [[anni 1970|anni settanta]]. Incorporando le [[Teorema di Böhm-Jacopini|idee di Böhm e Jacopini]], essi offrivano un insieme di strutture di controllo completo, ovvero almeno una forma di sequenza, una di alternativa e una di iterazione. In effetti, nella maggior parte dei casi, venivano fornite alcune varianti per ciascuna famiglia di strutture di controllo. Quasi tutti i progettisti di questi linguaggi, comunque, mantennero il ''goto'' come possibile strumento per la strutturazione del controllo (spesso sconsigliandone l'uso).
 
Riga 55 ⟶ 53:
* [[Pascal (linguaggio)|Pascal]]
* [[ALGOL]]
* [[C (linguaggio)|C++]]
 
== La programmazione strutturata nella storia della programmazione ==
 
La programmazione strutturata rappresenta una tappa fondamentale dell'evoluzione della cosiddetta programmazione ''mainstream'', ovvero di quella sequenza di paradigmi che, nel corso degli anni, l'uno succedendo all'altro, hanno dominato il mondo dell'industria del software. In particolare, sia il successivo paradigma della [[programmazione modulare]] che il paradigma della [[programmazione orientata agli oggetti]] hanno mantenuto gli stessi princìpi della programmazione strutturata per quanto concerne la strutturazione del controllo "ordinario" e "sequenziale", introducendo nuovi meccanismi solo per affrontare le tematiche (nate successivamente) della [[gestione delle eccezioni]] e dello sviluppo di [[programmazione concorrente|programmi concorrenti]].
 
Riga 69 ⟶ 66:
* [[Programmazione procedurale]]
* [[Teorema di Böhm-Jacopini]]
 
== Altri progetti ==
{{interprogetto|preposizione=sulla}}
 
== Collegamenti esterni ==
* {{FOLDOC|structured programming|structured programming}}
* [https://web.archive.org/web/20070703050443/http://www.acm.org/classics/oct95/ ''Go To Statement Considered Harmful''] l'articolo originale di [[Edsger Dijkstra]]
* {{cita web|url=httphttps://portal.acm.org/citation.cfm?id=365646&jmp=cit&dl=GUIDE&dl=ACM&CFID=10941068&CFTOKEN=59269176#CIT|titolo=Formulazione originale del teorema di Böhm-Jacopini}}
* {{cita web|http://algobuild.com/|Algobuild: Editor gratuito di flow chart e pseudo codice strutturati (EN - IT)}}
 
{{Paradigmi di programmazione}}
{{Controllo di autorità}}
{{Portale|informatica}}
 
[[Categoria:Paradigmi di programmazione|Strutturata]]