Autore |
Discussione |
|
Arden_Oldman
Utente medio
Regione: Puglia
Prov.: Bari
|
Inserito il - 20/01/2010 : 16:23:23
|
Salve a tutti, vorrei porvi una questione: non mi è chiaro quando, nelle specifiche algebriche, bisogna usare la composizione come nel seguente caso: per esempio nelle specifche algebriche del dizionario applicando l'osservazione "delete(d',k')" al costruttore di d' "insert(d,k,i)" dove d è il dizionario, k la chiave, i l'elemento, il risultato sarà: "if k=k' then d else insert(delete(d,k'),k,i)". nel caso di k diverso da k' (ramo else) abbiamo "invertito" le operazioni applicando la "insert" sulla "delete". Quando occorre fare ciò?
|
"L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi." (Edsger Wybe Dijkstra) |
Modificato da - Arden_Oldman in Data 20/01/2010 16:27:23
|
|
supernova87
Utente medio
Regione: Puglia
Prov.: Bari
Città: MOLFETTA
|
Inserito il - 20/01/2010 : 18:58:51
|
bisogna fare ciò quando l'inserimento e l'eliminazione sono due operazioni applicate rispettivamente a due elementi diversi. in questo caso l'ordine non è rilevante |
|
|
Arden_Oldman
Utente medio
Regione: Puglia
Prov.: Bari
|
Inserito il - 20/01/2010 : 19:27:41
|
Grazie per la risposta. Quindi in questo caso con "elementi diversi" ti riferisci a k diverso da k' (ramo else)? |
"L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi." (Edsger Wybe Dijkstra) |
|
|
supernova87
Utente medio
Regione: Puglia
Prov.: Bari
Città: MOLFETTA
|
Inserito il - 21/01/2010 : 18:28:33
|
sisi. |
|
|
savy
Utente medio
Regione: Puglia
Prov.: Bari
Città: Bitonto
|
Inserito il - 21/01/2010 : 18:37:02
|
http://www.di.uniba.it/~malerba/courses/asd/exams/Scritto20090611.pdf come avete sviluppato la specifica semantica assiomatica? io ho rappresentato l'istogramma come un insieme di serie, ed ogni serie come una sequenza di reali. ad esempio l'operatore AggiungiValore(ist,serie,reale)=ist' l'ho svolto così: Pre: ist != insiemeVuoto, serie=<r1,r2,..,ri> con i>=0 Post: serie' = <r1,r2,...,ri,r> ist'=ist - {serie}U{serie'} |
|
|
cassiosteel
Nuovo Utente
|
Inserito il - 22/01/2010 : 16:27:35
|
Io l'ho rappresentato l'istogramma come una sequenza di serie <S1,S2,...,Sn> e le serie come una serie di valori reali <r1,r2,...,rn>, credo che vadano bene entrambe le risoluzioni |
|
|
cicci89
Nuovo Utente
Regione: Puglia
Prov.: Foggia
Città: Foggia
|
Inserito il - 27/01/2010 : 16:27:10
|
per le specifiche algebriche come avete fatto? |
|
|
@llegr@
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Castellana Grotte
|
Inserito il - 27/01/2010 : 19:43:37
|
Citazione: Messaggio inserito da cicci89
per le specifiche algebriche come avete fatto?
Innanzitutto, come costruttori di I' ci sono: creaIstogramma(), aggiungiValore (I,S,a) e aggiungiSerie (I,S). come osservazioni: lunghSerie (I',S'), valore(I',S'),massimo(I',S'), crescente(I',S') Nella colonna di creaIstogramma sono tutti error quindi corrispondono le specifiche di restrizione Le altre sono:
lunghSerie(aggiungiValore(I,S,a), S')= if S'=S then lunghSerie(aggiungiValore(I,S,a), S) else lunghSerie(I,S')
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then valore(aggiungiValore(I,S,a), S, intpos) else valore (I,S',intpos)
massimo(aggiungiValore(I,S,a), S')= if S'=S then massimo(aggiungiValore(I,S,a), S) else massimo(I,S')
crescente(aggiungiValore(I,S,a), S')= if S'=S then crescente(aggiungiValore(I,S,a), S) else crescxente(I,S')
lunghSerie(aggiungiSerie(I,S), S')= if S'=S then 0 else lunghSerie(I,S')
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then error else valore(I,S',intpos)
massimo(aggiungiValore(I,S,a), S')= if S'=S then error else massimo(I,S')
crescente(aggiungiValore(I,S,a), S')= if S'=S then errori else crescente(I,S')
Naturalmente si tratta di esercitazione personale e per tale non esente da eventuali errori
|
|
|
cicci89
Nuovo Utente
Regione: Puglia
Prov.: Foggia
Città: Foggia
|
Inserito il - 27/01/2010 : 23:45:56
|
secondo me non va massimo, crescente e valore non hanno dei passi base, daranno sempre error.... :) |
|
|
@llegr@
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Castellana Grotte
|
Inserito il - 28/01/2010 : 10:20:41
|
Citazione: Messaggio inserito da cicci89
secondo me non va massimo, crescente e valore non hanno dei passi base, daranno sempre error.... :)
cosa intendi per passi base?? |
|
|
@llegr@
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Castellana Grotte
|
Inserito il - 28/01/2010 : 10:22:43
|
naturalm gli ultimi 3 (valore massimo e crescente) erano di aggiungiSerie non aggiungiValore...maledetto copia-incolla |
|
|
cicci89
Nuovo Utente
Regione: Puglia
Prov.: Foggia
Città: Foggia
|
Inserito il - 28/01/2010 : 11:44:06
|
visto che sono ricorsivi, dovrebbero avere dei passi base se no non si fermano mai... |
|
|
@llegr@
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Castellana Grotte
|
Inserito il - 29/01/2010 : 09:26:41
|
Citazione: Messaggio inserito da cicci89
visto che sono ricorsivi, dovrebbero avere dei passi base se no non si fermano mai...
ma non sono convinta di quanto dici, sopratt non vedo la ricorsivita'. valore e' una semplice lettura (come leggielem) anche se di un elem di tipo reale e non int massimo ricerca il massimo tra elem gia' presenti in Si idem per crescente che deve valutare se tutti gli elem a1<=a2<=a3<=...<=an
infatti le loro specifiche assiomat semantiche sono: valore (I,S,j)=a pre: I= S1,...Sm m>=1 S=Si=a1...aj...an n>=1 e 1<=i<=m post: a=aj massimo(I,S)=a pre: I= S1,...Sm m>=1 S=Si=a1...an n>=1 e 1<=i<=m post: a=aj aj>=ak con j 1<=j<=n per ogni k dove 1<=k<=n crescente(I,S)=b pre: I= S1,...Sm m>=1 S=Si=a1...an n>=1 e 1<=i<=m post: b=vero se a1<=a2<=a3<=...<=an; b=falso altrimenti.
|
|
|
cicci89
Nuovo Utente
Regione: Puglia
Prov.: Foggia
Città: Foggia
|
Inserito il - 29/01/2010 : 17:06:52
|
appunto, io non vedo nelle specifiche algebriche una ricerca di un massimo o un test per vedere se la serie è crescente, ci sono solo delle chiamate ricorsive... mi spiego meglio:
questo è quello che tu hai scritto su valore:
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then valore(aggiungiValore(I,S,a), S, intpos) else valore (I,S',intpos)
Valore(aggiungiSerie(I,S), S',intpos)= if S'=S then error else valore(I,S',intpos)
ora se chiami valore(aggiungiValore ....) avrai che verrà chiamato di nuovo valore nel ramo then, e lo stesso nel ramo else (se richiami valore evidentemente c'è ricorsività)
mettiamo che si arriva nella situazione che viene richiamato valore(aggiungiSerie ...)... in questo caso o si richiama ancora valore o si va in errore... quindi alla fine valore darà sempre error, perchè è l'unico passo base...
lo stesso vale per massimo e crescente...
|
|
|
cicci89
Nuovo Utente
Regione: Puglia
Prov.: Foggia
Città: Foggia
|
Inserito il - 29/01/2010 : 18:15:18
|
ti scrivo come ho fatto io alcuni operatori :)
valore(aggSerie(i,s), s', int) = if (s = s') then error else valore(i, s', int)
valore(aggValore(i,s,r), s', int) = if ((s = s') and lunghSerie(aggValore(i,s,r),s') = int) then r else valore(i,s',int)
lunghSerie(aggSerie(i,s), s') = if (s = s') then 0 else lunghSerie(i,s')
lungSerie(aggValore(i,s,r), s') = if (s = s') then 1+lunghSerie(i,s',r) else lunghSerie(i,s')
ps: si possono usare gli operatori logici and, or e not negli if? |
|
|
@llegr@
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Castellana Grotte
|
Inserito il - 31/01/2010 : 11:24:17
|
gli operatori logici si possono usare... in quanto alla correttezza degli operatori ...be' si dovrebbe andare il mercol nello studio del prof |
|
|
savy
Utente medio
Regione: Puglia
Prov.: Bari
Città: Bitonto
|
Inserito il - 09/02/2010 : 12:35:38
|
secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto??? |
|
|
Arden_Oldman
Utente medio
Regione: Puglia
Prov.: Bari
|
Inserito il - 10/02/2010 : 11:56:40
|
Citazione: Messaggio inserito da savy
secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto???
anche io vorrei saperlo, c'è qualcuno che le ha fatte? |
"L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi." (Edsger Wybe Dijkstra) |
|
|
savy
Utente medio
Regione: Puglia
Prov.: Bari
Città: Bitonto
|
Inserito il - 11/02/2010 : 11:30:22
|
Citazione: Messaggio inserito da savy
secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto???
nessuno mi può aiutare? |
|
|
|
Discussione |
|
|
|