Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
Pages: [1] 2 3 4 
[Progetto] 15/05/2006
Clicca QUI per vedere il messaggio nel forum
Reaper
Qualkuno olte a me lo deve fare? :(
speriamo sia un po + facile del precedente... :x

Drowne
Speriamo non abbia robaccia tipo file e roba simile piuttosto.

Il vecchio non era impossibile

soak
pure io lo devo fare..sapete se i voti dei tre compitini valgono anche per il secondo semestre?

Reaper
oggi dovrebbe uscire... dov'è?

*°§_-???
Non lo so, non riesco a trovarlo da nessuna parte.

Skioda86
Per me manco si ricorda che oggi è la data di pubblicazione!!!!!
:D
:D

Diciamo che x me SARA' RINVIATO A DATA DA DEFINIRSI..!!!!:-D:-D


Anche perchè spero sia facile. Magari un pò più del primo!! Che anche se sono riuscito a farlo, mi è stato bocciato per non so quale motivo.

Non ho voglia di risbattermi a scervellarmi come ho fatto in passato!

:twisted:

Drowne
ma non è ancora uscito???

Reaper
no...
sul sito del prof nn ce ne traccia...

black.jack
Boooooooh!!! o si è dimenticato o cosa molto molto improbabile l'ha pubblicato altrove -_-'

Ovviamente la data di consegna scalerà in base al ritardo di uscita, no??? :pensa:

Reaper
si spera...

soak
finalmente è uscito il nuovo progetto..che fantasia..MyAssembler..:(

..

Reaper
http://homes.dsi.unimi.it/~mereghet/fap/

sn da solo...
help... :(

Drowne
Uscito... molto simile a quello vecchio per alcune cose.

Sembra fattibile ma decisamente MOLTO + lungo del precedente...

Vabbè stanotte o domani mattina inizio e vediamo cosa c'è di veramente bastardo :D

Buon lavoro a tutti ^_^

soak
maledetta astrazione..:sbocco:

Drowne
Prime quattro classi fatte, ora ho fame :D

il resto mi sa che è bello complicato...

manuel86
C'è per caso qualcuno che mi può spiegare a cosa servono queste parentesi graffe che il professore ha scritto nel suo programma???

Sequence ss0 = new Sequence(new Statement[2]){msg1, new Assign("b", seven)});

l1 = new Loop(new GreaterThan(rb, zero), new Sequence(new Statement[2]{a3, a2});

new Statement[6]{
new Assign("b", new Constant(-1)),
s1,
d2,
a1,
l1,
new PrintExpression(new ReadVariable("ab"))
}

catch(ExecutionException e) {e.printStackTrace();}

perchè il mio compilatore mi da 1 errore...non è che il professore ha sbagliato qualcosa???

soak
anche a me le graffe non quadrano..:?

F:\Java\JCreator\MyAssembler\Program.java:32: ')' expected
Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven)}); ^

F:\Java\JCreator\MyAssembler\Program.java:40: ')' expected
l1 = new Loop( new GreaterThan(rb, zero), new Sequence( new Statement[2]{ a3, a2}));
^
F:\Java\JCreator\MyAssembler\Program.java:40: ')' expected
l1 = new Loop( new GreaterThan(rb, zero), new Sequence( new Statement[2]{ a3, a2}));
^
F:\Java\JCreator\MyAssembler\Program.java:42: ')' expected
Sequence ss1 = new Sequence( new Statement[6]{ new Assign("b", new Constant(-1)), s1, d2, a1, l1, new ^ PrintExpression(new ReadVariable("ab"))});

4 errors

Process completed.

soak
F:\Java\JCreator\MyAssembler\Program.java:32: ')' expected
Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven)});
^

zyx
ma che c**** hanno combinato cos'è quella roba qua adesso come facciamo?????

Reaper
:sbocco:

zyx
Ma a qualcuno funziona il tutto? Almeno l'ultimo run senza contatre la stampa a video???

Skioda86
:D:D:D:D

Allora....

Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven)});

l1 = new Loop( new GreaterThan(rb, zero), new Sequence( new Statement[2]{ a3, a2}));

l1 = new Loop( new GreaterThan(rb, zero), new Sequence( new Statement[2]{ a3, a2}));

Sequence ss1 = new Sequence( new Statement[6]{ new Assign("b", new Constant(-1)), s1, d2, a1, l1, new ^ PrintExpression(new ReadVariable("ab"))});




Strippandomi sul mio caro lettino, guardando il soffitto e sonnecchiando un pò...:cool:Mi sono letteralmente accorto di essere difronte ad una cosa che non avevo mai visto fino ad ora.

Mi sono accorto che non fa altro che indicare il contenuto dell'array come abbiamo sempre fatto:

int array[] = {1,2,3,4,5}


E lui in questo caso, DA COME HO CAPITO IO, ovviamente, non fa altro che spiegare cosa contiene l'array.

Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven)});

In questo caso dice che creeiamo un array di 2 Statement e lo riempiamo nella cella 1 con un msg, e nella cella 2 con un assegnamento a b.


SEMPLICE
Premetto che ho svolto il progetto con la jdk 5, ma anche a me, come a voi da lo stesso errore..!!
Diciamo che il progetto l'ho fatto, ma....Il programma.java del profe non mi funge perchè mi dà gli stessi errori di soak.

Ora che ho dato un pò di mio agli altri vediamo se qualcuno (magari ancora il sottoscritto...) trova la soluzione per aggirare o correggere l'errore.
:D

GOOD WORK A TUTTI

zyx
ma guarda io la storia degli array l'ho modificata e l'ho costruita come ce l'ahnno insegnata anoi

soak
come hai risolto? ..elargisci un po' di codice

zyx
ma niente ho fatto così guarda:
Statement[] stat=new Statement[2];
stat[0]=msg1;
stat[1]=new Assign("b",seven);
Sequence sso=new Sequence(stat);

e così anche per gli altri e funziona ma nonso se il prof lo accetta...

zyx
ma poi se in quest codice assembler che dobbiamo fare se posso utilizzare solo l'operando presente sul top dello stack come faccio a fare la somma tra l'operando sul top dello stack e il suo successivo??????????????????????????????????

tyrdrummer
io sono solo.. c'è qualche anima che lo vuole fare con me?? Tu Drowne??

hchiaf
Se vuoi facciamo il progetto insieme! ancj'io sono da solo !

zyx
ma qual'è il risultato del vostro programma??

Reaper
Originally posted by hchiaf
Se vuoi facciamo il progetto insieme! ancj'io sono da solo !



pure io! :(

manuel86
C'è x caso qualcuno che sa come si fa a far comunicare più hashtable tra di loro???

zyx
sia nella classe expression che nella classe statement all'inizione metti protected static Hashtable state=Program.state

paul85
Non so voi... ma a me no è chiarissimo come/dove inserire le "etichette" L1, L2 ecc....

zyx
L1:istruzione1
L2:Istruzione 2
L3:JZERO:L5
L4:istruzione 4
L5:istruzione5

io ho fatto così

paul85
Sì ma non ho ancora capito bene come organizzare tutte le stampe e come mantenere le etichette in ordine.

Riguardo alla classe PrintExpression:
L’implementazione del metodo toString() dovrà ritornare una stringa contenente il codice assembler necessario per valutare l’espressione sul top dello stack e stamparlo.

Come lo ricavo il codice assembler necessario per valutare l'espressione?

zyx
io l'ho pensato così LOAD(variabile che devi stampare) e poi PRINT perchè c'è scritto che LOAD mette la variabile sul top dello stack e PRINT stampa la variabile sul top dello stack. Ma a te che risultato di da? A me questo dopo tutto il codice assempbler mi scrive "a must be greater than 0 e 56. Giusto???

trygun82
Originally posted by manuel86
C'è x caso qualcuno che sa come si fa a far comunicare più hashtable tra di loro???


La hashtable è 1 sola dichiarata statica nel metodo principale. Questo xè se nn la crei statica ogni volta che la richiami nelle classi ne va a creare una nuova e questo impedisce di memorizzare insieme tt i dati.

black.jack
scusate...qualcuno di voi avrebbe modo di postare qualcosa che parli dell'hashtable....giusto x capire che è e come funziona...magari anche un esempio del libro!
Io ho la vecchia edizione e purtroppo non ne parla!!! :(

trygun82
Per vedere come funziona una hashtable ti consiglio di guardarti la soluzione del prof del vecchio progetto,li la trovi.
Nel progetto quando il prof parla della 5 colonna, secondo voi cosa intende? x me dovrebbe essere che si lasciato 5 spazi prima di stampare la stringa della istruzione assembly.

black.jack
:sbonk:

marcuss884
Qualcuno mi sa spiegare come va fatto il metodo toString() della classe Selection?? :?

paul85
In effetti anke io non ho ben compreso la parte che parla della "quinta colonna".
E la spiegazione di alcuni metodi toString() la trovo poco chiara...

marcuss884
Per "colonna" credo che intenda quanti spazi di tabulazione (tab)devi lasciare prima di scrivere qualcosa,il resto è poco chiaro.Io cercherò di guardare l'assembler e vedere come si scrivono le varie istruzioni

paul85
Le etichette in ordine che metodo le stampa?

zyx
il toString solo che ho fatto un altro metodo che conta la lunghezza di ogni blocco di istruzioni. cmq secondo i miei calcoli e ne ho fatti un cifro le etichette dovrebbero essere nella posizione giusta

Reaper
ma nn ce il vecchio progetto risolto?

Skioda86
Reaper
ma nn ce il vecchio progetto risolto?


:D
Sì, c'è....e lo puoi reperire all'indirizzo:
http://homes.dsi.unimi.it/~mereghet.../mylanguage.zip

soak
ma scusate per quanto riguarda le parentesi graffe della classe Program:
("Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven) } );")
come avete risolto? a me continua a dare lo stesso errore..:pensa:
("F:\Java\JCreator\MyAssembler\Program.java:32: ')' expected
Sequence ss0 = new Sequence( new Statement[2] { msg1, new Assign("b", seven)});")
è sbagliato il testo del profe?!:wall:

soak
te come l'hai risolto zyx? hai modificato la classe Program?

Brk
Qualche anima pia può postare il Program.java corretto???

Pare la settimana enigmistica quel listato...

zyx
si ma ragazzi non potete fidarvi cecamente di me. Magari bisogna perforza usare quello del prof e raflo funzionare in qualche modo

Brk
Al massimo diamo la colpa a te ^^

eheeeheheh
Brk

Lazor
Noi abbiamo già provato a scrivere un email al cazzola chiedendo chiarimenti sul main che non funziona...ma lui non ci ha risposto niente ancora. Ora gli abbiamo pure spedito il main postato qua per vedere se va bene usare quello o no.....
Vediamo cosa risponde...

LiJay
ciao a tutti:-D...una domanda...voi i dati li estraete dalla hashtable per poi inserirli sullo stack?alltrimenti non ho proprio capito a che mi serve l'hashtable....:?
grazie:D

paul85
Mah... la storia dello stack non è un pò astratta?

LiJay
non so...ho trovato i lucidi della prof maria alberta alberti e so che c'è il metodo push(object o) che aggiunge gli elementi sullo stack;pop()che elimina il nodo in cima memorizzando quello che c'era prima;il boolean empty()che restituisce true se è vuoto,false altrimenti;stack()che costruisce uno stack vuoto....solo che me li utilizza con gli array...quindi pensavo di poterlo utilizzar anche con le hahtable...ma sono un pò in alto mare:(...

zyx
ma secondo me lo stack serve solo nella traduzione scritta del codice assembler ad esempio se io devo assegnare una costante ad una variabile allora farò così
load <valore della costante> questa istruzione mi permette di caricare sul top dello stack la costante e poi
store < nome con cui si vuole chiamere la costante> che salva nella variabile indicata lelemento sul top dello stack appunto il load he abbiamo fatto prima.... io l'ho inteso così

LiJay
a questa soluzione non avevo pensato...vuol dire che ho perso un'intera giornata a ragionare sulla stack...:evil::evil::evil:
pensando il progetto solo con le hashtable mi sembra più semplice...bah...:?

zyx
si ma io spero sia così perche se no devo buttare via tutto quello che ho fatto e a questo punto però dopo potrbbe succedere di tutto.....

LiJay
la tua soluzione sarebbe la più logica...ma nessuno sa se quest'anno il profe ha spiegato le stack?già le hashtable l'anno scorso non c'erano,mi pare...

marcolino85
chi è di voi ha gia trattato le sezioni espressioni booleane e aritmetiche?

scusate nel main potrò fare ADD [3,5]

quindi se uso and (moltiplicazione) sarà 3*5 se uso or (addizione) sarà 8 se uso NOT (?)(?) che faccio l'opposto?

mentre a livello di espress booleane (???) ADD [3,5] come viene valutato??

Drowne
Abbiamo appurato qualcosa sul program.java di malchiodi?

E' sbagliato il suo?

soak
io ancora non ho capito come dovrebbe essere il codice prodotto: !?


LOAD A , var1
LOAD B , var2
L1:ADD A , B

soak
io ancora non ho capito come dovrebbe essere il codice prodotto::shock:!?

LOAD A , var1
LOAD B , var2
L1:ADD A , B
STORE A

le virgole ci sono?
A e B sono TOP e TOP-1 o ho frainteso di brutto?!

marcolino85
credo poi ci sia anche alla fine delle tue istruzioni

LOAD A , var1
LOAD B , var2
L1:ADD A , B
STORE A

magari ci sia un JZERO o un JUMP...

soak
cosa?:shock:!
è così?

// incondizionato
JUMP L1
// e non
0 JZERO L1
1

marcolino85
se non ricordo male quando facevo assembler JZERO ritorna alla label che hai fatto finchè il tuo contatore è zero, una volta raggiunto zero esce dal ciclo...

paul85
Da quanto ho capito io... le Espressioni Booleane devono ritornare 1 se sono vere oppure 0 se sono false (anche se non ho capito benissimissimo come render il true o false se l'argomento passato non è già un'espressione booleana).
Mentre le operazioni aritmetiche ritornano il risultato dell'operazione.

paul85
Un'altra cosa: secondo voi i metodi toString() sono tutti descritti bene?
Io non ho ben chari come x esempio dovrà esser la stringa ritornata dal toString di Constant (come molti altri....prendo questa x esempio.).

Dice: dovrà ritornare una stringa contenente il codice assembler necessario per mettere la costante sul top dello stack.

Come questo anche gli altri che sono spiegati allo stesso modo praticamente

soak
a questo punto direi che si può chiedere al profe di posticipare la data di consegna..cioè è già il 26 maggio:evil:!!! ..protesto..

soak
..un altra cosa:

quando si usa la classe java.util.Hashtable senza specificare i tipi di dati ( Hashtable<String,Integer> ) il compilatore mi dà queste due linee:

--------------------Configuration: MyAssembler - J2SE 5.0 <Default> - <Default>--------------------
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Process completed.

+++++++++++++++++
anche con il progetto MyLanguage mi era sorto il dubbio..
la cosa si può ignorare?
+++++++++++++++++

zyx
si ma quello mio modificato sarà pure sbagliato ma fa le stesse cose di quello che ci ha dato ora il prof

soak
sia fatta la sua volontà:D
cmq resta un bel casino..:(

zyx
ma quindi voi la storia degli stack come l'avete pensata?

soak
guarda nn ne ho idea :?

su wiki c'è la seguente definizione:

In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso seguono una politica LIFO (Last In First Out), ovvero tale per cui i dati vengono estratti (letti) in ordine rigorosamente inverso rispetto a quello in cui sono stati inseriti (scritti). Il nome di questa struttura dati è infatti la stessa parola inglese usata, per esempio, per indicare una "pila di piatti" o una "pila di giornali", e sottende per l'appunto l'idea che quando si pone un piatto nella pila lo si metta in cima, e che quando si preleva un piatto si prelevi, analogamente, quello in cima (da cui la dinamica LIFO), anche se è possibile inserire o prelevare elementi anche dalla coda, infatti più in generale la pila è un particolare tipo di lista in cui le operazioni di inserimento ed estrazione si compiono dallo stesso estremo.

--------------------------------------------------------------------------------------

cmq oggi finalmente ho ottenuto un primo risultato utile ed è uguale al tuo (etichette a parte):

--------------------Configuration: MyAssembler - J2SE 5.0 <Default> - <Default>--------------------
DECLARE a
DECLARE b
LOAD 7
STORE a

Variabile a gia' dichiarata
at Declare.run(Declare.java:15)
at Sequence.run(Sequence.java:17)
at Program.main(Program.java:59)

Process completed.

zyx
è vedi io la penso così con Declare il testo del progetto dice ch eviene assegnata un po di memoria alla variabile a inizializzandola a 0 e ce l'hai messa nell'hashtable con load carica la costante sul top dello stack e store salva la costante che è sul top dello stack in a. Dai è giusto così

soak
si in teoria lo stack è astratto..e non va implementato..nel senso che serve per comprendere il passaggio che hai spiegato..:birrozza:

zyx
se anche tu la pensi così allora io incomincio a fare la documentazione che l'altra volta mi ha segato perchè non ho consegnato documentazione e sorgenti su carta... vedi te

soak
sei molto più avanti io sono ancora alle prese con etichette e jump vari..è un macello..:pccrash: speriamo che il profe ci dia un po' di tempo in più se no è merda..

come hai fatto a gestire le espressioni sBooleane?

zyx
ma ho guardato un po il program.java e ho notato che le espressioni che vengono inserite nei costruttori delle espressioni booleane sono sempre espressioni che valgono o zero o uno quindi L'AND è la moltiplicazione L'OR controlli se tutte e due le op sono uguali a 1 ritorni 1 se no fai la somma, L'EQUAL se le espressioni sono uguali ritorni 1 se no 0 e il GT uguali, Il NOT se l'espressione è uguale a 1 torni zero se no torni 1. Tanto in AND OR e NOT nei costruttori vengono inserite solo espressioni booleane o variabili che valgono o uno o zero. anche perchè io non ho mai visto un AND tra 7 e 5.

soak
buono..così sembra ragionevole..certo che potrebbe spiegarsi meglio il sommo profe:malmust:.. poi bocciare per la documentazione!!!
..sono un po' in para..

zyx
ma sono giuste le tichette no??

soak
si ma non riesco ad andare avanti...non coapisco come impostare JUMP e JZERO!!!:x

zyx
si è per questo che io ho fatto un metodo che mi conta il numero di istruzioni del blocco ifStatement, quindi dopo JZERO ci piazzo quel numero... così anche per il jump

Drowne
Soak anche a me da un errore simile al tuo:

code:
Exception in thread "main" java.lang.ClassCastException: Not at Selection.run(Selection.java:14) at Sequence.run(Sequence.java:12) at Program.main(Program.java:54)


Come hai risolto? Dov'era il problema?

Lazor
Giusto per segnalare qualche novità...cè un nuovo errore nel testo del progetto! Stamattina ho ricevuto un e-mail dal prof. Cazzola che ora vi incollo qua.



Salve,
vi scrivo per segnalare che nel testo mancava la specifica di
un'istruzione assembler (EQN). Ho fatto l'upload del testo corretto sul
mio sito (reperibile anche da quello di Boldi).

Dovresti segnalarlo anche sul dsy visto che lo frequenti.

A proposito dando un occhio al DSY ho notato che state etichettando
tutte le istruzioni questo è sbagliato solo le istruzioni oggetto di un
salto vanno etichettate.

Grazie.

soak
in effetti mi sembrava strana sta cosa delle etichette!!!

a me dava un errore diverso dal tuo drowne.. il tuo sembra un errore di cast..

qualcuno può postare la nuova classe Program per fare chiarezza?!

zyx
Si am non è possiblie non è stato molto chiaro il testo del progetto

zyx
comè il vostro output

Drowne
Originally posted by soak
in effetti mi sembrava strana sta cosa delle etichette!!!

a me dava un errore diverso dal tuo drowne.. il tuo sembra un errore di cast..

qualcuno può postare la nuova classe Program per fare chiarezza?!


Bah ormai mi sono bloccato :(

Hai un PM, se mi aiuti ti sarò debitore a vita :D

Smack :oops:

teolino85
Scusate ma non è abbastanza scandaloso che per la seconda volta nel secondo progetto dello stesso anno il prof sbaglia, se ne accorge a neanke una settimana di tempo! E comunque poi chi la prende in quel posto siamo noi che dobbiamo sclerare per gli sbagli del prof e poi magari veniamo anche segati per delle cose da poco!Io sarò anche troppo ribelle ma non mi va tanto questa cosa!Terrò comunque la testa bassa ma nel caso dovessi passarlo vado a Lurdes ad accendere un CERO!:evil:

marcuss884
in effetti io avevo finito,mi mancava solo da fare la documentazione. Poi leggo che le etichette non vanno poste su tutte le istruzioni e ora mi tocca rivedere quasi tutto :wall:

LiJay
scusate un attimo...quando fa il primo loop

Loopl1=new Loop(new Or(new Equal(rb,zero),new GreaterThan(rb,zero)),a1);

perchè mette due argomenti nell'or?mica è unario e quindi ha un solo operando?

marcolino85
oh ragazzi si raccolgono firme e si va dal prof!!! e si fa posticipare la data di consegna no?!?!

Lazor
Ma per curiosità a tutti voi come risultato finale viene fuori 56??

zyx
a me viene fuori "a must be grater than 0" e "56"

LiJay
io sono ancora lontana dal compilare il main...

zyx
io l'ho finito però se volete posticipare a me va benissimo

LiJay
Originally posted by LiJay
scusate un attimo...quando fa il primo loop

Loopl1=new Loop(new Or(new Equal(rb,zero),new GreaterThan(rb,zero)),a1);

perchè mette due argomenti nell'or?mica è unario e quindi ha un solo operando?


ritratto è il not...scusate:cool:

teolino85
Originally posted by marcolino85
oh ragazzi si raccolgono firme e si va dal prof!!! e si fa posticipare la data di consegna no?!?!


:roargh: Sarebbe la prima volta che lo vedo ascoltare qualcuno!

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate