>> Le coffre à outils technologiques et pédagogiquesdes enseignants de la formation professionnelle du Québec
Vous êtes ici : Accueil » Formations
>>Petit cours d’algorithmiqueQu’est-ce que l’algorithmique ? Comment peut-elle nous faciliter l’exécution de certaines tâches ? Comment permet-elle de rendre certaines tâches exécutables par un ordinateur ? Connectice vous propose un petit cours qui tente d’apporter des réponses simples à ces questions et de fournir une ouverture vers la programmation dans deux langages téléchargeables gratuitement sur toutes les plates-formes. On peut définir la notion d’algorithme comme une suite d’instructions à exécuter pour obtenir un résultat voulu. A - Algorithmes et vie quotidienneVous avez sans doute déjà fait de l’algorithmique sans le savoir. En effet, les recettes de cuisine et les notices de montage fournissent des exemples simples d’algorithmes qui vous ont permis d’obtenir des résultats plus ou moins réussis. Lorsqu’une personne vous demande de lui indiquer le chemin à suivre pour aller à un endroit donné, vous pouvez lui dessiner un plan, mais il faut que la personne soit capable de le lire. Pour beaucoup, il sera plus facile de suivre des instructions telles que : dirigez-vous vers ... , prenez la deuxième à gauche, ... Dans un jeu de société, si vous devez communiquer à une personne des informations lui permettant de construire une figure identique à une figure qu’elle ne voit pas, dans la plupart des cas, une liste d’instructions à exécuter sera plus efficace qu’une description de la figure. B - Algorithmes et mathématiquesVoici un algorithme qui permet de ranger des nombres écrits sur une feuille dans l’ordre décroissant :
Quelle que soit la quantité de nombres à ranger, trois d’instructions suffisent, car la troisième relance le processus jusqu’à ce qu’il n’y ait plus de nombres à ranger. Ceci fournit un exemple d’algorithme récursif, c’est à dire, d’algorithme qui fait appel à lui même. Voici un algorithme récursif qui permet d’écrire les nombres entiers inférieurs à 4000 en chiffres romains.
Pour écrire un nombre :
Echelle de nombres à utiliser avec l’algorithme
Pour 1947, cela donne successivement :
L’algorithme suivant, qui lui aussi est récursif, permet de déchiffrer les inscriptions en chiffres romains. Pour déchiffrer une inscription en chiffres romains :
Pour MCMXLV cela donne successivement :
Ces exemples montrent que l’élaboration d’algorithmes permet d’automatiser des tâches complexes en les réduisant à l’exécution de suites d’instructions élémentaires. Une approche algorithmique fournit ainsi un moyen d’augmenter les chances de réussite, c’est aussi un premier pas vers la programmation. C - Algorithmes et programmationProgrammer, c’est trouver des algorithmes exécutables par un ordinateur et les traduire dans un langage de programmation. Programmation du calcul des puissances entières d’un nombre non nul Voici la définition classique de la puissance nième d’un nombre. a étant un nombre non nul et n un entier naturel
Cela donne 5 exposant 3 = 5 x 5 x 5, mais pour continuer il faut savoir calculer un produit de plus de deux nombres. En voici une définition récursive. a étant un nombre non nul et n un entier naturel
Pour 5 exposant 3, cela donne successivement
L’application de cette définition déclenche un processus automatique qui aboutira si l’on sait multiplier deux nombres. Les ordinateurs sont capables de mener à bien ce type de processus. Voici comment on peut traduire cette définition dans le langage de programmation Revolution
Les lignes ci-dessus définissent une fonction nommée aexposantn qui a deux variables a et n, et qui retourne la valeur de a exposant n. En effet, en appelant cette fonction avec les valeurs 5 et 3, on déclenche le processus suivant :
aexposantn est le nom donné à la fonction par le programmeur. function, if, then, else, return, end sont des mots du langage Revolution Et voici la définition de la même fonction dans le langage de programmation xlogo
aexposantn est le nom donné à la fonction par le programmeur. pour, si, retourne, fin sont des mots du langage xlogo Pour obtenir la valeur de 5 exposant 3, il suffit de taper aexposantn 5 3
En effet :
Programmation de l’écriture d’un nombre en chiffres romains Voici une traduction dans le langage Revolution de l’algorithme donné pour écrire un nombre entier inférieur à 4000 en chiffres romains :
Nous définissons ainsi une fonction nommée rom à deux variables n et tra qui sont respectivement le nombre à écrire et la chaîne de caractères à construire pour obtenir l’écriture en chiffres romains. L’opérateur & retourne la chaîne de caractères obtenue en concaténant les deux chaînes qui l’entourent. "M" & "CM" retourne "MCM" La fonction rom appelée avec le nombre à écrire et une chaîne vide retourne la chaîne construite qui est l’écriture du nombre en chiffres romains. En effet :
Voici la définition de la même fonction dans le langage xlogo :
Dans ce langage c’est l’opérateur mot qui assure la concaténation de deux chaînes de caractères. mot "M "CM retourne "MCM Pour obtenir l’écriture de 46 il suffit de taper rom 46 " En effet :
Ces exemples montrent que le même algorithme peut se traduire dans différents langages et que les différences entre les programmes se situent à d’autres niveaux. Par exemple :
D - ConclusionL’algorithmique permet de simplifier et d’automatiser certaines tâches de la vie courante et du domaine mathématique en les réduisant à l’exécution de suites d’instructions élémentaires. C’est aussi l’algorithmique qui permet de programmer les ordinateurs. En effet, les langages de programmation ne sont que les moyens qui permettent de traduire les algorithmes mis au point pour obtenir les résultats voulus. L’apprentissage de la programmation ne peut donc pas se réduire à celui d’un ou de plusieurs langages. Les quelques exemples donnés mettent en évidence le caractère récursif de certains algorithmes et son intérêt. Ils laissent entrevoir la concision et la puissance des langages de programmation. |