V I S U A L I Z Z A D I S C U S S I O N E |
FabioAkaDragonDJ |
Inserito il - 31/08/2010 : 09:52:10 ragazzi vi chiedo aiuto ho un pò di problemi a risolvere questi esercizi nel senso che so la procedura ma evidentemente salto qualcosa infatti agli appelli li sbaglio sempre, ecco volevo sapere se magari qualcuno mi poteva spiegare in linea di massima come ragionare per svolgerli correttamente
come esercicio guida va bene questo
Vi ringrazio |
2 U L T I M E R I S P O S T E (in alto le più recenti) |
Spidey |
Inserito il - 17/09/2010 : 13:16:58 Ciao a tutti, stamattina ho provato a risolvere anche il secondo punto dell'esercizio, eccolo quà:
declare: R, R', R'' : Rubrica, n, n' : NM, t : T.
I costruttori, secondo me, sono: creaRubrica() e aggiungiNumero(R, n, t).
aggiornaNumero(creaRubrica(), n, t) = if inRubrica(R, n) then aggiornaNumero(R, n, t) else error
rimuoviNumero(creaRubrica(), n) = error
inRubrica(creaRubrica(), n) = false
trovaNumero(creaRubrica(), n) = error
numeroContatti(creaRubrica()) = 0
inclusa(creaRubrica(), R') = if numeroContatti(R') == 0 then true else false
------------------------------------------------
aggiornaNumero(aggiungiNumero(R, n, t), n', t') = if inRubrica(R', n') then aggiornaNumero(R', n', t') else error
rimuoviNumero(aggiungiNumero(R, n, t), n') = if n=n' then R else rimuoviNumero(R', n')
inRubrica(aggiungiNumero(R, n, t), n') = if n=n' then true else inRubrica(R', n')
trovaNumero(aggiungiNumero(R, n, t), n') = if n=n' then t else trovaNumero(R', n')
numeroContatti(aggiungiNumero(R, n, t)) = if numeroContatti(R) == 0 then 1 else numeroContatti(R) + 1 [OPPURE numeroContatti(R')]
inclusa(aggiungiNumero(R, n, t), R'') = if numeroContatti(R) == 0 then if numeroContatti(R'') == 1 AND inRubrica(R'', n) then true else false else inclusa(R', R'')
L'indentazione non c'è (sul forum non viene mantenuta) ma si capisce, basta leggere con attenzione. Ciao ciao. |
Spidey |
Inserito il - 16/09/2010 : 21:12:03 Ciao FabioAkaDragonDJ, ti scrivo la mia soluzione personale al primo punto dell'esercizio che hai postato, non garantendoti la sua correttezza:
- TIPI: booleano: insieme dei valori di verità {true, false}. intero: insieme I dei numeri interi #8712; N. nome: insieme infinito NM qualsiasi dei nomi. telefono: insieme infinito T qualsiasi dei numeri di telefono. rubrica: insieme R=(NM,T) formato dalle coppie (n,t) con n #8712; NM e t #8712; T.
- OPERATORI:
creaRubrica()=R post: R=(NM,T) con N=#8709; e T=#8709;.
aggiungiNumero(R, n, t)=R' pre: R=(NM,T), n #8713; NM e t #8713; T. post: R'=(NM',T'), R'= R U {(n,t)}
aggiornaNumero(R, n, t)=R' pre: R=(NM,T), n #8712; N e t #8712; T. post: R'=(NM',T) e NM'=NM - {n} U {n}.
rimuoviNumero(R, n)=R' pre: R=(NM,T) e (n,t) #8712; R. post: R'=(NM',T'), R'=R - {(n,t)}.
inRubrica()=b post: b=true se (n,t) #8712; R; b=false, altrimenti.
trovaNumero(R, n)=t pre: R=(NM,T), R#8800;#8709; e #8707; i=1...m | n di m = n => (n di m, t di m) #8712; R. post: t = t di m
numeroContatti(R)=i post: i=|R|, dove |R| è la cardinalità dell'insieme R.
inclusa(R, R')=b post: b=true se per ogni (n di m, t di m) #8712; R #8707; (u di m, l di m) #8712; R', n=u e t=l; b=false, altrimenti.
Ciao ciao. |
|
|