AngoLinux

Automi - Distributore di caffè

- A cura del Prof. Stefano Salvi -


Arriviamo al primo esercizio sugli automi.

Il testo dell'esercizio è il seguente:

Scrivere l'automa di un distribotore di caffè. Il caffè costa 400 Lire. Il distribtore accetta monete da 100, 200 e 500 Lire.
Appena viene immessa una cifra sufficiente, il distributore consegna il caffè. Nel caso siano stati inseriti più solSecondodi del necessario, il distributore riconoscerà un credito, al quale si aggiungeranno le monete successive. Il distributore non dà resto.
È da osservare che, la cifra masima che si può inserire con le monete indicate è di 800 Lire, infatti se si intoducono 400 Lire si ottiene un caffè che estingue il credito. Se invece si introducono 300 Lire, introducendo un'ulteriore moneta da 500 Lire si ottiene appunto il credito di 800 Lire. Se si raggiunge questo credito la macchina produce automaticamente due caffè.
L'automa avrà i seguenti ingressi (espressi in lire):
  • 100
  • 200
  • 300
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
  • caffe
  • fa due caffe o fa caffe e visualizza resto

I ragazzi devono scrivere il seguente sorgente:
// script automa distributore caffe
autore { "pallino - caio" }
mealy {
  input {soldi { 100, 200, 500 }
   } immediato    
stati { s0, 	// Credito 0
	s1, 	// Credito 100
	s2, 	// Credito 200
	s3 }	// Credito 300

output {display {
         {u1 , "mancano soldi" } 
         {u2 , "caffe" }
         {u3 , "fa due caffe o fa caffe e visualizza resto" }
        }
  }
transizione {
//	   100 200 500
/* S0 */  {s1, s2, s1}
/* S1 */  {s2, s3, s2}
/* S2 */  {s3, s0, s3}
/* S3 */  {s0, s1, s0}
  }
uscite { 
//	     100  200  500
/* S0 */    {{u1},{u1},{u2}}, 
/* S1 */    {{u1},{u1},{u2}}, 
/* S2 */    {{u1},{u2},{u2}},
/* S3 */    {{u2},{u2},{u3}}
       }
}

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