AngoLinux

Automi - Distributore di caffè e Cappuccino

- A cura del Prof. Stefano Salvi -


Il secondo esercizio con gli automi è simile al primo, ma aumenta il numero di valori di ingresso, di stati e di valori di uscita.

Il testo dell'esercizio è il seguente:

Scrivere l'automa di un distribotore di caffè o cappuccino. Il caffè costa 400 Lire ed il cappuccino 600 Lire. Il distribtore accetta monete da 100, 200 e 500 Lire.
mancano soldi.
Se il credito raggiunge o supera le 400 Lire, il distributore visualizza il messaggio scelta : caffe. A questo punto l'utente può inserire altre monete, per chiedere un cappuccino, oppure premere il tasto Caffe, per ottenere un caffè.
Se il credito raggiunge o supera le 600 Lire, il distributore visualizza il messaggio scelta : caffe o cappuccino. A questo punto l'utente può premere il tasto Caffe, per ottenere un caffè (viene visualizzato il messaggio fa caffe oppure fa caffe e visualizza resto, nel caso il credito sia superiore alla 400 Lire) o Cappuccino per ottenere un cappuccino (viene visualizzato il messaggio fa cappuccino oppure fa cappuccino e visualizza resto, nel caso il credito sia superiore alla 600 Lire). Se invece si inserisca altra moneta, viene visualizzato il mesaggio non accetta altri soldi : effetuare la scelta e non accetta la moneta.
Nel caso siano stati inseriti più soldi del necessario, il distributore riconoscerà un credito, al quale si aggiungeranno le monete successive.
È da osservare che, la cifra masima che si può inserire con le monete indicate è di 1000 Lire, infatti se si intoducono 600 Lire il distributore non accetta più moneta, quindi il credito non cresce più. Se invece si introducono 500 Lire, con una qualunque combinazione di monete, introducendo un'ulteriore moneta da 500 Lire si ottiene appunto il credito di 1000 Lire.
L'automa avrà i seguenti ingressi (le cifre sono espresse in lire):
  • 100
  • 200
  • 300
  • Caffe
  • Cappuccino
Questi ingressi potranno essere immediati, vale a dire bottoni che fanno avanzare automaticamente l'automa.
Dovremo poi prevedere i seguenti valori per l' uscita:
  • mancano soldi
  • scelta : caffe
  • scelta : caffe o cappuccino
  • fa caffe
  • fa cappuccino
  • fa caffe e visualizza resto
  • fa cappuccino e visualizza resto
  • non accetta altri soldi : effetuare la scelta

I ragazzi devono scrivere il seguente sorgente:
// script automa distributore caffe-cappuccino
autore { "pallino - caio" }
mealy {
  input {soldi { 100, 200, 500, Caffe, Cappuccino }
   } immediato    
stati { s0,  // Credito 0
	s1,  // Credito 100 
	s2,  // Credito 200 
	s3,  // Credito 300 
	s4,  // Credito 400 
	s5,  // Credito 500 
	s6,  // Credito 600 
	s7,  // Credito 700 
	s8,  // Credito 800 
	s9,  // Credito 900
	s10 }// Credito 1000

output {dispay {
         {u1 , "mancano soldi" }
         {u2 , "scelta : caffe" }
         {u3 , "scelta : caffe o cappuccino" } 
         {u4 , "fa caffe" }
         {u5 , "fa cappuccino" }
         {u6 , "fa caffe e visualizza resto" }
         {u7 , "fa cappuccino e visualizza resto" }
         {u8 , "non accetta altri soldi : effetuare la scelta" }
       }
  }
transizione {
//	   100 200 500 Caf Cap
/* S0 */  {s1, s2, s5, s0, s0}
/* S0 */  {s2, s3, s6, s1, s1}
/* S0 */  {s3, s4, s7, s2, s2}
/* S0 */  {s4, s5, s8, s3, s3}
/* S0 */  {s5, s6, s9, s0, s4}
/* S0 */  {s6, s7, s10,s1, s5}
/* S0 */  {s6, s6, s6, s2, s0}
/* S0 */  {s7, s7, s7, s3, s1}
/* S0 */  {s8, s8, s8, s0, s2}
/* S0 */  {s9, s9, s9, s1, s3}
/* S0 */  {s10,s10,s10,s2, s4} 
  }
uscite { 
//	     100  200  500  Caff Capp
/* S0 */    {{u1},{u1},{u2},{u1},{u1}}, 
/* S0 */    {{u1},{u1},{u3},{u1},{u1}},
/* S0 */    {{u1},{u2},{u3},{u1},{u1}},
/* S0 */    {{u2},{u2},{u3},{u1},{u1}}, 
/* S0 */    {{u2},{u2},{u3},{u4},{u1}},
/* S0 */    {{u3},{u2},{u3},{u6},{u1}},
/* S0 */    {{u8},{u8},{u8},{u6},{u5}}, 
/* S0 */    {{u8},{u8},{u8},{u6},{u7}},
/* S0 */    {{u8},{u8},{u8},{u6},{u7}},
/* S0 */    {{u8},{u8},{u8},{u6},{u7}},
/* S0 */    {{u8},{u8},{u8},{u6},{u7}},
       }
}

L'automa risulterà come questo:

Per provare l'automa basta salvare il sorgente dell'automa in un file, copiandolo dalla pagina.


[Home Page dell'ITIS "Fermi"] [Indice Terza] [Precedente] [Successivo]

© Ing. Stefano Salvi - Released under GPL licence