PDA

Visualizza la versione completa : [ALGORITMO] Miglior modo per caricare un dizionario


Ippo343
30-11-2010, 22:55
Ciao a tutti,

sto facendo un programma per l'università. In pratica voglio prendere un part program per il controllo numerico e darne una descrizione un po' più articolata.

Questo perchè i CNC sono stati inventati quando la memoria era un problema, e quindi i programmi sono un tripudio di istruzioni chiarissime del tipo G94G97T01M6M14, e non sono molto belli :)

La mia idea era: creo un dizionario che contiene come chiavi le istruzioni (in realtà una cosa leggermente più complessa perchè non tutte le istruzioni possono essere messe in questo modo) e le descrizioni come valori, e fin qui direi che va tutto bene.

Il punto è: questo dizionario come mi conviene crearlo?
Personalmente ora come ora pensavo di fare un file xml di questo tipo:



<istruzione>
<codice>G81</codice>
<descrizione>...</descrizione>
</istruzione>


e caricare a runtime il dizionario dal file...
So che è una domanda banale ma il mio professore mi ha chiesto se glielo faccio avere quando l'ho finito, quindi vorrei fare una cosa abbastanza robusta che possa rimanere in futuro...

shodan
30-11-2010, 23:18
A mio parere XML è la scelta giusta (anche se forse non la più semplice).
Una volta formalizzato tramite un DTD o un .xsd, lo dai in pasto a un parser validante e se qualcosa non combacia te ne accorgi subito.
Altri metodi li vedo meno stabili come robustezza.

Ippo343
02-12-2010, 23:14
Ecco, sempre a riguardo. Una volta scelto come fare il dizionario (file xml) ho un altro problema.

In pratica io ho la mia classe PartProgram, la quale contiene un elenco di Block(s), ognuno dei quali contiene la sua bella lista di Instruction.
E fin qui direi che va tutto bene...

Un oggetto PartProgram viene istanziato caricando un file: io gli passo il nome del file del part program e lui lo carica, fa il parsing, e ho la mia rappresentazione del programma.

Ma come lo abbino al dizionario?
Mi sembra logico che il dizionario debba essere una classe separata (lo chiamo dizionario perchè il concetto è simile, ma le funzionalità sono un po' diverse da uno standard), che viene creata da un file a sè stante e indipendente dal part program caricato.

Ora come ora la mia class Istruction contiene solo il "codice operativo" e l'"argomento", ma non la descrizione. Questo perchè ovviamente non posso caricare una descrizione, dato che tutti questi oggetti vengono creati nel caricamento del part program che non contiene le informazioni del dizionario.

Pensavo di aggiungere un puntatore ad una string all'interno della classe Istruction. In questo modo, quando viene richiesta la descrizione dell'istruzione, se il puntatore è null viene cercata nel dizionario "just in time" alla prima richiesta.

Può essere una buona idea secondo voi?

Loading