et évaluation des compétences Algorithmique et évaluation des compétences (D’après un travail présenté par l’académie de Nancy-Metz. Mars 2010 )
Quelles compétences en algorithmique ? La question du référentiel. ( document ressource : ) L’élève sera capable … d’analyser le fonctionnement ou le but d’un algorithme existant ; 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.
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. 3
Les compétences visées (document ressource) Ê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. Pouvons-nous proposer des exercices pour chacune de ces compétences ? Les diapositives qui suivent ont été élaborées pour illustrer les compétences lors des animations réalisées dans l’académie de Nancy Metz. 4
Les compétences visées (document ressource) Ê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. Entrée : Saisir trois nombres a, b et c Traitement : Affecter a+b+c à M Affecter M/3 à M Sortie : Afficher M Les diapositives qui suivent ont été élaborées pour illustrer les compétences lors des animations réalisées dans l’académie de Nancy Metz. Expliquer en une phrase ce que fait cet algorithme 5
Les compétences visées (document ressource) Ê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. 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 6
Les compétences visées (document ressource) Ê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. 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 : 7
Les compétences visées (document ressource) Ê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. 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. 8
Les compétences visées (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 ci- dessous. 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 afficher « reçu » afficher « recalé » Ê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. 9
Les compétences visées (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 » afficher « oral » Ê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. 10
Les compétences visées (document ressource) Ê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. Certaines compétences s’appliquent : - à un algorithme, - à une situation Les diapositives qui suivent ont été élaborées pour illustrer les compétences lors des animations réalisées dans l’académie de Nancy Metz. 11
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 ». Cet énoncé est clairement identifiable par l’élève comme relevant de l’algorithmique.
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 … Pour ne pas encombrer la présentation, on ne s’intéresse pas à la question des cas limites, on n’attend pas de l’algorithme qu’il vérifie que C est différent de B et de A.
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 …
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 …
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 …
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.
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 » D’autres compétences sont en jeu, leur maîtrise interagit avec les compétences relatives à l’algorithmique.
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. Du point de vue de l’algorithme le test « CI=2 » est pertinent, mais lors de la programmation il peut ne pas l’être, alors que « CI²=4 » le sera. L’enchaînement de compétences « trouver une solution algorithmique » puis « traduire par un programme » ne suit pas rigoureusement cette chronologie. Les contraintes de la programmation peuvent influer sur l’algorithme.
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
Exemple 2 Version 1 – problème ouvert Comme il se doit pour un problème ouvert, rien ne laisse penser que l’algorithmique peut être la voie de la solution. Un élève averti aurait même tendance à l’écarter car le champ d’investigation est infini : « tous les nombres entiers… » n’incite pas à programmer une boucle. Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. 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. L’algorithmique permet de développer un mode de raisonnement rarement utilisé jusque là : on montre que le nombre de solutions au problème est fini, on détermine un majorant des solutions et on explore tout ce qui est en dessous à l’aide d’un algorithme de balayage systématique. 2) 5 x 93 = 2916, le nombre ne peut pas être à la fois plus grand que 9999 et plus petit que 2916. Pour 6 chiffres, 7 chiffres, etc la situation est la même car le nombre N est minoré par un nombre qui est multiplié par 10 à chaque étape et majoré par un nombre auquel on ajoute 729 à chaque étape. La démonstration rigoureuse, (comparaison d’une suite géométrique et d’une suite arithmétique) par une récurrence n’est pas au programme de seconde mais on peut comprendre ce qui se passe. Si le problème est posé à un niveau supérieur, on peut démontrer complètement le résultat. Dans cette version de l’énoncé la partie mathématique est guidée, la partie algorithmique ne l’est pas.
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.
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 On pourrait limiter le balayage à « m allant de 0 à 3 » car on sait que N est majoré par 2916. Cette question pourrait venir en fin d’exercice : comment améliorer l’algorithme pour qu’il soit plus rapide. Un autre aménagement de l’exercice consisterait à ne pas limiter a priori les solutions à des nombres à quatre chiffres. On pourrait chercher pour 1, 2, 3… chiffres. Le logiciel Algobox montre vite ses limites : d’une part il faut à chaque fois réécrire beaucoup de lignes car il est difficile insérer une boucle autour d’une autre, d’autre part à partir de 6 chiffres il bloque, cela dépasse le niveau de briques impliquées qu’il supporte. Cette limite du logiciel pourrait justifier aux yeux des élèves la nécessité de limiter l’exploration.
Version scilab
Version algobox ****************************************** 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 7 N EST_DU_TYPE NOMBRE 8 DEBUT_ALGORITHME 9 POUR m ALLANT_DE 0 A 9 10 DEBUT_POUR 11 POUR c ALLANT_DE 0 A 9 12 DEBUT_POUR 13 POUR d ALLANT_DE 0 A 9 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 ***Algorithme lancé*** 1 153 370 371 407 ***Algorithme terminé*** 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. 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. 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é 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 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. Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. Une nouvelle compétence apparaît dans le référentiel, elle est d’un niveau de complexité supérieure et pourrait être elle-même déclinée en plusieurs sous niveaux suivant le caractère évident ou insolite du recours à l’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. Le référentiel permet-il d’y voir clair ? Certaines erreurs relèvent des items prévus ou de difficultés dépassant le cadre de l’algorithmique. Les trois premières sont intrinsèques à l’algorithmique et dénotent une incompréhension de ce qu’est un algorithme. Il faut donc rajouter des items d’un niveau « taxonomique plus élémentaire ». 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. la nécessité d’un test d’arrêt ; Un programme avec une boucle « pour i allant de … à … » est souvent plus facile à comprendre ou à concevoir qu’un programme avec un test d’arrêt, car il faut comprendre la condition d’arrêt, et éviter de se tromper d’une unité dans le test. le nombre de boucles à imbriquer ; le nombre d’issues d’un test ; Notamment si l’une des issues conduit à une boucle ou un test. les variables qui subissent de nouvelles affectations dans le traitement ; Exemple : les bornes dans un algorithme de dichotomie ou toute situation de récurrence. Les variables masquées ; Exemple : le pb des cubes. Le problème a été posé à une classe de TS, les élèves ont cherché comment retrouver les chiffres à partir du nombre. La complexité des concepts mathématiques mobilisés ; Exemple : le pb des cubes nécessite une conscience de l’écriture en numération décimale. La complexité du traitement mathématique requis pour le traitement algorithmique. La présence d’astuces ou de contraintes… : Exemple : le problème du triangle rectangle. L’utilisation de la relation de Pythagore ne nécessite pas le passage à la racine, c’est même déconseillé…
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 ?