Diagrammi Di Flusso
Diagrammi Di Flusso
Diagrammi di flusso
Sommario
Diagramma a blocchi
Analisi strutturata
Esercizi
I blocchi sono collegati tra loro tramite frecce che indicano il susseguirsi
delle istruzioni
begin leggi x A
vero falso
scrivi x C
end
ciascun blocco azione, lettura/scrittura ha una sola freccia entrante e una sola
freccia uscente
ciascun blocco di controllo ha una sola freccia entrante e due uscenti
ciascuna freccia entra in un blocco o si innesta su una altra freccia
ciascun blocco è raggiungibile dal blocco iniziale
il blocco finale è raggiungibile da qualsiasi altro blocco
attraversare la strada
preparare la pasta
calcolare l’area del triangolo
determinare le radici di una eq. di 2° grado
determinare la somma di due numeri
Teorema di Bohm-Jacopini
Ogni diagramma a blocchi non strutturato è sempre trasformabile in
un diagramma a blocchi strutturato ad esso equivalente
schema di sequenza
schema di selezione
schema di iterazione
Schema di sequenza:
due o più schemi di flusso
begin
sono eseguiti in successione
S1
end
begin begin
Schema di selezione:
esiste un blocco di controllo
che permette di scegliere falso vero falso vero
C C
quale schema di flusso
debba essere eseguito tra S1 S2 S1
due schemi, in funzione
del valore di verità
del controllo
end end
begin begin
S1 S1
vero falso
C C
falso vero
end end
inizializzazione inizializzazione
iterazione
falso condizione
di fine ciclo
falso vero
condizione
di fine ciclo
iterazione
vero
Un ciclo è indefinito quando non è noto a priori il numero di volte che deve
essere eseguito
Questo accade quando la condizione di fine ciclo dipende dal valore di una o
più variabili che
o dipendono dall’interazione con l’esterno
o vengono modificate all’interno dell’iterazione in modo complesso
Passo 1: per procedere alla soluzione dell’esercizio cerchiamo di avere ben chiaro
il problema che dobbiamo affrontare.
In special modo dobbiamo isolare:
Per essere sicuri di aver compreso perfettamente il problema facciamo una serie
di esempi calcolando alcuni output a partire da input diversi.
Passo 3: Ciascun passo da noi trovato va infine tradotto in uno o più passi
elementari, cioè passi che possono essere descritti tramite i blocchi a
disposizione e gli schemi descritti in precedenza.
Passo 1:
1. Dati richiesti all’utente:
a. Vettore (di numeri) all’interno del quale cercare il nostro elemento;
b. Elemento (numero) che deve essere cercato.
Passo 2:
Analisi e caratteristiche dell’algoritmo da noi descritto nella procedura di soluzione:
1. l’algoritmo presenta una parte nella quale si richiede di controllare tutti gli
elementi del vettore.
Questo immediatamente ci fa pensare alla presenza di un ciclo nel quale sarà
necessaria una variabile che successivamente prenderà i valori delle posizioni
del vettore, per tutta la sua lunghezza.
2. Tale ciclo dovrà terminare con esito positivo quando l’elemento è stato trovato, e
con esito negativo quando la variabile di ciclo ha raggiunto la fine del vettore
Passo 3:
Avendo in mente le considerazioni fatte, si procede infine alla formalizzazione del
diagramma di flusso come segue:
i0 Passo 1, 1:
dimensione Vettore K costanti del problema
vero OUTPUT
i i+1 i=K Elemento NON trovato
falso end
vero OUTPUT
i i+1 i=K Elemento NON trovato
falso end
INPUT
Vettore , Elemento
i0
vero OUTPUT
i i+1 i = dimensione Vettore Elemento NON trovato
falso end
INPUT
Vettore
i0
Max Vettore [ i ]
i i+1
vero OUTPUT
i = dimensione Vettore Max
end
falso
Vettore [ i ] > Max
vero
INPUT
Vettore
i0
Media 0
K dimensione Vettore
falso
Media Media + Vettore [ i ] end
i i+1
INPUT
X, Y
i0
Prod 0
vero OUTPUT
i=Y Prod
falso
Prod Prod + X end
i i+1
vero OUTPUT
X<Y X
falso
XX-Y end
Blocco di azione:
- instanziare/aggiornare il valore di una variabile
- fare calcoli ecc…
Blocco di ingresso/uscita:
- prendere dati dall’esterno (l’utente li inserirà da tastiera)
e memorizzarli in una variabile
- inviare in output a video una variabile o del testo
x = inputbox (“Inserire x”)
IN IN L’ingresso del vettore viene realizzato con un ciclo
x Vett avente istruzione tipo
Vett[i] = inputbox (“Elemento “ & i)
Blocco di controllo:
- instanziare/aggiornare il valore di una variabile
- fare calcoli ecc…
If V(i) = x*x
V F V[i] = x*x V then
x = 8 +3
F if i < 100 then
msgbox “ciao”
End if
OUT x <- 5 F i < 100
End if
x
end end
V
Cicli: utilizzati tutte le volte che si deve ripetere più volte una stessa azione
OUT
i <- i+1 Vett[i]