sequenza, selezione, iterazione - alice...
TRANSCRIPT
Alice Pavarani
Sequenza, Selezione, Iterazione
Programmazione strutturata
V B - Sistemi Informativi Aziendali 2
La possibilità data dai diagrammi a blocchi di selezionare l’istruzione successiva senza seguire regole può portare ad algoritmi difficilmente leggibili e non modificabili
La programmazione strutturata fornisce un approccio differente: impone all’insieme delle istruzioni delle strutture ben definite
Costrutto strutturato è un insieme di istruzioni con un solo punto di ingresso ed un solo punto di uscita
Strutture fondamentali
V B - Sistemi Informativi Aziendali 3
Sequenza
Selezione
Iterazione
Nel 1966 gli informatici italiani Corrado Böhm e Giuseppe Jacopini dimostrarono uno dei più importanti teoremi di informatica teorica:
Qualunque algoritmo può essere espresso utilizzando solamente le tre strutture di controllo fondamentali:
sequenza, selezione, iterazione
Sequenza
V B - Sistemi Informativi Aziendali 4
Una struttura per cui non è possibile, in alcun modo, alterare il flusso di esecuzione si definisce sequenza
Nel linguaggio C/C++ sono le
parentesi graffe a delimitare una
sequenza di istruzioni
Selezione
V B - Sistemi Informativi Aziendali 5
La selezione è un costrutto in grado di alterare la linearità del flusso di esecuzione
Detta anche struttura di controllo decisionale
I costrutti di controllo devono avere un solo punto di ingresso ed un solo punto di uscita
condizione logica
istruzione
VERO FALSO condizione logica
istruzione1
VERO FALSO
istruzione2
Selezione (i costrutti if e if-else)
se … allora se … allora … altrimenti
V B - Sistemi Informativi Aziendali 6
Pseudolinguaggio
Linguaggio C
Pseudolinguaggio
Linguaggio C
Se <condizione> Allora
<istruzione>
FineSe
Se <condizione> Allora
<istruzione1>
Altrimenti
<istruzione2>
FineSe
if (<condizione>)
<istruzione>;
if (<condizione>)
<istruzione1>;
else
<istruzione2>;
Iterazione
V B - Sistemi Informativi Aziendali 7
L’iterazione è un costrutto che consente di ripetere più volte l’esecuzione di un blocco di istruzioni
Iterazione guidata da eventi consente di eseguire un blocco di istruzioni senza sapere a priori quante volte queste verranno ripetute
Tutto dipende dal fatto che una certa condizione si verifichi o meno
Iterazione enumerativa consente di eseguire un blocco di istruzioni un numero predefinito di volte
Iterazione postcondizionale
V B - Sistemi Informativi Aziendali 8
Iterazione fondamentale, cioè tutte le altre iterazioni possono essere definite a partire da questa
Il blocco di istruzioni da iterare viene eseguito almeno una volta
Alla fine di ogni iterazione viene verificata una condizione
L’iterazione si ripete fintanto che la condizione risulta vera
c
istruzione1
istruzione2
… … …
condizione logica VERO FALSO
corpo del
ciclo
Iterazione precondizionale
V B - Sistemi Informativi Aziendali 9
La condizione viene verificata in testa al ciclo
Il blocco di istruzioni può, nel caso in cui la condizione risulti subito falsa, non essere mai eseguito
L’iterazione si ripete fintanto che la condizione risulta vera
condizione logica VERO FALSO
istruzione1
istruzione2
… … …
corpo del
ciclo
Iterazione guidata da eventi (i cicli while e do-while)
ripeti … finQuando finQuando … esegui
V B - Sistemi Informativi Aziendali 10
Pseudolinguaggio
Linguaggio C
Pseudolinguaggio
Linguaggio C
Ripeti
<istruzione1>
<istruzione2>
… … …
FinQuando (<condizione>)
finché <condizione> esegui
<istruzione1>
<istruzione2>
… … …
fineFinché
do
{
<istruzione1>;
<istruzione2>;
… … …
} while (<condizione>);
while (<condizione>)
{
<istruzione1>;
<istruzione2>;
… … …
}
Iterazione enumerativa
V B - Sistemi Informativi Aziendali 11
Quando il numero di iterazioni è noto a priori può essere più comodo utilizzare un’iterazione enumerata
NOTA: Le strutture iterative già presentate (guidate da eventi) possono essere utilizzate anche in queste situazioni
Viene utilizzata una variabile contatore che ha la funzione di contare il numero di iterazioni
Il contatore:
inizializzato prima del ciclo (valore di partenza)
incrementato ad ogni iterazione (step o passo di esecuzione)
controllato ad ogni iterazione mediante una condizione
Iterazione guidata da eventi (il ciclo for)
V B - Sistemi Informativi Aziendali 12
Pseudolinguaggio
Linguaggio C
per <contatore> da <inizio> a <fine> passo <step> esegui
<istruzione1>
<istruzione2>
… … …
finePer
for (<inizializzazione> ; <condizione> ; <incremento>)
{
<istruzione1>;
<istruzione2>;
… … …
}
eseguita prima del ciclo ed utilizzata per
inizializzare il contatore
condizione logica necessaria perché venga eseguito il corpo del ciclo
eseguita ad ogni iterazione ed utilizzata per
l’incremento/decremento del contatore
Iterazioni
V B - Sistemi Informativi Aziendali 13
E’ sempre possibile realizzare un’iterazione enumerativa mediante un’iterazione guidata da eventi
contatore = 1
finché (contatore <= n) esegui
<istruzione1>
<istruzione2>
… … …
contatore = contatore + step
fineFinché
inizializzazione contatore
condizione di controllo terminazione
blocco di istruzioni da iterare = corpo del ciclo
incremento contatore
Cicli annidati
V B - Sistemi Informativi Aziendali 14
NOTA: All’interno di qualunque blocco iterativo si può inserire qualsiasi tipo di istruzione
Si può includere anche un’istruzione di selezione o di iterazione, in tal caso si parla di annidamento (o nidificazione) dei cicli