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