Est-ce que cette garantie invariant de boucle que la variable ne change jamais?
-
16-10-2019 - |
Question
Supposons que vous ayez une boucle et entier et k:
int k = 5;
for (int i = 0 ; i < N; i++)
{
//(*)
//do something
}
L'invariant de boucle à (*) est la suivante: $ \ {K = k \} $
Est-ce que la garantie que $ k $ ne change pas entre les itérations? sinon, est-il otherway pour garantir que?
La solution
L'invariant de boucle ne rien « garantie ». Il est un résumé des informations pertinentes que vous savez sur l'état du programme lorsqu'il atteint ce point. Si votre boucle est par exemple:.
k = 5;
...
for(int i = 0; i < N; i++) {
/* Invariant: k = 5 */
...
k = 207;
...
frob_very_hard(&k);
...
k *= 3;
...
k = 5;
}
au point marqué k == 5, mais pas dans le programme.
Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange