Terminaison
Nous allons étudier l'algorithme en démontrant par cas qu'il répond toujours la bonne réponse.
Cas A : le tableau est vide
Lignes 4-5 : On a i=0 et longueur=0
Ligne 6 : on ne rentre pas dans la boucle puisque le tableau est vide : i n'est pas strictement inférieur à 0.
On atteint la ligne 8. Puisque i n'est toujours pas inférieur à 0, on atteint la ligne 10 puis 11 : on répond bien -1 pour signaler qu'on ne trouve pas x dans ce tableau vide.
Correct sur ce cas.
CAS B : on atteint une case d'indice k contenant x : t[k] = x.
Nous avons fait k tours et la propriété Pk est vraie.
On ne fait pas de tour supplémentaire puisque t[k] contient bien x.
On sort de la boucle à cause de la deuxième condition.
On atteint la ligne 8 avec i=k et puisque i est inférieur à la longueur, on place cet indice k dans la réponse.
Correct sur ce cas puisqu'on a bien t[k]=x.
CAS C : on atteint la fin du tableau de taille n.
On considère n valeurs dont les indices vont de 0 à (n-1).
Nous avons fait n tours et la propriété Pn est vraie : x ne se trouve pas dans [0..n-1] et i=n. On peut donc dire que x n'est pas présent dans le tableau car il n'y a plus de cases derrière.
On ne fait pas de tour supplémentaire puisque i=n n'est pas strictement inférieur à n . On sort de la boucle à cause de la première condition.
On atteint la ligne 8 puis 10 avec i=n et on place -1 dans la réponse.
Correct sur ce cas puisque x n'est pas présent dans le tableau.
Nous avons traité les 3 cas possibles.
L'algorithme est correct.
◻