• Non ci sono risultati.

Diagrammi di flusso (Flow Chart)

N/A
N/A
Protected

Academic year: 2022

Condividi "Diagrammi di flusso (Flow Chart)"

Copied!
33
0
0

Testo completo

(1)

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.

(2)

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

(3)

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)

(4)

Tipi di Nodi

Inizio

Scrittura dati (output)

Var1

Lettura dati (input)

Var1

Elaborazione / Assegnazione

Var1  Espr1

Decisione

No

Espr1 = Espr2 Espr1  Espr2 Espr1 > Espr2 Espr1  Espr2 Espr1 < Espr2 Espr1  Espr2

Start

Fine

Stop

(5)

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

(6)

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

(7)

Strutture di Controllo

If - Then - Else

No

O1 O2

C

Se la condizione C è vera

esegue l’operazione (o sequenza) O1, altrimenti

esegue O2

(8)

Esempio 3 (uso di istruzioni condizionali)

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

(9)

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

O C

Ripete una stessa

operazione (o sequenza) O finché la condizione C non diventa vera

(10)

Esempio 4 (cicli: conto alla rovescia)

Var1 Var1

Var1  Var1 - 1

No

Start

Stop

Var1 >= 0

Se Var1 >= 0 1. stampa Var1

2. la decrementa di 1 3. torna alla verifica Var1 >= 0

Altrimenti stop

Inizio

Leggi Var1 (numero intero positivo)

Fine

(11)

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 di flusso

(12)

Esempio: Somma di due Numeri

Start

Var1

Var2

Somma  Var1 +Var2

Somma

Stop

(13)

Somma

Stop

Esempio: Somma di N Numeri

Start

N

Somma  Somma + Var I  0

Somma  0

No

I < N

Var

I  I + 1

(14)

MATLAB

(15)

Lab. Programmazione - MATLAB 15

L’ambiente MATLAB

(16)

Lab. Programmazione - MATLAB 16

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

(17)

Lab. Programmazione - MATLAB 17

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.

(18)

Lab. Programmazione - MATLAB 18

Variabili

Inizializzazione variabile: la variabile inizia ad

esistere al momento in cui le si assegna un valore;

a = 0, cento = 100;

b = [1 2;4 1]

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

(19)

Lab. Programmazione - MATLAB 19

Commenti

Se all’interno del codice (ad es. per spiegare cosa si sta facendo a chi legge il codice) vogliamo

inserire dei commenti, questi devono essere preceduti dal simbolo %.

a = 0, cento = 100; % scalari

b = [1 2;4 1] % matrice

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

% matrice di stringhe

Durante l’esecuzione tutto ciò che si trova fra % e

la fine della riga viene ignorato

(20)

Lab. Programmazione - MATLAB 20

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 % i valori 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 queste operazioni % il valore di d è [2 4; 8 2] e k vale 5

(21)

Lab. Programmazione - MATLAB 21

Esempio di programma MATLAB

% Usa solo moltiplicazione e assegnazione

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

b = [1 2 3]'; % ' indica la

% matrice trasposta k = a*b; % * è il prodotto

% scalare fra matrici disp(k)

(22)

Lab. Programmazione - MATLAB 22

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, oppure clickando sul bottone «Run»

(23)

Lab. Programmazione - MATLAB 23

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.

(24)

Lab. Programmazione - MATLAB 24

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)

(25)

Lab. Programmazione - MATLAB 25

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.

(26)

Lab. Programmazione - MATLAB 26

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.

(27)

Lab. Programmazione - MATLAB 27

Funzioni e programmi

Es. di programma

b = input (

'

inserisci la base

'

)

h = input (

'

inserisci l

''

altezza

'

) a = b*h;

disp(

'

Area =

'

); disp (a);

(28)

Lab. Programmazione - MATLAB 28

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)

(29)

Lab. Programmazione - MATLAB 29

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);

(30)

Lab. Programmazione - MATLAB 30

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 ./

(31)

Lab. Programmazione - MATLAB 31

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

(32)

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.

(33)

Esercizi

Scrivere due programmi MATLAB che eseguano 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.

Riferimenti

Documenti correlati

Diego Calvanese Fondamenti di Informatica — Corso di Laurea in Ingegneria Elettronica — A.A. ) int isprint(int c); carattere stampabile (incluso lo spazio) int isgraph(int c);

Se si vuole modificare il problema restringendo l’insieme di cammini a cammini disgiunti anche nei nodi, bisogna modificare il grafo in un grafo orientato in cui ogni arco

avvenimento, però non rivela il nome del vincitore, perché vuole che a scoprirlo sia proprio il nonno, un signore molto simpatico e?. giocherellone, che afferma di essere un

Maga Ranoplì ha perso la formula per trasformare i personaggi

• il numero di volpi varia in funzione di due fattori: un incremento (ri- produzione) pari al 10% del numero di volpi all’anno precedente; un decremento (le galline trasmettono

(a) Quante palle dobbiamo estrarre (a caso) per essere sicuri di ottenere almeno tre palle dello stesso colore?. (b) Quante palle dobbiamo estrarre (a caso) per essere sicuri

 Implementare i programmi visti in queste slides separando il codice relativo alla. manipolazione delle stringhe in una manipolazione delle stringhe in una funzione

I E possibile utilizzare costanti di tipo stringa (stringhe letterali) scritte ` tra doppio apice e senza scrivere esplicitamente il carattere di fine stringa... Lettura