Algorithmique et évaluation
Un algorithme à l’école maternelle
Activité algorithmique et évaluation Quelques exemples d’évaluation de l’activité algorithmique Compétences visées dans une activité algorithmique Vers une évaluation par compétences Analyse d’exemples
L’évaluation (document ressource) Les modalités fondamentales de l’activité algorithmique : analyser le fonctionnement ou le but d’un algorithme existant ; modifier un algorithme existant pour obtenir un résultat précis ; créer un algorithme en réponse à un problème donné. L’évaluation des pratiques en algorithmique peut s’organiser autour d’une évaluation par compétences qui ne conduira pas nécessairement à une note spécifique chiffrée. Les activités donnant lieu à l’évaluation des compétences en algorithmiques peuvent évidemment également servir de support à l’évaluation d’autres compétences, notamment celles qui sont liées à la résolution de problèmes : savoir modéliser, s’engager dans une recherche, communiquer, vérifier… 4
L’évaluation Analyser le fonctionnement ou le but d’un algorithme existant
Analyser le fonctionnement ou le but d’un algorithme existant Le nombre d de diagonales d’un polygone régulier à n côtés (n étant un entier naturel supérieur ou égal à 3) est donné par la formule : . Dans cette question, on cherche à déterminer dans quels polygones réguliers le nombre d de diagonales est un multiple entier du nombre n de côtés. Terminale L Bac 2009
Terminale STG GSI
L’évaluation Modifier un algorithme existant pour obtenir un résultat précis Aucun exemple n’existe dans les sujets de L pour ce type de tâche.
L’évaluation Créer un algorithme en réponse à un problème donné Ces exercices n’existent pas en l car ils ne sont pas adaptés à une évaluation en temps limité. On les trouve en STG avec des « balises » pour que l’élève n’ait pas toute la démarche à trouver seul.
Créer un algorithme en réponse à un problème donné L'entreprise "Vers l'aéroport", assure sur rendez-vous, le transport des personnes de leur lieu de travail ou de leur domicile vers l'aéroport. Les clients appellent une opératrice de l'entreprise. Celle-ci saisit leurs noms, le type de client (entreprise ou particulier), le type d'horaire en fonction de l'affluence (bleu (faible affluence), blanc (moyenne) et rouge) et le nombre de kilomètres à parcourir. L'opératrice établit une facture que le chauffeur remettra au client. Les règles sont les suivantes : le montant de base, quelle que soit la catégorie du client est fonction du nombre de kilomètres à parcourir et du prix du kilomètre (1,7€) ; si le client appartient à une entreprise et s'il se déplace dans les horaires bleus, il a droit à une remise de 15 % sinon, la remise est de 5 % ; si le client est un particulier et s'il se déplace dans les horaires rouges, il n'y a pas de remise, sinon elle est de 10 %. Complétez l'algorithme en annexe B BTS compta gestion première année Commentaires du professeur : Je donne les variables pour leur éviter la recherche. Ils doivent évidemment au préalable identifier celles qui seront saisies et calculées. Cela permet aussi d’harmoniser la correction. Ils ne sont pas obligés de toutes les utiliser et ils peuvent en ajouter du moment que le calcul demandé est correct. L’erreur fréquente dans la saisie des données est de demander aussi la saisie du résultat !! Cohérence : 3 points (structures des conditions, objectifs du calcul atteint…) Tout dépend en fait de la difficulté. Je considère que l’objectif est d’arriver au bon calcul donc même si l’algo n’est pas optimisé, je valide. Cependant, si la structure de l’algo est trop « lourd », je pénalise. Syntaxe : 1 point (ex. : oubli de Fin Si fréquent) On peut aussi noter la lisibilité qd l’algo est long Le nombre de points dépend aussi de la difficulté de l’algo
Algo Facture Variables NC : Chaîne (Nom du client) TC : Chaîne (Type de client) TH : Chaîne (Type d'horaire) KM : Entier (Nombre de kilomètres) RM : Réel (Remise) NAP : Réel (Net à payer) Début Saisie des variables Calcul du net à payer Affichage du résultat FIN
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. 12
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 : Calculer (a+b+c)/3 Affecter à M la valeur trouvée Sortie : Afficher M Expliquer en une phrase ce que fait cet algorithme 13
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 : Calculer (a+b+c)/3 Affecter à M la valeur trouvée 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. 14
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 : 15
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. 16
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. L’algorithme suivant convient-il ? Entrée : saisir a,b,c Traitement : M= a+2*b+3*c/6 si (M-8)*(M-10)>=0 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. 17
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 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 : M= (a+2*b+3*c)/6 si M>=10 afficher « reçu » sinon si M<8 afficher « recalé » afficher « oral » 18
Algorithmes et langages : trois niveaux Écrire un algorithme qui donne la somme des entiers de 1 à n Le langage naturel Pour calculer la somme des entiers de 1 à n , on part de 0, puis on calcule 0+1, puis 0+1+2, puis 0+1+2+3 et on continue ainsi jusqu’à 1+2+3+….+n. Le langage algorithmique Entrée : Saisir n Traitement : Affecter à S la valeur 0 Pour i variant de 1 à n Affecter à S la valeur S+i Sortie: Afficher S Le langage naturel se fait avec des phrases, qui expliquent la procédure suivie, avec éventuellement des expressions plus élaborées comme "tant que...faire". L'idée étant de décrire ce qui va être construit, avec des exigences très larges sur la syntaxe, un mélange de phrases et d'expressions plus "techniques". Le langage algorithmique, davantage codifié, reste cependant aisé à comprendre. Il fait apparaître la structure du programme et permet la traduction facile dans un langage de programmation. Il convient de ne pas être exigeant dans la syntaxe et de ne pas pénaliser les élèves pour des maladresses. Cependant le professeur se doit de rester précis et rigoureux. Le langage de programmation est un langage codifié qui dispose d’un compilateur permettant son exécution sur machine. Quand on commence à définir les variables, on est déjà dans un début de langage de programmation, la preuve, c'est que pour certains langages, ce n'est pas nécessaire. Le langage de programmation
Algorithme et évaluation Une proposition de grille
Evaluation d’une activité n°1 Problème : Le plan est rapporté à un repère (O, I, J). Quatre points du plan, A, B, C et D, dont on connaît les coordonnées, étant donnés, le quadrilatère ABCD est-il un parallélogramme ?
Algobox
Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. 28
Déterminer tous les nombres entiers naturels égaux à la somme des cubes de leurs chiffres. 1 ) Ecrire un algorithme permettant de trouver tous les nombres inférieurs à 9999 solutions du problème. 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. 4) Déterminer tous les nombres égaux à la somme des puissances quatrièmes de leurs chiffres. 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 mais on peut comprendre ce qui se passe. 4) Cette question peut être un prolongement.
Compétences visées 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. Analyser la situation : il faut comprendre qu’il faudra recourir à la numération en base 10, introduire les chiffres m, c, d, u, exprimer le nombre en fonction d’eux. Mettre au point une solution algorithmique : Comprendre l’imbrication des boucles correspondant aux quatre chiffres (il serait plus naturel de tenter une boucle « pour n de 0 à 9999 ») Placer le test au bon endroit : Adapter l’algorithme au langage : on demande explicitement d’utiliser un langage.
Variables m, c, d, u, N, S nombres entiers naturels Traitement 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 à N la valeur 1000m+100n+10d+u affecter à S la valeur m3+c3+d3+u3 Si N=S Afficher N 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 tout réécrire car on ne peut pas 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 semble supporter. Cette limite du logiciel pourrait justifier aux yeux des élèves la nécessité de limiter l’exploration.
Version Algobox
Version python Version scilab
Evaluation d’une activité Après s’être longuement attardé à la brasserie « Les deux rives », M. Heine Ken décide de rentrer chez lui. Pour cela il doit emprunter un pont sans garde-corps de 15 pas de long et 4 pas de large. La démarche de Ken est très particulière : Soit il avance d’un pas en avant ; soit il se déplace en diagonale vers la gauche (déplacement équivalent à un pas vers la gauche et un pas en avant) ; soit il se déplace en diagonale vers la droite (déplacement équivalent à un pas vers la droite et un pas en avant). On suppose de plus que ces 3 déplacements possibles sont aléatoires et équiprobables. On suppose également que Ken se trouve au milieu du pont au début de la traversée. Monsieur Ken a-t-il des chances d’atteindre l’autre rive en empruntant ce pont ?