AngoLinux

Manuale d'uso del programma Automi

- A cura del Prof. Stefano Salvi -


Nota: La home page del programma Automi è http://www.salvi.mn.it/stefano/software/automi/, dove è possibile scaricare il programma

Simulatore di automi:

Il simulatore legge un file che descrive un automa e costruisce un'interfaccia grafica per l'automa, che consente di provarlo e verificarne la correttezza.

Il simulatore riconosce automi di mealy e di moore.

Per quanto riguarda il funzionamento, ci sono tre possibilità:

Automa regolare:
per ogni ingresso viene indicata una serie di bottoni di scelta (radio button) con i valori leciti, ad ogni pressione del tasto 'Passo' vengono valutati i valori degli ingressi e vengono aggiornati lo stato e le uscite, oppure premendo il pulsante 'Avvia' lo stato e le uscite vengono aggiornati una volta al secondo.
Automa immediato:
se l'automa ha un solo ingresso, si può scegliere la modalità immediata. In questa modalità al posto dei bottoni di scelta verranno usati dei bottoni normali e non si avranno il bottone 'Passo' ne il bottone 'Avanza'. Ogni volta che si premerà il bottone relativo ad un valore dell'ingresso, l'automa avanzerà nello stato, aggiornando l'uscita
Automa riconoscitore:
in questo caso invece degli ingressi indicheremo un alfabeto. L'ingresso sarà dato dal carattere corrente di una stringa di ingresso, che potremo immettere. L'avanzamento si otterrà coi i bottoni 'Passo' o 'Avanza'.

LINGUAGGIO DI DEFINIZIONE DELL'AUTOMA

Prima di tutto alcune precisazioni:

  • Il sistema accetta solo caratteri ASCII standard, dallo spazio (codice 32) alla ~ (codice 126)
  • Non viene fatta differenza tra lettere maiuscole e minuscole
  • Un <simbolo>, che corrisponde ad un nome o ad una parola chiave, è una sequenza di caratteri dallo spazio escluso, al ~ incluso. Un simbolo termina con il primo separatore
  • Un separatore è una sequenza di uno o più caratteri scelti tra
    • qualunque carattere di controllo ASCII (es TAB, A Capo)
    • lo spazio
    • la visgola (,)
    • il punto e virgola (;)
  • Una <stringa> è una qualunque sequenza di caratteri racchiusa tra " (doppi apici)

Per definire l'automa si usa il seguente linguaggio:

<programma> ::= <autore> <automa>
<autore> ::= autore { <stringa> }
<stringa> (come definita più sopra)
<automa> ::= <mealy> | <moore>
<mealy> ::= mealy { <ingressi> [immediato] <uscite> <stati> <tab-transizione> <tab-uscite-mealy> }
<moore> ::= moore { <ingressi> <uscite> <stati> <tab-transizione> <tab-uscite-moore> }
<ingressi> ::= input { <ingresso> ... } | alfabeto { <stringa> }
<ingresso> ::= <simbolo> { <simbolo> <simbolo> ... }
<uscite> ::= output { <uscita> ... }
<uscita> ::= <simbolo> { <val-uscita> <val-uscita> ... }
<val-uscita> ::= <simbolo> | { <simbolo> <stringa> }
<stati> ::= stati { <simbolo> <simbolo> ... }
<simbolo> (come definito più sopra)
<tab-transizione> ::= transizione { <riga-transizione> ... }
<riga-transizione> ::= { <simbolo> ... }
<tab-uscite-mealy> ::= uscite { <riga-uscite-mealy> ... }
<riga-uscite-mealy> := { <valori-uscita> ... }
<valori-uscita> ::= { <simbolo> ... }
<tab-uscite-moore> ::= uscite { <valori-uscita> ... }

Note:

  • gli oggetti tra < e > sono elementi della definizione, descritti più avanti
  • L'ordine delle sezioni non è importante, basta che quando servono degli oggetti siano stati già definiti
  • Altrettanto, autore può precedere o seguire l'automa
  • Al fine di determinare l'ordine delle colonne della tabella di transizione, gli ingressi sono ordinati. L'indice delle colonne può essere visto come un conteggio nel quale il primo ingresso ha il peso maggiore.
  • All'interno di un singolo ingresso i valori sono ordinati dal primo, che ha valore 0, all'ultimo
  • Per le colonne, quindi, la prima corrisponde al primo valore per tutti gli ingressi, la seconda al secondo valore per l'ultimo ingresso (quello con peso minore), al primo per gli altri, la terza al terzo valore per l'ultimo ingresso, al primo per tutti gli altri ecc.
  • Le righe delle tabelle di transizione e di uscita, devono avere lo stesso ordine degli stati, come sono stati elencati nella definizione.
  • Nella tabella delle uscite, all'interno di un singolo gruppo di valori d'uscita, i valori delle uscite vanno indicati nello stesso ordine in cui si sono definite le uscite
  • Se tra i valori di un'uscita se ne è indicato qualcuno con una stringa associata, allora per quell'uscita verranno visualizzate sempre le sringhe associate, quindi avremo il campo vuoto se per un valore non è associata alcuna stringa. Se invece non è asociata una stringa ad alcun valore, allora verranno sempre visualizzati i nomi dei valori di uscita.

Prof. Stefano Salvi


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

© Ing. Stefano Salvi - Released under GPL licence