"""
# k : int
k=1# on démarre au rang 1
# f : int
f=1# factorielle au rang 1
while k <= n:
f=f*k
k=k+1
return f
Question 1
Proposer un jeu de tests pour valider la fonction factorielle.
Question 2
Effectuer la simulation de boucle pour l’application factorielle(5).
Question 3 : à propos de la correction
Afin de vérifier que la définition proposée ci-dessus réalise correctement le calcul de la factorielle :
— proposer un invariant de boucle
— vérifier cet invariant sur la simulation de boucle pour factorielle(5).
—
en supposant que cet invariant est vérifié pour n’importe quelle valeur de
n
satisfaisant
l’hypothèse n>0, justifier le fait que factorielle(n) calcule bien n!.
Question 4 : à propos de la terminaison
Afin d’assurer la terminaison de la fonction factorielle :
— proposer un variant de boucle
— vérifier ce variant sur la simulation de boucle factorielle(5)
— justifier informellement le fait que factorielle(n) termine toujours.
Exercice 2 : Somme des cubes
Cet exercice illustre le fait qu’une même boucle peut être vue de plusieurs façons différentes :
chaque vue correspondant à un invariant de boucle spécifique. On discute également d’efficacité.
2