correction prof

This commit is contained in:
2024-11-27 08:59:28 +01:00
parent ed56e610fd
commit d20b23ad3a

View File

@@ -5,12 +5,46 @@ precondition: |liste| > 0
index <- 1
while index < |liste|
if liste[index] > Resultat
resultat <- liste[index]
Resultat <- liste[index]
index <- index + 1
Resultat
```
# Preuve de terminaison
La terminaison est assuré par la présence d'un variant de boucle (séquence d'entier naturel). *ici*
```plaintext
|liste| - index
```est un variant de boucles
|liste| - index ```
est un variant de boucles
# Preuve de correction partielle
La correction partielle est assuré par *l'invariant de boucle* ici Resultat contient la valeur du plus grand élément de la liste entre les indices 0 et index - 1 inclus.
- Avant que le premier passage dans la boucle
Resultat contient liste[0]
index contient 1
q est le plus grand élément de la liste sur [0; index-1 = 0]
- Si à l'entrée dans la boucle invariant OK
resultat contient le maximum de la tranche de liste sur [0; index - 1]
## 1) Cas si liste[index] > Resultat
alors Resultat <- liste[index]
donc Resultat = max(liste[i])
i [0; index]
## 2) Cas sinon liste[index]<= Resultat = max liste[i], i € [0;index - 1]
resultat = max(liste[i]) = Resultat
i [0; index]
-----
index = index + 1
donc
index = index - 1
-----
et
-------- -----
Resultat contient le maxi de liste sur [0; index -1]
d'ou l'invariance
# Conclusion
l'algo se termine et, à la sortie, index = |liste|
et resultat contient le maxi de liste entre les index et |liste| - 1