17/01/16 14:47
Trusted
Ciao!
Sai come funziano le triple di Hoare? se <Z> è il tuo codice devi trovare una pre-condizione <N> ed una post-condizione <M> che ne garantiscano il successo. Ad esempio una pre-condizione sarebbe verificare che i dati immessi siano effettivamente numeri e non caratteri alfanumerici.
Mentre una post-condizione dovrebbe verificare che i numeri corrispondano a quelli previsti.
Bella pè te!
Ultima modifica effettuata da Trusted 17/01/16 14:48
aaa
23/01/16 0:29
andrea9671
Ciao ascolta, diciamo che sto capendo meglio, volevo chiederti un'ultima cosa, prendendo questo codice:
if (n2.forma == ALGEBRICA)
{
/* verifico se la parte reale o quella immaginaria sono uguali a zero, in tal caso, significa
che si verificherà una divisione per zero */
if (n2.valore_t.valore_alg.parte_reale == 0 || n2.valore_t.valore_alg.parte_immaginaria == 0)
{
divisione_per_zero = TRUE;
}
}
else
{
/* verifico che il modulo se il modulo è uguale a zero, in tal caso,
significa che si verificherà una divsione per zero */
if (n2.valore_t.valore_tri.modulo == 0)
{
divisione_per_zero = TRUE;
}
}
Quale sarebbe la post-conzione? Ed inoltre da quest'ultima devo risalire alla pre-condiziome, saresti in grado di farmi una dimostrazione completa?
Grazie
Ultima modifica effettuata da andrea9671 23/01/16 17:25
aaa
25/01/16 18:29
andrea9671
Grazie mille, comunque ho deciso di prendere questa parte di codice, dove devo calcolare un nuovo argomento in modo tale che sia compreso nel range [0, 2pi_greco]
double new_arg = fmod(argomento,2_PI_GRECO);
if(new_arg < 0)
{
new_arg = 2_PI_GRECO + new_arg;
}
Ora data la tripla di hoare {P} S {Q}, dove {Q}, ovvero la postcondizione è:
{0<new_arg<2_PI_GRECO}
quindi la precondizione {2_PI_GRECO +new_arg> 0 /\ 2_PI_GRECO+new_arg > 2_PI_GRECO}
è verificata in quanto {new_arg > -2_PI_GRECO /\ new_arg < 0} e la seconda condzione è verificata dall'if mentre la prima dall'fmod prima dell'if, ore quello che chiedo come posso rappresentare questo ragionamento, con una logica migliore, ovvero scrivendo delle asserzioni corrette ?
Grazie
Ultima modifica effettuata da andrea9671 27/01/16 20:40
aaa