Algorithmique et évaluation des compétences (D’après un travail présenté par l’académie de Nancy-Metz. Mars 2010 ) 1 Quelles compétences en algorithmique ? La question du référentiel. ( document ressource : ) L’élève sera capable … d’analyser existant ; le fonctionnement ou le but d’un algorithme de modifier un algorithme existant pour obtenir un résultat précis ; de créer un algorithme en réponse à un problème donné. Envisager une évaluation par compétences qui ne conduira pas nécessairement à une note spécifique chiffrée. 2 Les compétences visées (document ressource) comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 33 Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 44 (document ressource) Pouvons-nous proposer des exercices pour chacune de ces compétences ? Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 55 (document ressource) Entrée : Saisir trois nombres a, b et c Traitement : Affecter a+b+c à M Affecter M/3 à M Sortie : Afficher M Expliquer en une phrase ce que fait cet algorithme Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... valider un programme simple. 66 (document ressource) Entrée : Saisir trois nombres a, b et c Traitement : Affecter a+b+c à M Affecter M/3 à M Sortie : Afficher M Modifier cet algorithme afin qu’il permette de calculer la moyenne de trois notes a, b et c affectées des coefficients 1,2 et 3 et qu’il signale si le résultat est ou non supérieur à 10 Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 77 (document ressource) On veut écrire un algorithme qui permette de calculer la moyenne de trois notes a, b et c affectées des coefficients 1,2 et 3 et qui signale si le résultat est ou non supérieur à 10. Compléter : Entrée : Traitement : Sortie : Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 88 (document ressource) Un examen comporte trois épreuves de coefficients respectifs 1, 2 et 3. Un étudiant est reçu à l’examen si sa moyenne est supérieure ou égale à 10. Écrire un algorithme qui renvoie l’information « l’étudiant est reçu » ou l’information « l’étudiant n’est pas reçu » à la saisie des trois notes. Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. (document ressource) Un examen comporte trois épreuves de coefficients respectifs 1, 2 et 3. Un étudiant est reçu s’il obtient une moyenne supérieure ou égale à 10, il est recalé s’il obtient strictement moins de 8 et il doit passer un oral si sa moyenne est comprise entre 8 et 10. On veut écrire un algorithme qui renvoie le résultat de l’examen à la saisie des trois notes. Un programmeur distrait a écrit l’algorithme cidessous. Quelles sont les erreurs qu’il a commises ? Entrée : saisir a,b,c Traitement : affecter a+2*b+3*c/6 à M si M>=8 et M<=10 afficher « oral » sinon si M>=10 99 afficher « reçu » Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. (document ressource) Un examen comporte trois épreuves de coefficients respectifs 1, 2 et 3. Un étudiant est reçu s’il obtient une moyenne supérieure ou égale à 10, il est recalé s’il obtient moins de 8 et il doit passer un oral si sa moyenne est comprise entre 8 et 10. On veut écrire un algorithme qui renvoie le résultat de l’examen à la saisie des trois notes. Exécuter l’algorithme suivant en utilisant Algobox. Entrée : saisir a,b,c Traitement : affecter (a+2*b+3*c)/6 à M si M<8 afficher « recalé » sinon si M>=10 afficher « reçu » sinon 10 10 afficher « oral » Les compétences visées Être capable de … comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; analyser la situation : identifier les données d’entrée, de sortie, le traitement...; mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ; valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ; adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ; valider un programme simple. 11 11 (document ressource) Certaines compétences s’appliquent : - à un algorithme, - à une situation Exemples d’énoncés – exemple 1 Dans un repère orthonormal on considère les points A(-1;0) et B(3;0). Ecrire un algorithme qui effectuera la tâche suivante : Si l’utilisateur lui fournit les coordonnées (x;y) d’un point C, le programme retournera l’une des deux informations « ABC est un triangle rectangle en C » ou « ABC n’est pas un triangle rectangle en C ». 12 Solution 1 Critère choisi : la relation de Pythagore Le triangle est rectangle si AC²+BC²=16 Traitement algorithmique : saisir x, y Affecter (x+1)²+y² à P Affecter (x-3)²+y² à Q Affecter P+Q à R si R=16 alors… sinon … 13 Solution 2 Critère choisi : Utilisation du cercle circonscrit Le triangle est rectangle si CI=2. Traitement algorithmique : saisir x, y Affecter rac((x-1)²+y²) à R si R=2 alors… sinon … 14 Solution 2bis Critère choisi : Utilisation du cercle circonscrit Le triangle est rectangle si CI²=4 Traitement algorithmique : saisir x, y Affecter (x-1)²+y² à R si R=4 alors… sinon … 15 Solution 3 Critère choisi : utilisation du projeté orthogonal H de C, puis du critère CH²=BHxAH ou de la trigonométrie Traitement algorithmique : saisir x, y si y²=(x+1)(3-x) alors… sinon … 16 Remarques Suivant le critère choisi, le traitement est plus ou moins complexe, et requiert ou non des variables supplémentaires. Le critère mathématique le plus naturel (Pythagore) ne fournit pas le test le plus simple. La solution utilisant la distance du point au milieu de l’hypoténuse présente une difficulté supplémentaire liée à la précision de la machine : le recours au carré de la distance. 17 Compétences en jeu Géométrie : choix d’un critère pertinent, mobilisation de connaissances… Calcul algébrique : Calcul d’une expression mobilisant deux variables Raisonnement : utilisation d’une caractérisation « si … alors le triangle est rectangle en C » 18 Compétences en jeu - algorithmique A partir d’une situation donnée analyser la situation identifier les données d’entrée, élémentaire Identifier les données de sortie, élémentaire Identifier le traitement requis, la difficulté principale n’est pas algorithmique mettre au point une solution algorithmique Les principales difficultés de l’algorithme sont masquées car elles touchent à la programmation. 19 La liste de compétences s’enrichit … A partir d’un algorithme donné exécuter un algorithme ; comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; traduire un algorithme donné dans un langage de programmation. A partir d’une situation donnée analyser la situation (identifier les données d’entrée, de sortie, le traitement...) mettre au point une solution algorithmique (identifier les boucles, les tests, des opérations d’écriture, d’affichage prendre en compte les limites du langage de programmation, les questions de précision.. ) 20 20 Exemple 2 Version 1 – problème ouvert Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. 21 21 Exemple 2 Version 2 – problème guidé 1 ) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 9999 qui sont égaux à la somme des cubes de leurs chiffres. 2) Calculer 5 x 93 .En déduire qu’il n’existe pas de nombre N à 5 chiffres qui soit égal à la somme des cubes de ses chiffres. Existe-t-il des nombres de plus de 5 chiffres solutions du problème ? 3) A l’aide d’une calculatrice ou d’un logiciel déterminer tous les nombres solutions du problème. 22 Exemple 2 Version 3 – problème guidé mathématiques et algorithmique 1 ) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 99 qui sont égaux à la somme des cubes de leurs chiffres. 2) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 999 qui sont égaux à la somme des cubes de leurs chiffres. 3) Calculer 5 x 93 .En déduire qu’il n’existe pas de nombre N à 5 chiffres qui soit égal à la somme des cubes de ses chiffres. Existe-t-il des nombres de plus de 5 chiffres solutions du problème ? 3) A l’aide d’une calculatrice ou d’un logiciel déterminer tous les nombres solutions du problème. 23 Algorithme en langage conventionnel Variables m, c, d, u, N, S nombres entiers naturels Début pour m allant de 0 à 9 pour c allant de 0 à 9 pour d allant de 0 à 9 pour u allant de 0 à 9 affecter la valeur 1000m+100n+10d+u à N affecter la valeur m3+c3+d3+u3 à S Si N=S alors Afficher N Fin 24 Version scilab 25 ****************************************** 1 VARIABLES 2 u EST_DU_TYPE NOMBRE 3 d EST_DU_TYPE NOMBRE 4 c EST_DU_TYPE NOMBRE 5 m EST_DU_TYPE NOMBRE 6 S EST_DU_TYPE NOMBRE ***Algorithme lancé*** 7 N EST_DU_TYPE NOMBRE 0 8 DEBUT_ALGORITHME 1 9 POUR m ALLANT_DE 0 A 9 153 10 DEBUT_POUR 370 11 POUR c ALLANT_DE 0 A 9 371 12 DEBUT_POUR 407 13 POUR d ALLANT_DE 0 A 9 ***Algorithme terminé*** 14 DEBUT_POUR 15 POUR u ALLANT_DE 0 A 9 16 DEBUT_POUR 17 N PREND_LA_VALEUR u+10*d+100*c+1000*m 18 S PREND_LA_VALEUR pow(u,3)+pow(d,3)+pow(c,3) +pow(m,3) 19 SI (S==N) ALORS 20 DEBUT_SI 21 AFFICHER N 22 FIN_SI 23 FIN_POUR 24 FIN_POUR 25 FIN_POUR 26 FIN_POUR 27 FIN_ALGORITHME Version algobox 26 Compétences en jeu - version 3 1 ) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 99 qui sont égaux à la somme des cubes de leurs chiffres. 2) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 999 qui sont égaux à la somme des cubes de leurs chiffres. 3) Calculer 5 x 93 .En déduire qu’il n’existe pas de nombre N à 5 chiffres qui soit égal à la somme des cubes de ses chiffres. Existe-t-il des nombres de plus de 5 chiffres solutions du problème ? 3) A l’aide d’une calculatrice ou d’un logiciel déterminer tous les nombres solutions du problème. 27 Arithmétique : • Numération décimale Calcul algébrique : • Manipulation d’expressions à plusieurs variables Raisonnement : • Raisonnement par disjonction des cas. (Analyse : • Comparaison de suites) Compétences en jeu - version 3 1 ) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 99 qui sont égaux à la somme des cubes de leurs chiffres. 2) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 999 qui sont égaux à la somme des cubes de leurs chiffres. 3) Calculer 5 x 93 .En déduire qu’il n’existe pas de nombre N à 5 chiffres qui soit égal à la somme des cubes de ses chiffres. Existe-t-il des nombres de plus de 5 chiffres solutions du problème ? 3) A l’aide d’une calculatrice ou d’un logiciel déterminer tous les nombres solutions du problème. 28 Algorithmique A partir d’une situation donnée analyser la situation identifier les données d’entrée, de sortie, le traitement mettre au point une solution algorithmique identifier les boucles, les tests, des opérations d’écriture, d’affichage écrire un programme en réponse à une question posée. A partir d’un algorithme donné modifier un algorithme pour obtenir un résultat particulier ; Compétences en jeu - version 1 A partir d’un algorithme donné Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. exécuter un algorithme ; comprendre et analyser un algorithme préexistant ; modifier un algorithme pour obtenir un résultat particulier ; écrire un programme en réponse à une question posée. A partir d’une situation donnée 29 analyser la situation (identifier les données d’entrée, de sortie, le traitement...) mettre au point une solution algorithmique (identifier les boucles, les tests, des opérations d’écriture, d’affichage...) Prendre l’initiative pertinente de construire une solution algorithmique. Les difficultés des élèves Les erreurs repérées : Confusion affectation et égalité ; Notion de variable non comprise ; Confusion de lecture du programme ; Difficulté de validation de l’algorithme ; Difficulté pour comprendre le rôle de l’algorithme. 30 30 Les facteurs de complexité la nécessité d’un test d’arrêt ; le nombre de boucles à imbriquer ; le nombre d’issues des tests ; les variables qui subissent de nouvelles affectations dans le traitement ; Les variables « masquées » ; La complexité des concepts mathématiques mobilisés ; La complexité du traitement mathématique requis pour le traitement algorithmique ; La présence d’astuces ou de contraintes liées au traitement algorithmique ou au langage à utiliser. 31 LES ENJEUX Concevoir des situations qui soient intéressantes, d’un point de vue mathématique et accessibles d’un point de vue algorithmique Repérer les compétences Peut-on / doit-on évaluer isolément les compétences relatives à l’algorithmique ? 32