bani
Programmation 2
Cours 2
F.DIDIER
Elaboration d’algorithmes itératifs
I)
Introduction.
La démarche présentée tente, sans introduire un formalisme excessif, d’apporter des éléments de réponses aux questions fondamentales qui se posent en algorithmique:
-
Comment élaborer un algorithme ?
L’algorithme s’arrête-t-il toujours ?
Comment prouver qu’un algorithme résout effectivement le problème posé ?
Une des principales difficultés dans l’élaboration d’un algorithme est de contrôler son aspect dynamique (c’est à dire la façon dont il se comporte en fonction des données qu’on lui fournit en entrée), en ne considérant que son aspect statique (on a sous les yeux qu’une suite finie d’instructions). La méthode ci-dessous permet d’apporter une aide à la mise au point d’algorithmes itératifs et de contrôler cet aspect dynamique.
L’idée principale de la méthode consiste à raisonner en terme de situation alors que l’étudiant débutant , lui, raisonne en terme d’action. Par exemple, la description d’un algorithme de tri commence le plus souvent par des phrases du type : «je compare le premier élément avec le second, s’il est plus grand je les échange, puis je compare le second avec le troisième……»;
On finit par s’y perdre et ce n’est que très rarement que l’algorithme ainsi explicité arrive à être codé correctement.
Le fait de raisonner en terme de situation permet à mon avis, comme on va le voir, de mieux expliciter et de mieux contrôler la construction d’un algorithme.
Il faut ajouter que la manière de procéder présente une forte analogie avec le raisonnement par récurrence, raisonnement avec lequel l’étudiant est en principe familiarisé depuis le lycée.
Pour terminer cette introduction, on peut ajouter que cette façon de procéder peut aussi s’avérer utile, dans le cas où un algorithme est connu, pour se convaincre ou convaincre un auditoire que l’algorithme résout bien le problème posé.
II)
La démarche.
On sait que