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?

Était-ce utile?

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
scroll top