Utente:Michele Rofrano/Programmazione strutturata

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Questa è la pagina di prova dove Michele Rofrano, Luca Sileo, Alessandro Galiffa e Luigi Colicelli approfondiranno il seguente argomento: la programmazione strutturata e costrutto sequenza.

La programmazione strutturata[modifica | modifica wikitesto]

In informatica la programmazione strutturata è un esempio di programmazione nato durante gli anni sessanta e gli anni settanta nel contesto della programmazione procedurale. I concetti introdotti dalla programmazione strutturata sono alla base di numerosi altri paradigmi procedurali successivi, non ultimo quello orientato agli oggetti.

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, 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. 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 alcuni requisiti fondamentali:

  • Completezza. Un linguaggio strutturato deve fornire la sequenza, almeno una struttura di tipo alternativa, e almeno una struttura di tipo iterativa;
  • Singolo punto di ingresso e di uscita. Idealmente, ogni struttura di controllo, completa delle istruzioni controllate, deve poter essere considerata come una singola macro-istruzione dal punto di vista del controllo complessivo, con un ben identificato punto di ingresso e un ben identificato punto di uscita.
  • Componibilità. Ogni struttura di controllo può avere fra le sue istruzioni controllate, ricorsivamente, altre strutture di controllo (senza limiti).

Questi due vincoli fanno sì che, per quanto concerne il flusso del controllo, ciascuna struttura di controllo definisca un ambito completamente isolato dalle altre, e incapace di interferire o subire interferenze. Questo rappresenta un requisito indispensabile per l'applicazione di metodologie di progetto e sviluppo tradizionalmente legate alla programmazione strutturata, come la progettazione top-down e lo sviluppo per raffinamenti successivi.

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 programmi concorrenti.

Il costrutto sequenza[modifica | modifica wikitesto]

La sequenza è il più semplice fra i tre costrutti fondamentali. Viene utilizzata quando le azioni devono essere eseguite una dopo l'altra senza poter scegliere. Le istruzioni vengono scritte una dopo l'altra separandole per esempio con un punto, una virgola o scrivendo un istruzione per riga, verranno eseguite poi successivamente una dopo l'altra nell'ordine in cui sono state scritte.

Bibliografia[modifica | modifica wikitesto]

  • P. Gallo - P. Sirsi, Cloud: informatica - secondo biennio, Milano, 2012, pp. 52-53.