31
Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I diagrammi di flusso visualizzano graficamente i passi da cui sono formati gli algoritmi e l’ordine in cui devono essere eseguiti. Un diagramma di flusso è una descrizione formale, (cioè rispetta una precisa sintassi), più efficace e meno ambigua di una descrizione a parole.

Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

  • Upload
    others

  • View
    20

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Diagrammi di flusso (Flow Chart)

I diagrammi di flusso sono un formalismo grafico per

descrivere gli algoritmi.

I diagrammi di flusso visualizzano graficamente i

passi da cui sono formati gli algoritmi e l’ordine in

cui devono essere eseguiti.

Un diagramma di flusso è una descrizione formale,

(cioè rispetta una precisa sintassi), più efficace e

meno ambigua di una descrizione a parole.

Page 2: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Diagrammi di flusso Operazioni rappresentabili in un diagramma di flusso:

Ingresso/Uscita dati (rappresentate come schede)

Operazioni sui dati (rappresentate come rettangoli)

Trasferimento di informazione (assegnazioni)

Calcolo di espressioni aritmetiche e logiche

Verifica di condizioni (rappresentate come rombi)

Assunzione di decisioni o cicli (combinazioni di

rettangoli e rombi) Se… allora …

Ripeti per N volte

Ripeti finché ….

Possono utilizzare costanti e variabili

Page 3: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Diagrammi di flusso

Un diagramma di flusso è costituito da due tipi di entità:

Nodi

rappresentano le operazioni e gli stati di inizio e fine

dell’algoritmo

Archi orientati (di solito segmenti di retta orientati

secondo la direzione indicata da una freccia)

Collegano fra loro i nodi, rappresentando con frecce il

‘flusso’ dei dati, cioè la sequenza delle operazioni:

l’istruzione contenuta in un nodo è seguita

dall’esecuzione dell’operazione contenuta nel nodo a

cui punta l’arco uscente da esso

Una struttura di questo tipo è detta grafo (orientato)

Page 4: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Tipi di Nodi

Inizio

Scrittura dati (output)

Var1

Lettura dati (input)

Var1

Elaborazione / Assegnazione

Var1 Espr1

Decisione

No Sì

Espr1 = Espr2

Espr1 Espr2

Espr1 > Espr2

Espr1 Espr2

Espr1 < Espr2

Espr1 Espr2

Start

Fine

Stop

Page 5: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esempio

Var1

Var1

Start

Stop

Inizio

Leggi un valore (ad es. 10) che sarà

assegnato alla variabile Var1

Stampa il contenuto di Var1 (stampa 10)

Fine

Page 6: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esempio 2

Var1

Var1

Var1 Var1 + 1

Start

Stop

Inizio

Leggi un valore (ad es. 10) e inseriscilo

nella locazione di memoria

corrispondente alla variabile Var1

Aggiungi 1 a quel valore

Stampa il nuovo valore (stampa il

contenuto di

Var1 cioè 11)

Fine

Page 7: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Strutture di Controllo

If - Then - Else

No Sì

O2 O1

C

Se la condizione C è vera

esegue l’operazione (o sequenza) O1,

altrimenti

esegue O2

Page 8: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esempio 3

Var1

Var1

Var1 Var1 + 1 No

Start

Stop

Var1 > 10 Se Var1 > 10

stampa Var1

Altrimenti

incrementa di 1 Var1

e poi stampa Var1

Inizio

Leggi Var1

Fine

Page 9: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Strutture di Controllo: Cicli

Ciclo While

Ciclo For

No

Ripete una stessa

operazione (o sequenza)

O finché la condizione C

resta vera

C

O

Ciclo Repeat - Until

No Sì

O

C

Ripete una stessa

operazione (o sequenza) O

finché la condizione C non

diventa vera

Page 10: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Programmazione Strutturata

Si compone di sequenze di azioni, decisioni (if

then, if then else) e cicli (do-while, repeat until).

Ogni diagramma ha esattamente un ingresso ed

una uscita

Ogni azione può essere

Un’operazione semplice

Un’ azione composta da altri diagrammi strutturati

Page 11: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esempio: Somma di due Numeri

Start

Var1

Var2

Somma Var1 +Var2

Somma

Stop

Page 12: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Somma

Stop

Esempio: Somma di N Numeri

Start

N

Somma Somma + Var I 0

Somma 0

No

I < N

Var

I I + 1

Page 13: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

MATLAB

Page 14: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 14

L’ambiente MATLAB

Page 15: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 15

Linguaggio di programmazione orientato

all'elaborazione di matrici (MATLAB=MATrix

LABoratory)

Un linguaggio si basa sull'uso delle variabili che

rappresentano i dati e sulla disponibilità di alcuni

operatori per manipolarli.

Le variabili sono matrici (una variabile scalare

equivale ad una matrice di dimensione 1x1; un

array di dimensione N è una matrice 1xN)

Gli operatori, quindi, sono definiti per operare su

matrici

Caratteristiche

Page 16: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 16

Dati

Un elaboratore è un manipolatore di simboli

L'architettura di ogni elaboratore è intrinsecamente

capace di trattare vari domini di definizione dei dati,

detti tipi di dato primitivi

dominio dei numeri interi

dominio dei numeri reali

dominio dei caratteri

dominio delle stringhe di caratteri

Le variabili di MATLAB sono matrici (array

multidimensionali) i cui elementi appartengono ad

uno di questi domini: se non specificato, sono reali.

Page 17: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 17

Variabili

Inizializzazione variabile: la variabile inizia ad

esistere al momento in cui le si assegna un valore;

a = 0, b = 100;

c = ['stringa'; 'altra stringa'];

La finestra Watchlist mostra una lista delle variabili

che sono state definite oltre ad altre informazioni

(tipo, dimensione)

Da linea di comando lo stesso risultato si ottiene

nella Command Window col comando whos

Page 18: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 18

Esempio

a=3; b=2; % ad a, b (variabili scalari) vengono

% assegnati i rispettivi valori

c = [1 2;4 1] % c è definita come matrice 2x2

% il simbolo ; separa le righe

d = c + c % il valore di d e k vengono modificati,

k = a + b % assegnando a d due volte il valore di c

% e a k la somma di a e b

% dopo l'esecuzione di questa operazione

% il valore di d è [2 4; 8 2] e k vale 5

Page 19: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 19

Esempio di programma MATLAB

% Usa solo moltiplicazione e assegnazione

a = [1 2 3; 4 5 6; 7 8 9];

b = [1 2 3]';

k = a*b;

disp(k)

Page 20: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 20

Esempio di programma MATLAB

Un programma si scrive attivando la finestra Editor

(attiva un editor di testo) e salvando poi il file con estensione .m (es. prova.m) nella cartella di lavoro

(si seleziona la cartella nella finestra Current Folder).

Una volta salvato è possibile eseguire il programma

inserendo il nome del file (senza estensione, es. prova) nella Command Window e premendo Invio.

Page 21: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 21

Stringhe Una stringa è una sequenza di caratteri delimitata

da apici

'ciao' 'hello'

In MATLAB le stringhe possono essere elementi di

una matrice

itaing = ['ciao '; 'hello']

Ogni stringa diventa una riga della matrice itaing che ha quindi un numero di righe pari al

numero di stringhe e un numero di colonne pari

alla lunghezza della stringa più lunga.

NB Alle stringhe più corte devono essere aggiunti spazi perché

tutte le righe della matrice abbiano la stessa lunghezza.

Page 22: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 22

Espressioni

MATLAB è un linguaggio basato su espressioni

Un'espressione è una notazione che denota un

valore mediante un processo di valutazione

Un'espressione può essere semplice (una costante,

un simbolo di variabile) o composta

ogni linguaggio comprende un insieme di

operatori che permettono di aggregare altre

espressioni (operandi) per formare espressioni

composte

Esempi : 4*8-2*arcsin(x) a&&(b||c)

Page 23: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 23

Classificazione degli operatori

In base al tipo di operandi (aritmetici, logici, relazionali)

In base al numero degli operandi (unari, binari,

ternari..)

Gli operatori forniti dal linguaggio, insieme alle

istruzioni di controllo (if, cicli, ecc.) consentono di

scrivere programmi e funzioni.

Page 24: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 24

Funzioni e programmi

Un programma è la descrizione di una sequenza di

operazioni definite tramite il linguaggio di

programmazione che risolvono uno specifico problema

su dati predeterminati o forniti dall'utente durante la

sua esecuzione.

Una funzione generalizza la soluzione di una classe di

problemi e consente di essere utilizzata (chiamata)

specificando dei valori di input (eventualmente

generati all'interno di un programma) che descrivono

una istanza della classe di problemi per cui la funzione

fornisce una soluzione.

Page 25: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 25

Funzioni e programmi

Es. di programma

b = input ('inserisci la base')

h = input ('inserisci l''altezza')

a = b*h;

disp('Area = '); disp (a);

Page 26: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 26

Funzioni e programmi

Es. di funzione area2(b,h)

function a=area2(b,h)

a = b*h;

end

Definisce una regola che, per qualsiasi valore di b e di h

calcola un terzo valore che rappresenta l'area.

Posso salvarla e riutilizzarla all'interno di un programma

o nella Command Window scrivendo ad es. area2(3,5) (rappresenta il valore 15)

Page 27: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 27

Funzioni e programmi

Una volta definita una funzione posso usarla all'interno

di un programma salvandola in un file che abbia lo

stesso nome della funzione ed estensione .m

Es. di programma che usa la funzione area

l = input ('inserisci la larghezza')

p = input ('inserisci la profondita'' ')

abase = area2(l,p);

disp('Area di base = '); disp (abase);

h = input ('inserisci l''altezza');

disp('Il volume è '); disp (abase*h);

Page 28: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 28

Operatori aritmetici

Operatore Tipo MATLAB Inversione di segno Unario -

Somma Binario +

Differenza Binario -

Moltiplicazione Binario *

Divisione (molt. per l’inv.) Binario /

Molt. elemento per elemento Binario .*

Div. elemento per elemento Binario ./

Page 29: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Lab. Programmazione - MATLAB 29

Esempi di operazioni

a = [1 2 3; 9 5 4; 10 1 7];

b = [1 2 3; 7 1 2; 6 6 9];

c = a*b

d = a.*b

e = a + b

f = -a

g = 3*b

Se si chiude il comando con ; non si ottiene alcun

output. Altrimenti il risultato dell'operazione è

visualizzato immediatamente nella Command Window

Page 30: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esercizi

Sulla base di quanto visto per la somma di N numeri

Definire un algoritmo per il calcolo del prodotto di N

numeri

Descriverlo attraverso un opportuno diagramma di

flusso

Descrivere il diagramma di flusso di un algoritmo che

calcola l’area di triangoli o rettangoli:

Inizialmente il programma deve chiedere quanti lati

ha la figura di cui si vuole calcolare l’area

Poi chiede base e altezza e calcola l’area mediante

la giusta formula per la figura considerata.

Page 31: Diagrammi di flusso (Flow Chart) - unipr.it · 2017. 10. 17. · Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I

Esercizi

Scrivere due programma MATLAB che esegua i due

algoritmi formalizzati mediante i diagrammi di flusso

(prima il secondo… è più facile!)

NB Entrambi richiedono l’uso di istruzioni If … Else che

vedremo meglio nella prossima lezione.