Sei sulla pagina 1di 16

Introduzione alla

programmazione
e
Macchina a Stati Finiti

Renato Mainetti
Cos’è la programmazione

La programmazione, in informatica, è l'insieme delle


attività e tecniche che una o più persone
specializzate, programmatori o sviluppatori
(developer), svolgono per creare un programma,
ossia un software da far eseguire ad un computer,
scrivendo il relativo codice sorgente in un certo
linguaggio di programmazione. (cit. Wikipedia)

Programmazione e FSM - Lezione 2 2


Cos’è un algoritmo
Un algoritmo è un procedimento che risolve un
determinato problema attraverso un numero finito di
passi elementari.
L'algoritmo è un concetto fondamentale dell'informatica,
anzitutto perché è alla base della nozione teorica di
calcolabilità: un problema è calcolabile quando è
risolvibile mediante un algoritmo.
L'algoritmo è un concetto cardine della fase di
programmazione dello sviluppo di un software: preso un
problema da automatizzare, la programmazione
costituisce essenzialmente la traduzione o codifica di un
algoritmo per tale problema in programma, scritto in un
certo linguaggio, che può essere quindi effettivamente
eseguito da un calcolatore. (cit: Wikipedia)
Programmazione e FSM - Lezione 2 3
Esperimento:
E’ giunto il momento di farci un bel panino con la
marmellata.

Scrivere in un file di testo da posizionare nel folder


condiviso l’algoritmo che pensate risolva questo
problema.

Programmazione e FSM - Lezione 2 4


Testiamo il risultato:
Punti chiave:
• Sequenza di istruzioni elementari per raggiungere
uno scopo.
• Le istruzioni vanno eseguite nel giusto ordine.
• Il nostro senso comune non coincide con quello del
computer.
• E’ possibile che esistano più vie per arrivare al
risultato desiderato.

Programmazione e FSM - Lezione 2 5


Programmazione strutturata:
Il Teorema di Bohm-Jacopini afferma:
“qualsiasi algoritmo può essere definito usando esclusivamente le
strutture di sequenza, di selezione e di iterazione”.

Sequenziale Condizionale Iterativa

https://en.wikibooks.org/wiki/MATLAB_Programming/Control_Flow
Programmazione e FSM - Lezione 2 6
Sequenziale
Sequenziale:
Sequenza di operazioni elementari.

La scorsa volta abbiamo visto ad esempio come


scrivere il programma che calcola l’area del triangolo.

Ma se dovessimo fare una scelta? Per esempio un


bivio dove decidere se andare a destra o a sinistra ?

Programmazione e FSM - Lezione 2 7


To be or not To Be ?

Come eseguire una scelta in programmazione?

Condizionale

Programmazione e FSM - Lezione 2 8


IF - IF/ELSE :
Condizionale

PROBLEMA 1: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo. (usare solo IF)

PROBLEMA 2: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo. (usare IF/ELSE).
Cosa abbiamo guadagnato ad usare ELSE ?

PROBLEMA 3: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo e contemplare il caso
di uguaglianza. (usare IF/ELSEIF/ELSE).

Programmazione e FSM - Lezione 2 9


SWITCH:
Condizionale n = input('Inserisci un numero: ');

switch n
case -1
disp('Uno Negativo')
case 0
disp('Zero')
case 1
disp('Uno Positivo')
otherwise
disp('Altro valore')
end

PROBLEMA 4: Scrivere un programma che mostri il colore attuale


di un semaforo. Il programma riceve in input un valore tra {1,2,3} e
in base al numero ricevuto scrive il nuovo colore del semaforo.
{Rosso,Giallo,Verde}

N.B: se usiamo «otherwise» anche altri numeri andranno bene per il verde.
Programmazione e FSM - Lezione 2 10
FOR:
Iterativa
for i = 1:5
…fai qualcosa…
end

PROBLEMA 5: Scrivere un programma che mostri il colore attuale


di un semaforo per 5 volte. Il programma riceve in input un valore
tra {1,2,3} e in base al numero ricevuto scrive il nuovo colore del
semaforo. {Rosso,Giallo,Verde}

Programmazione e FSM - Lezione 2 11


WHILE:
Iterativa while n>0
…fai qualcosa…
end

PROBLEMA 6: Scrivere un programma che mostri il colore attuale


di un semaforo per infinte volte, a meno che non intervenga una
condizione di arresto. Il programma riceve in input un valore tra
{1,2,3} e in base al numero ricevuto scrive il nuovo colore del
semaforo. {Rosso,Giallo,Verde}

N.B: usiamo «otherwise» come condizione di arresto.

Programmazione e FSM - Lezione 2 12


FSM (Versione Base)
File progetto: tamaFSM.m

Vogliamo realizzare una FSM di un semplice Tamagotchi.


Il Tamagotchi può assumere 3 stati:
• Triste
• Neutro
• Felice

E’ possibile fornire al tamagotchi 3 differenti input:


• Scherzetto
• Non fare nulla
• Carezza

In funzione dello stato corrente e dell’input vogliamo che il Tamagotchi


cambi stato. Proviamo ad analizzare il codice e vediamo come abbiamo
definito le regole di transizione tra stati.

Programmazione e FSM - Lezione 2 13


Matlab cosa ci regala ?
StateFlow: http://it.mathworks.com/products/stateflow/

Stateflow® consente di modellare il modo in cui il sistema reagisce a eventi,


condizioni temporali e segnali di stimolo esterni.

Programmazione e FSM - Lezione 2 14


FSM Matlab On-Off

Programmazione e FSM - Lezione 2 15


FSM Tamagotchi
• Cambiamo gli stati d’animo del tamagotchi

Programmazione e FSM - Lezione 2 16

Potrebbero piacerti anche