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 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
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)
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
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
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
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
Esempio 3
Var1
Var1
Var1 Var1 + 1 No
Sì
Start
Stop
Var1 > 10 Se Var1 > 10
stampa Var1
Altrimenti
incrementa di 1 Var1
e poi stampa Var1
Inizio
Leggi Var1
Fine
Strutture di Controllo: Cicli
Ciclo While
Ciclo For
Sì
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
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
Esempio: Somma di due Numeri
Start
Var1
Var2
Somma Var1 +Var2
Somma
Stop
Somma
Stop
Esempio: Somma di N Numeri
Start
N
Somma Somma + Var I 0
Somma 0
No
Sì
I < N
Var
I I + 1
MATLAB
Lab. Programmazione - MATLAB 14
L’ambiente MATLAB
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
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.
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
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
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)
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.
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.
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)
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.
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.
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);
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)
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);
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 ./
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
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.
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.
Top Related