introduzione a matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/l2/l2.pdfswitch:...
TRANSCRIPT
![Page 1: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/1.jpg)
Introduzione alla programmazione
eMacchina a Stati Finiti
Renato Mainetti
![Page 2: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/2.jpg)
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
![Page 3: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/3.jpg)
Cos’è un algoritmoUn 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
![Page 4: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/4.jpg)
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
![Page 5: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/5.jpg)
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
![Page 6: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/6.jpg)
Programmazione strutturata:
Programmazione e FSM - Lezione 2 6
Sequenziale Condizionale Iterativa
Il Teorema di Bohm-Jacopini afferma:“qualsiasi algoritmo può essere definito usando esclusivamente le strutture di sequenza, di selezione e di iterazione”.
https://en.wikibooks.org/wiki/MATLAB_Programming/Control_Flow
![Page 7: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/7.jpg)
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
Sequenziale
![Page 8: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/8.jpg)
To be or not To Be ?
Programmazione e FSM - Lezione 2 8
Come eseguire una scelta in programmazione?
Condizionale
![Page 9: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/9.jpg)
IF - IF/ELSE :
Programmazione e FSM - Lezione 2 9
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).
![Page 10: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/10.jpg)
SWITCH:
Programmazione e FSM - Lezione 2 10
Condizionale
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.
n = input('Inserisci un numero: ');
switch ncase -1
disp('Uno Negativo')case 0
disp('Zero')case 1
disp('Uno Positivo')otherwise
disp('Altro valore')end
![Page 11: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/11.jpg)
FOR:
Programmazione e FSM - Lezione 2 11
Iterativafor 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}
![Page 12: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/12.jpg)
WHILE:
Programmazione e FSM - Lezione 2 12
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.
![Page 13: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/13.jpg)
FSM (Versione Base)
Programmazione e FSM - Lezione 2 13
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.
![Page 14: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/14.jpg)
Matlab cosa ci regala ?
Programmazione e FSM - Lezione 2 14
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.
![Page 15: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/15.jpg)
FSM Matlab On-Off
Programmazione e FSM - Lezione 2 15
![Page 16: Introduzione a Matlab - unimi.itmainetti.di.unimi.it/teaching/ailab/lessons/L2/L2.pdfSWITCH: Programmazione e FSM - Lezione 2 10 Condizionale PROBLEMA 4: Scrivere un programma che](https://reader033.vdocuments.site/reader033/viewer/2022060208/5f040ccc7e708231d40c1214/html5/thumbnails/16.jpg)
FSM Tamagotchi
• Cambiamo gli stati d’animo del tamagotchi
Programmazione e FSM - Lezione 2 16