Devoirs Hebdomadaire N°13 |
||||||||||||||
|
||||||||||||||
M. Joseph DASSE BRIKA | ||||||||||||||
|
||||||||||||||
Rappels : Factorielle n pour n entier >=0 est définie par n ! = 1 si n=0 et (n-1) ! * n sinon On a écrit le programme du calcul de n! selon cette définition :
On prend pour invariant { f = i ! & n >=i } QUESTION 1 : montrez la correction totale de ce programme. Certains préfèrent "un i qui décroît"... ils ont alors écrit un autre programme du calcul de n! :
Avec l'invariant { f * i ! = n! & i >=0 } Mais cela n'est pas satisfaisant car à la sortie de la boucle { f * i ! = n! & i >=0 & ~(i>0)} est une formule fausse !! Alors on modifie le prédicat de contrôle de la boucle (i >0) pour le prédicat de contrôle de la boucle (i>1)
QUESTION 2 : Donnez un invariant (inspiré fortement du précédent) et un variant pour la boucle et montrez la correction totale du programme. Utilisation de DJ-HOARE :
QUESTION 3 : Montrez le contenu de fact.pl et montrez les obligations de preuve et le programme bien documenté obtenus en répondant SYSTEMATIQUEMENT "3." (conjecture) à toutes les questions de DJ-HOARE.
|
||||||||||||||
Question 3: | ||||||||||||||
Programme fact.pl:
|
||||||||||||||
Obligations de preuves et programme bien documenté:
|
||||||||||||||
FIN_dh13 |
||||||||||||||
ACCUEIL CONTACT FAVORIS ANNALES DH1 DH2 DH3 DH4 DH5 DH6 DH7 DH8 DH9 DH10 DH11 DH12 DH13 DH14 DH15 DH16 |