TD 8 : TABLEAUX ET BOUCLES (AVANCÉ)
Exercice 1 : Inversion de tableau
Proposer un algorithme optimal d’inversion de tableau (dont le nom sera A) dans
le langage J-While. On ne considérera que la division entière et la longueur du
tableau Asera notée A.length
Exercice 2 : Conception par contrat
On souhaite tester correctement notre algorithme, c’est-à-dire proposer une con-
tractualisation complète du code.
Question 2.1 : Précondition et postcondition. On pose les prédicats suivants:
prédicat “trié” : T(A, d, f)def
=iN,0i<f1 =A[i]< A[i+ 1]
prédicat “trié en ordre inverse” : T I(A, d, f)def
=iN,0i < f 1 =
A[i]> A[i+ 1]
Entourer le programme de l’exercice 1 des préconditions et postconditions qui vous
semblent reflêter le fait que l’inversion d’un tableau trié produit un tableau trié en
sens inverse.
Question 2.2 : Variant et invariant. Par simulation sur deux exemples de
tableaux de tailles 5 et 6, proposez:
Un variant de boucle Vdécroissant par pas de 1 et terminant en 0
Un invariant de boucle Iqui permettrait de déduire selon-vous les précon-
ditions et postcondition proposées
Une condition d’arrêt CA que l’on ajoutera à Iet qui garantit que l’algorithme
termine pour i(sans suppose que ivaut 0au début). Il s’agira donc de
fournir un intervalle pour i.
Question 2.3 : Algorithme contractualisé. Ajouter au code de l’algorithme
les vérification du contrat pour le variant Vet l’invariant I
Exercice 3 : logique de Hoare
On veut prouver dans cet exercice que nos contrats sont corrects (ce qui nous
permettra de ne pas rendre nécessaire l’exécution du code de vérification).
Plus que les détails (assez fastidieux) de la preuve, on s’appliquera à bien suivre la
méthodologie de preuve en logique de Hoare, en comptant et nommant correctement
les étapes.
1
1 / 1 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !