#)'$*) $#!$' )")%'$'"") $# L’objectif de ce complément est de : – découvrir ou revoir ce qu’est un algorithme, sa structure de base et ses instructions fondamentales ; – mettre en œuvre quelques algorithmes à l'aide d'une machine (la calculatrice ou l’ordinateur) ; – d’effectuer de la programmation. 0 # ) $#)'%'0(#)) $#.*#!$' )" D É F I N I T I O N Représentation d’un algorithme à l’aide d’un organigramme : Début E X E M P L E S Des algorithmes dans notre quotidien Des algorithmes déjà connus a. Déterminer graphiquement l’image d’un nombre par une fonction dont la courbe est connue. b. Tracer un triangle équilatéral dont la longueur du côté est donnée. c. Déterminer si un triangle dont on connaît la longueur des côtés c. Une recette de cuisine est un algorithme est rectangle. avec ses données (les ingrédients), ses d. Algorithme d’Euclide. instructions (les différentes étapes de la e. Crible d’Eratosthène. confection) et sa sortie (le plat à déguster). f. Calculer la moyenne d’une série d. Indiquer son chemin à quelqu’un. statistique. a. Nouer ses lacets. b. Envoyer un mail : Allumer l’ordinateur. Ouvrir son client de messagerie électronique. Rédiger un nouveau message. Sélectionner les destinataires. Ajouter (éventuellement) une pièce jointe. Envoyer. Pour constater qu’il s’agit bien d’un algorithme, on doit vérifier que, pour parvenir au résultat recherché, on a bien une méthode constituée d’un nombre fini d’instructions et d’étapes, ne requérant qu’un nombre fini de données. R E P R É S E N TAT I O N Pour représenter de façon commune les algorithmes, on utilise deux méthodes : un organigramme, réservé aux algorithmes les plus simples (voir la fiche sur le logiciel LARP, page 390) ; le pseudo-code, qui ressemble à un vrai langage de programmation dans lequel on aurait retiré les problèmes de syntaxe (grammaire) et que l’on peut écrire dans la langue de son choix. Cette façon de présenter les algorithmes présente l’avantage d’être très structurée, facilement traduisible dans n’importe quel langage de programmation. À ce stade, l’algorithme n’est pas destiné à être interprété directement par un ordinateur. Outils pour l’algorithmique Les algorithmes ne sont pas en lien direct avec l’informatique. Leur but est de fournir une solution (réponse) à un problème posé. Leur particularité est d’être constitués d’un nombre fini d’instructions simples, appelées instructions élémentaires, qu’il est parfois nécessaire de répéter un certain nombre (parfois très grand) de fois. Le principe est simple mais la tâche peut s’avérer laborieuse. C’est là qu’intervient la nécessité d’utiliser l’ordinateur, capable d’exécuter des instructions très simples autant de fois que nécessaire. Il reste néanmoins le problème de la communication : une fois l’algorithme construit, une étape importante est de « l’expliquer » à l’ordinateur. Un algorithme est une suite finie de règles que l’on applique dans un ordre déterminé, à un nombre fini de données pour arriver à un certain résultat, en un nombre fini d’étapes. Cette définition donne un sens au mot algorithme qui dépasse largement le cadre des mathématiques et de l’informatique. En effet, on peut constater que de nombreux algorithmes émaillent notre vie quotidienne. En mathématiques, on utilise déjà des algorithmes sans en avoir conscience. '$'"") $#)! #+!. #$'") &* ÉCRIRE "Entrer la première note" LIRE N Cette communication se fait à l’aide de divers langages de programmation. Tous ces langages ont leur propre sémantique (vocabulaire) et leur propre syntaxe (grammaire), mais reposent sur les bases fondamentales de l’algorithmique, les instructions élémentaires suivantes : la lecture ou l’écriture ; l’affectation de variables ; les tests ; les boucles. Voir les fiches logiciel, pages 386 à 391. Voir la fiche calculatrices, page 398. E X E M P L E S L’algorithme présenté sous forme d’organigramme et de pseudo-code au paragraphe , qui a pour but de calculer la moyenne de deux notes données, est décrit ci-dessous dans divers langages de programmation s’appliquant sur calculatrices ou sur ordinateurs. Ca si o TI XC AS L a n ga ge P yt h o n S C R ATC H L a n gag e C ÉCRIRE "Entrer la seconde note" LIRE M ÉCRIRE "La moyenne est : ",(M+N)/2 FIN Représentation d’un algorithme à l’aide du pseudo-code : Début Écrire "Entrer la première note" Lire N Écrire "Entrer la seconde note" Lire M Écrire "La moyenne est : ",(M+N)/2 Fin Outils pour l’algorithmique 0$"%$('# #()'*) $#(0!0"#) '( ( #()'*) $#(0!0"#) '( Avant de pouvoir écrire un algorithme, il faut réussir à décomposer la résolution du problème posé en instructions élémentaires. On peut ranger des instructions très diverses en quatre grandes familles : entrée/sortie : elles permettent d’entrer une donnée ou d’afficher un résultat ; les affectations de variables : elles modifient la valeur d’un nombre, la forme d’un objet ; les instructions conditionnelles : elles permettent de tester et de proposer des choix ; les boucles : elles permettent de répéter des instructions. 4 Tant que la chasse continue, on fait avancer les animaux d’un saut, puis on regarde : a. si la grenouille est à plus de 10 cm derrière la sauterelle, alors les 2 animaux refont un saut ; b. sinon la chasse est finie. 5 a. Si la grenouille est à moins de 10 cm derrière la sauterelle, alors elle mange la sauterelle. b. Si la grenouille a dépassé la sauterelle, alors la sauterelle s’est échappée. 6 Penser à donner la réponse à la question posée. 0 # ) $#( #!-()'$ (!$' )"( Lire les deux entiers a et b Calculer le reste r de la division euclidienne de a par b TANT QUE r est différent de 0 – Remplacer a par b – Remplacer b par r – Remplacer r par le reste de la division euclidienne de a par b Afficher la valeur de b 3 On crée également une variable qui contient la valeur 1 tant que la chasse continue et la valeur 0 lorsque celle-ci doit s’arrêter. Lire le nombre n Écrire tous les entiers entre 2 et n Pour chacun de ces entiers, en commençant par 2 : – Si il n’est pas rayé Alors rayer tous ses multiples sauf lui-même Écrire la liste des entiers non rayés Lire le nombre de données N Lire toutes les données Calculer la somme des données Diviser cette somme par N Afficher le résultat. 2 Reproduire les algorithmes 1, 2 et 3, puis souligner à l’aide de couleurs différentes, les quatre grandes familles d’instructions : a. entrée/sortie : en rouge ; b. affectation de variables : en bleu ; c. instruction conditionnelle : en vert ; d. boucle : en noir. En s’inspirant des décompositions en instructions élémentaires réalisées en 2 et en utilisant les familles 3 d’instructions vues au paragraphe , écrire un algorithme pour chacun des problèmes mathématiques suivant : a. On connaît la courbe représentative d’une fonction f. On cherche à déterminer l’image d’un réel x par f. b. On dispose d’une règle graduée et d’un compas. On cherche à construire un triangle équilatéral dont le côté mesure c. c. On cherche à déterminer si un triangle dont les côtés mesurent respectivement a, b et c est rectangle. (*)'!!)!'#$* !! Une grenouille distraite chasse une sauterelle. La grenouille et la sauterelle se déplacent en ligne droite en faisant des bonds simultanés mesurant respectivement 40 cm et 24 cm. Cette grenouille est capable d’attraper avec sa langue tout insecte situé à moins de 10 cm devant elle, mais elle est fort distraite et si elle dépasse la sauterelle, elle oublie son objectif. Ce jour-là, la grenouille aperçoit la sauterelle à une certaine distance d comprise entre 2 m et 5 m. La course s’engage. On souhaite écrire un algorithme qui, lorsqu’on lui donne la distance initiale d répond à la question « la sauterelle réussira-t-elle à échapper à la grenouille ? » Pour chacun des items ci-après, écrire la (ou les) instruction(s) élémentaire(s) correspondante(s). 1 Il faut demander au début l’avance de la sauterelle sur la grenouille. Outils pour l’algorithmique On constate généralement trois (ou quatre) façons de noter l’affectation d’une valeur (par exemple 3) à une variable (par exemple v) : v:=3 ou v ! 3 ou v = 3 (dans les calculatrices, on voit souvent : 3 " v ). Affecter une valeur à une variable consiste à « ranger » cette valeur (ou cet objet) dans la variable considérée. Toute nouvelle affectation remplace (et détruit) la précédente. Pour suivre l’évolution du contenu des variables d’un algorithme, on dresse généralement un « tableau de suivi » dans lequel on indique le contenu de chaque variable à chacune des étapes de l’algorithme : Variable : a, b, c : réel ; Début 1 a=0; 2 b=2; 3 c=-7; 4 a=b+2; 5 b=b-4; 6 c=b+2; Fin a b c À l’étape 4 , on a : 1 0 / / a 2 0 2 / 3 0 2 -7 4 4 2 -7 5 4 -2 -7 6 4 -2 0 = b + 2 2 2 2 + 2 4 a = 4 %$ #)!*!)' TI Cas i o 4 b. Ne pas oublier d’actualiser la variable permettant de savoir si la chasse est finie, sinon la boucle du 4 n’aura pas de fin. Notation Une variable est désignée par son nom (que le créateur de l’algorithme choisit) et contient un objet (nombre, texte, tableau…) souvent appelé valeur de la variable. 1 Tester chacun des algorithmes ci-dessus, puis expliquer leur but. Activité Coup de pouce )'*#+' ! ) + )0( Activité 2 Ensuite, on va placer dans des variables la position de la grenouille et celle de la sauterelle. La séquence de touches : P permet d’affecter la valeur 2 à la variable P : La séquence de touches : P permet d’affecter la valeur 2 à la variable P : Sur les deux calculatrices, on constate que la valeur 2 a bien été « retenue » puisque le calcul de 3 # P donne bien 6. Cependant les calculatrices Casio et Texas Instrument ne permettent pas d’affecter un texte à une variable. L’activité 2 du paragraphe , page 12, n’est donc pas possible avec ces calculatrices. Outils pour l’algorithmique