NOTE
Si parla di programmazione strutturata se si utilizzano solo le seguenti strutture per alterare il flusso di controllo [Dijkstra, 1969]:
In questo modo è possibile scrivere un programma come una sequenza di istruzioni o blocchi di istruzioni più o meno complesse, in modo che ciascun blocco di istruzioni preveda un solo ingresso e una sola uscita.
Risorse in rete:
Archivio sulla vita e le opere di Edsger Wybe Dijkstra sul sito dell’Università di Austin, Texas
Letture:
Due programmi si dicono funzionalmente equivalenti se, sottoposti ad un qualsiasi insieme di dati d’ingresso, entrambi terminano producendo gli stessi dati d’uscita o entrambi non terminano.
Insiemi funzionalmente completi
Un insieme S di istruzioni strutturate è funzionalmente completo se, per ogni programma P in un linguaggio L, ne esiste uno funzionalmente equivalente che usa solo le istruzioni strutturate di S.
L’insieme S costituito dalle strutture
È un insieme funzionalmente completo.
In altre parole:
L’uso delle strutture di controllo ci consente di
Risorse in rete:
Il comportamento delle istruzioni per il controllo della sequenza dinamica può essere descritto graficamente attraverso un diagramma di flusso:
Esempio:
{
a=3;
a=a+b;
}
Q, S1, S2 rappresentano sequenze di istruzioni, R rappresenta una condizione logica da valutare.
L’esecuzione di un’istruzione di selezione di tipo if-then-else produce nell’ordine:
Q e S rappresentano sequenze di istruzioni. R rappresenta una condizione logica da valutare.
In questo caso la parte “else” è vuota.
Istruzione vuota: non produce alcun effetto.
La parte-then e la parte-else possono a loro volta contenere istruzioni di selezione dando luogo a scelte in cascata che permettono di descrivere algoritmi che devono operare una scelta tra più di due alternative.
Una volta che una condizione risulta verificata, le rimanenti istruzioni sono saltate.
Indentazioni profonde non sono molto usate in pratica.
case e
val1: S1;
val2: S2;
…;
valn: Sn
end
L’esecuzione di un’istruzione di tipo case produce nell’ordine:
Nella struttura case l’espressione che viene valutata deve assumere valori in un insieme discreto.
Una selezione multipla si può implementare anche mediante più costrutti if-then in sequenza o con più costrutti if-then-else innestati (ma le tre figure non sono equivalenti).
S è detta “corpo” dell’istruzione iterativa
E’ necessario specificare:
Esempi
2. Introduzione al modello di von Neumann
5. Informazione, Elaborazione e Algoritmo
6. Elementi di Architettura: Struttura di un sistema di elaborazione
7. Elementi di Architettura: Memorie, Unità di ingresso e uscita
9. Programmazione - Tipi semplici, Variabili e Costanti
10. Programmazione: Istruzioni semplici
11. Programmazione , Programmazione Strutturata, Istruzioni Strutturate
12. Programmazione - Semplici Esercizi Svolti in C++
13. Programmazione - Metodologia di sviluppo per raffinamenti successivi
C. Boehm and G. Jacopini. Flow diagrams, turing machines and languages with only two formation rules. Communications of the ACM, pages 366–371, May 1966
Fadini, C. Savy, Fondamenti di Informatica I, Napoli, Liguori Ed., 1997, Parte 2, cap. V.