Il 0% ha trovato utile questo documento (0 voti)
250 visualizzazioni30 pagine

Diagrammi Di Flusso

Il documento descrive i diagrammi a blocchi e l'analisi strutturata per la rappresentazione grafica di algoritmi. Vengono introdotti i concetti di blocchi elementari, validità dei diagrammi e schemi di flusso strutturato come sequenza, selezione e iterazione. Sono poi riportati degli esercizi da svolgere.

Caricato da

Edoardo Cutini
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PPS, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
250 visualizzazioni30 pagine

Diagrammi Di Flusso

Il documento descrive i diagrammi a blocchi e l'analisi strutturata per la rappresentazione grafica di algoritmi. Vengono introdotti i concetti di blocchi elementari, validità dei diagrammi e schemi di flusso strutturato come sequenza, selezione e iterazione. Sono poi riportati degli esercizi da svolgere.

Caricato da

Edoardo Cutini
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PPS, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 30

Informatica

CdL Scienze e Tecniche Psicologiche


a.a. 2018-2019

Diagrammi di flusso
Sommario

 Diagramma a blocchi

 Analisi strutturata

 Esercizi

Informatica Andrea Frosini 2


Diagrammi a blocchi

E’ un linguaggio formale di tipo grafico per rappresentare gli algoritmi

Attraverso il diagramma a blocchi (o flow chart) si può indicare l’ordine


di esecuzione delle istruzioni.

Un particolare simbolo grafico detto blocco elementare è associato ad


ogni tipo di istruzione elementare

I blocchi sono collegati tra loro tramite frecce che indicano il susseguirsi
delle istruzioni

Informatica Andrea Frosini 3


Diagrammi a blocchi
I blocchi elementari sono:

begin leggi x A

blocco iniziale blocco di lettura blocco di azione

vero falso
scrivi x C
end

blocco finale blocco di scrittura blocco di controllo

Informatica Andrea Frosini 4


Diagrammi a blocchi
Un diagramma a blocchi descrive un algoritmo se:

 ha un blocco iniziale e uno finale

 è costituito da un numero finito di blocchi azione e/o blocchi


lettura/scrittura e/o blocchi di controllo

 ciascun blocco elementare soddisfa le seguenti condizioni di validità:

 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

Informatica Andrea Frosini 5


Esercizio

Scrivere un algoritmo e rappresentarlo tramite un diagramma a blocchi per i


seguenti problemi:

 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

Informatica Andrea Frosini 6


Analisi strutturata
Analisi volta alla stesura di descrizioni di algoritmi tramite diagrammi a
blocchi di tipo strutturato

Un diagramma a blocchi strutturato è più comprensibile e modificabile

In un diagramma strutturato non apparirà mai una istruzione di salto


incondizionato

Teorema di Bohm-Jacopini
Ogni diagramma a blocchi non strutturato è sempre trasformabile in
un diagramma a blocchi strutturato ad esso equivalente

Due diagrammi sono equivalenti se partendo dagli stessi dati iniziali


producono gli stessi risultati

Informatica Andrea Frosini 7


Analisi strutturata

Una descrizione è di tipo strutturato se i blocchi sono collegati tramite i


seguenti schemi di flusso strutturato:

 schema di sequenza

 schema di selezione

 schema di iterazione

Informatica Andrea Frosini 8


Analisi strutturata: schema di sequenza

Schema di sequenza:
due o più schemi di flusso
begin
sono eseguiti in successione

S1

Nota: lo schema di sequenza


è strutturato se e solo se lo S2
sono i blocchi S1 e S2

end

Informatica Andrea Frosini 9


Analisi strutturata: schema di selezione

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

Informatica Andrea Frosini 10


Analisi strutturata: schema di iterazione
Schema di iterazione (ciclo o loop):
modo conciso per descrivere azioni che devono essere ripetute

begin begin

S1 S1

vero falso
C C

falso vero

end end

Informatica Andrea Frosini 11


Analisi strutturata: schema di iterazione
Nota:
I due schemi non sono equivalenti: in un caso lo schema S1 è eseguito
almeno una volta e nell’altro potrebbe non essere mai eseguito

La condizione vero/falso per il controllo possono essere invertite: si parla di


iterazione per vero quando S1 è eseguito finché la condizione su C è vera e
iterazione per falso nell’altro caso

Quando è necessario eseguire lo stesso insieme di operazioni per un numero


specificato di volte si adotta un particolare schema di iterazione:
 inizia con una sequenza di azioni di assegnazione dette istruzioni di
inizializzazione
 possiede sequenza di azioni (iterazione) che viene ripetuta per un numero
specificato di volte

Informatica Andrea Frosini 12


Analisi strutturata

inizializzazione inizializzazione

iterazione
falso condizione
di fine ciclo

falso vero
condizione
di fine ciclo
iterazione

vero

Informatica Andrea Frosini 13


Analisi strutturata

Condizione di fine ciclo:


viene controllata dopo l’esecuzione di ogni blocco di iterazione, può
essere con controllo in coda al ciclo o in testa

Un ciclo è detto enumerativo quando è noto a priori il numero di volte


che deve essere eseguito

Si usa un contatore di ciclo per controllarne l’esecuzione: si usa cioè


una variabile che viene incrementata (o decrementata) fino a
raggiungere un valore prefissato

Informatica Andrea Frosini 14


Analisi strutturata

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

Informatica Andrea Frosini 15


Svolti:
Esercizi
1. Ricerca di un elemento in un vettore
2. Determinare il massimo numero in un vettore
3. Media di un vettore
4. Fare il prodotto tra due numeri in ingresso utilizzando solo la somma
5. Stampa del resto della divisione intera tra due numeri (senza la funzione
mod)
Da svolgere:
6. Stampa dei multipli di un numero in ingresso minori di 100
7. Stampa della massima potenza minore di 100 di un numero in ingresso
8. Approssimazione intera, per eccesso, della radice quadrata di un numero in
ingresso
9. Stampa il quoziente della divisione intera tra due numeri utilizzando solo la
funzione differenza
10. Preso un numero x in input, se x<10 allora stampa “ciao” 5 volte, se x>20
allora stampa “evviva” x volte, altrimenti chiedi un numero y in input e
stampa “salve” x-y volte, se x>y, y-x volte altrimenti.
Informatica Andrea Frosini 16
Soluzione esercizio 1.

Passo 1: per procedere alla soluzione dell’esercizio cerchiamo di avere ben chiaro
il problema che dobbiamo affrontare.
In special modo dobbiamo isolare:

1. I dati in ingresso (variabili) che sono richiesti all’utente;

1. I dati costanti che sono propri del problema;

1. L’output richiesto per ciascun insieme di input.

Per essere sicuri di aver compreso perfettamente il problema facciamo una serie
di esempi calcolando alcuni output a partire da input diversi.

Informatica Andrea Frosini 17


Soluzione esercizio 1.

Passo 2: analizziamo il modo di risolvere il problema che abbiamo utilizzato


durante gli esempi, chiarendo a noi stessi quali passi ci hanno portato ad una
soluzione a partire dai dati in ingresso.

SE I PASSI PER LA SOLUZIONE DEL PROBLEMA NON CI SONO ANCORA


SUFFICIENTEMENTE CHIARI, TORNIAMO INDIETRO FACENDO ALTRI ESEMPI!!!

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.

Informatica Andrea Frosini 18


Soluzione esercizio 1: dettagli
Relativamente all’esercizio 1 abbiamo:

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.

2. Dati costanti del problema:


a. Eventualmente la dimensione del vettore di ingresso, altrimenti nessuno

Procediamo con un esempio:


Input: Vettore=(2,5,43,72,0,26,2,4) Elemento = 26
Output: “Elemento trovato”
Procedura: esamino il primo elemento del vettore, se è 26 dico “Elemento
trovato”, altrimenti proseguo con il secondo elemento. Se il secondo elemento
è 26 dico “Elemento trovato”, altrimenti passo al terzo elemento e così via fino
alla fine degli elementi del vettore.
Se l’elemento non è stato trovato dico “Elemento NON trovato”
Informatica Andrea Frosini 19
Soluzione esercizio 1:dettagli
Relativamente all’esercizio 1 abbiamo:

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:

Informatica Andrea Frosini 20


Soluzione esercizio 1: diagramma
begin

INPUT Passo 1, 1: dati


in input dall’utente
Vettore , Elemento

i0 Passo 1, 1:
dimensione Vettore  K costanti del problema

vero OUTPUT
i  i+1 i=K Elemento NON trovato

falso end

falso vero OUTPUT


Vettore [i] = Elemento Elemento trovato

Informatica Andrea Frosini 21


Soluzione
Passo 2: ad ogni
esercizio 1: diagramma
passo la variabile di
ciclo i viene begin
aumentata di 1
scorrendo gli
INPUT Passo 2: la variabile di ciclo i
elementi di Vettore
arriverà fino alla fine di Vettore
Vettore , Elemento

i0 Passo 2: controllo se l’ i-esimo


dimensione Vettore  K elemento del Vettore è quello cercato

vero OUTPUT
i  i+1 i=K Elemento NON trovato

falso end

falso vero OUTPUT


Vettore [i] = Elemento Elemento trovato

Informatica Andrea Frosini 22


Soluzione esercizio 1: diagramma
begin

INPUT
Vettore , Elemento

i0

vero OUTPUT
i  i+1 i = dimensione Vettore Elemento NON trovato

falso end

falso vero OUTPUT


Vettore [i] = Elemento Elemento trovato

Informatica Andrea Frosini 23


Soluzione esercizio 2: diagramma
begin

INPUT
Vettore

i0
Max  Vettore [ i ]
i  i+1

vero OUTPUT
i = dimensione Vettore Max

Max  Vettore [ i ] falso

end
falso
Vettore [ i ] > Max
vero

Informatica Andrea Frosini 24


Soluzione esercizio 3: diagramma
begin

INPUT
Vettore

i0
Media  0
K  dimensione Vettore

vero Media  Media / K OUTPUT


i=K Media

falso
Media  Media + Vettore [ i ] end
i  i+1

Informatica Andrea Frosini 25


Soluzione esercizio 4: diagramma
begin

INPUT
X, Y

i0
Prod  0

vero OUTPUT
i=Y Prod

falso
Prod  Prod + X end
i  i+1

Informatica Andrea Frosini 26


Soluzione esercizio 5: diagramma
begin

INPUT Qui potrebbero essere eventualmente


inseriti i controlli
X, Y “Y diverso da 0”
“X o Y negativi”

vero OUTPUT
X<Y X

falso

XX-Y end

Informatica Andrea Frosini 27


Principali corrispondenze diagrammi di flusso – istruzioni VBA

Blocco di azione:
- instanziare/aggiornare il valore di una variabile
- fare calcoli ecc…

i <- 0 i <- i+1 V[4] <- 2*(3+5) i = 0; i = i+1; V[4]= 2*(3+5)

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)

OUT OUT msgbox Vett[i] & x


Vett[i] , x “Ciao Pluto” msgbox “Ciao Pluto”
Principali corrispondenze diagrammi di flusso – istruzioni VBA

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

If x = 8+3 then OUT


“ciao”
msgbox x
else
x = 5
End if
Principali corrispondenze diagrammi di flusso – istruzioni VBA

Cicli: utilizzati tutte le volte che si deve ripetere più volte una stessa azione

1. Scorrere gli elementi di un vettore stampandoli

i <- 0 i=k end


k=dim Vett For i = 0 to k-1
V
msgbox “elemento ” & V(i)
F Next

OUT
i <- i+1 Vett[i]

2. Stampare i multipli di un numero in ingresso fino a 100


For i = 0 to 100/num
msgbox i*num
IN i*num < 100
i <- 0 Next
num
F
V
end
OUT
i <- i+1 i*num

Potrebbero piacerti anche