Algorithme et Programmation : compléments

publicité
Algorithme et Programmation : compléments
1. Un peu d’histoire
Dès l’antiquité, des algorithmes ont été utilisés dans le commerce ou le calcul des impôts (des descriptions
exhaustives ont été retrouvées) : ils permettaient notamment aux marchands de faire leurs calculs d’intérêts
sans rien connaı̂tre aux mathématiques !
Par ailleurs, l’algorithme mathématique le plus connu, décrit par Euclide vers -300, permet de trouver le plus
grand diviseur commun à deux entiers.
Mais le mot ”algorithme” vient du nom du célèbre mathématicien perse Al Khuwaritzmi (latinisé au MoyenAge en Algoritmi) qui au IXe siècle, écrivit le premier ouvrage sur la résolution systématique des équations du
premier et deuxième degré.
2. De l’agorithme à sa programmation
L’intérêt majeur qu’il y a à disposer d’algorithme de résolution de problème est de permettre l’automatisation : on peut déléguer à une machine l’exécution de tâches routinières conduisant à la solution.
La traduction de l’algorithme en vue de son exécution par une machine pose deux problèmes distincts :
a) le découpage en tâches suffisamment simples et sans ambigüité pour qu’une machine sache les exécuter
correctement ;
b) la traduction de ces tâches dans un langage compréhensible par la machine.
a) Analyse descendante
Une technique d’élaboration d’un bon algorithme est appelée méthode descendante (top down). Elle consiste
à considérer un problème dans son ensemble, à préciser les données fournies et les résultats à obtenir puis à
décomposer le problème en plusieurs sous-problèmes plus simples qui seront traités séparément et éventuellement
décomposés eux-mêmes de manière plus fine.
Exemple : imaginons un robot domestique à qui nous devons fournir un algorithme lui permettant de préparer
une tasse de café soluble. Une première version de l’algorithme pourrait être :
(1) faire bouillir de l’eau
(2) mettre le café dans la tasse
(3) ajouter l’eau dans la tasse
Les étapes de cet algorithme ne sont probablement pas assez détaillées pour que le robot puisse les interpréter.
Chaque étape doit donc être affinée en une suite d’étapes plus élémentaires, chacune étant spécifiée d’une manière
plus détaillée que dans la première version. Ainsi l’étape (1) faire bouillir l’eau peut être affinée en
(1.1) remplir la bouilloire d’eau
(1.2) brancher la bouilloire sur le secteur
(1.3) attendre l’ébullition
(1.4) débrancher la bouilloire
De même, (2) mettre le café dans la tasse pourrait être affiné en
(2.1) ouvrir le pot à café
(2.2) prendre une cuiller à café
(2.3) plonger la cuiller dans le pot
(2.4) verser le contenu de la cuiller dans la tasse
(2.5) fermer le pot à café
et (3) ajouter de l’eau dans la tasse pourrait être affinée en
(3.1) verser de l’eau dans la tasse jusqu’à ce que celle-ci soit pleine
Certaines étapes étant encore trop complexes et sans doute incompréhensibles pour notre robot, il faut les affiner
davantage. Ainsi l’étape (1.1) remplir la bouilloire d’eau peut nécessiter les affinements suivants :
(1.1.1) mettre la bouilloire sous le robinet
(1.1.2) ouvrir le robinet
(1.1.3) attendre que la bouilloire soit pleine
(1.1.4) fermer le robinet
Quand il procède à des affinements des différentes étapes, le concepteur d’un algorithme doit naturellement
savoir où s’arrêter. Autrement dit, il doit savoir quand une étape est compréhensible par le robot ou la machine.
b) Pour résoudre le second problème, il existe de nombreux langages compréhensibles par un ordinateur dont
Turbo-Pascal. Chaque langage présente ses particularités propres, mais les principes de base sont plus ou moins
toujours les mêmes.
3. Algorithmes mathématiques : exemples
Le but d’un algorithme en mathématique est de produire la solution générale d’un problème.
Un algorithme se distingue d’une succession de calculs par l’aspect général de la méthode de résolution qu’il
permet : ainsi, quelque soient les données, la résolution pourra être obtenue.
Résolution des équations du premier degré
Problème : étant donnée une équation de type ax + b = 0, en trouver les solutions.
Ici, les données sont les réels a et b, et la sortie doit être les solutions de l’équation associée ax + b = 0.
A nous de trouver la seconde étape : la suite des instructions qui permet de passer des entrées à la sortie.
Attention de bien prévoir tous les cas possibles (ne pas s’occuper que du cas général ! )
sinon l’algorithme n’en est plus un.
Il existe plusieurs façons de présenter un algorithme : dans l’exemple qui nous intéresse, l’arbre est approprié.
Entrée : l’équation ou plutôt les réels a et b
Groupe d’instructions à faire
Sortie : affichage des solutions.
Résolution des équations du second degré
Problème : étant donnée une équation de type ax2 + bx + c = 0, en trouver les solutions.
Adopter une démarche analogue pour obtenir un algorithme sous forme d’arbre.
Téléchargement