Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Ensemble des ressources à consulter sur le site académique Planète MATHS
(http://www.ac-grenoble.fr/disciplines/maths/)
Formation Algorithmique 2015-2016
Académie de Grenoble
En collaboration avec le groupe IREM de Grenoble
1
La formation des professeurs (Mathématiques - Technologie)
2
Mise en forme du diaporama Karine.Bethenod
Planification du présentiel (6h) : •Présentation des programmes •Notions d’algorithmique, illustrations :
algorithmique débranchée petits exemples en Scratch
•Un projet disciplinaire : création d’un jeu de calcul mental. •Présentation d’un projet bi-disciplinaire, maths-technologie
3
Pour revenir au sommaire interactif, il vous suffit de cliquer sur l’icône
4
Ce diaporama est assorti d’autres fichiers dont des petits fichiers Scratch à ouvrir et à compléter. Ces fichiers permettent de tester en direct les concepts introduits. A télécharger sur le site Planète maths de l’académie de Grenoble, ressource 517
Sommaire interactif: •Cadre institutionnel:
Objectifs et modalités dans les programmes au lycée Techno/maths DNB
• Algorithmique : introduction algorithmique débranchée Structures algorithmiques
•Mener une activité pédagogique Conception tenue évaluation
Cliquer directement sur la section souhaitée
5
Enseigner l’algorithmique et la programmation au collège
6
Académie de Grenoble Printemps 2016 Journées de formation au numérique
IA-IPR Maths-Technologie
Diaporama 1
7
■ Buts généraux ■ Apporter les clés de décryptage d’un monde numérique en évolution constante
■ Pratiquer des langages informatiques
■ Mais ni former des experts en informatique, ni maîtriser les langages informatiques
[L’élève] sait que des langages informatiques sont utilisés pour programmer des outils numériques et réaliser des traitements automatiques de données. Il connaît les principes de base de l’algorithmique et de la conception des programmes informatiques. Il les met en œuvre pour créer des applications simples.
Objectifs
■Objectifs généraux
8
■Acquérir des méthodes de programmation
■Développer des compétences
■Mettre en place certaines modalités d’apprentissage
Objectifs Objectif1 : Acquérir des méthodes de programmation
Des méthodes qui construisent la pensée algorithmique
9
■ la programmation événementielle :
concevoir des séquences d’instructions déclenchées par un événement (appui d’une touche, clic de souris, son reçu par le micro, mais aussi interaction entre les « lutins » ou l’arrière-plan), prévoir de l’interactivité avec l’utilisateur
■ s’initier à la programmation parallèle : déclenchement par le même événement de deux ou plusieurs séquences d’instructions
■ appréhender la temporalité du déroulement d’un programme, avec un rôle particulier de la variable informatique, la possibilité d’échanger des informations entre objets pour scénariser un processus
Objectifs
■ décomposition : analyser un problème complique, le découper en sous-problèmes, en sous-tâches
10
Objectif2 : Développer des compétences spécifiques
■ reconnaissance de schémas : reconnaître des schémas, des configurations, des invariants, des répétitions, mettre en évidence des
interactions
■ généralisation et abstraction : repérer les enchaînements logiques et les traduire en instructions conditionnelles,
traduire les schémas récurrents en boucles, concevoir des méthodes liées à des objets qui traduisent le comportement attendu
■ conception d’algorithmes : écrire des solutions modulaires à un problème donné, réutiliser des algorithmes déjà
programmés
Objectifs
■ une démarche de projet active et collaborative : établissement d’objectifs partagés et répartition des tâches, communication entre élèves contributeurs d'un même projet
11
Objectif3 : Mettre en place des modalités d’apprentissages
■ une démarche de création: réalisation de productions collectives (programmes, applications, animations, etc.), au cours desquelles les élèves développent leur autonomie, leur créativité et leur imagination, mais aussi le sens du travail collaboratif
■ une démarche interdisciplinaire : favoriser la mise en œuvre de diverses activités de création numérique, en particulier dans le cadre des enseignements complémentaires
Modalités- Comment faire ?
■Mettre les élèves en activité
12
■ pas un cours magistral, pas de chapitres Les boucles, puis Les conditionnelles, etc.
■ se fixer des objectifs clairs et explicités au début de chaque séance
■ réserver l’essentiel du temps à une activité autonome des élèves
■ prévoir une courte institutionnalisation des concepts, une récapitulation en fin de chaque séance
■ leur laisser une part importante d’initiative dans le déroulé d’une séquence
■Mettre en œuvre une pédagogie de projet
13
■ une première séance propose une activité, dont le professeur a déterminé les objectifs de formation, les concepts nouveaux qui devront être installés
■ une deuxième séance permet à chaque élève de développer son programme dans les directions qu’il aura choisies lui-même, grâce éventuellement à un outillage du professeur
■ une troisième séance permet la finalisation des projets, une mise en commun des concepts et techniques utilisés
■ une valorisation de chaque production, sans distinction de niveau d’expertise, peut être envisagée
Modalités- Comment faire ?
■Mettre en œuvre la différenciation pédagogique
14
■ les nouveaux programmes sont des programmes de cycle
il s’agit d’opérationnaliser l’acquisition par chaque élève des attendus du socle : amener chaque élève à la meilleure maîtrise possible de tous ces attendus, dans un parcours de formation qui prend en compte ses acquis et ses marges de progression
■ la différenciation ne saurait se réduire à de la remédiation…
■ accompagner chaque élève, en permettant aux meilleurs de construire des méthodes expertes, en conduisant les élèves les plus en difficulté à une maîtrise suffisante des attendus pour valider l’acquisition du socle
Modalités- Comment faire ?
■ par exemples : o prévoir des « défis » o analyser les blocs ou les scripts préparés par le professeur o guider l’élève dans la définition de son projet à partir de l’activité commune,
que ce soit pour l’enrichir ou en réduire les objectifs
L’algorithmique dans les programmes Maths du collège
■Programme du cycle 3 en maths: thème Espace et géométrie
■ Attendu :
■ Attendu :
15
(se) repérer et (se) déplacer dans l'espace en utilisant ou en élaborant des représentations Programmer les déplacements d’un robot ou ceux d’un personnage sur un écran – Travailler […] avec de nouvelles ressources comme les systèmes d’information géographique, des logiciels d’initiation à la programmation...
reconnaître, nommer, décrire, reproduire, représenter, construire quelques solides et figures géométriques Réaliser une figure simple ou une figure composée de figures simples à l’aide d’un logiciel
Apprentissages au cycle 3 ■Situations d’apprentissage en maths
16
■Objectifs d’apprentissage
s’initier, préparer le cycle 4 (on peut par exemple commencer à utiliser Scratch en 6e)
renforcer l’acquisition du repérage dans le plan
utiliser un nouvel outil de production de figures
■ travail débranché,
■ ou travail en ligne (par ex. code.org)
■ ou sur tablette (avec ScratchJr)
■ ou sur ordinateur (avec GeoTortue ou Scratch)
■ ou avec de petits robots
L’algorithmique dans les programmes Maths du collège
■Programme du cycle 4 : thème Algorithmique et programmation
■ Attendu :
17
o écrire, mettre au point et exécuter un programme simple
o Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des
schémas
o Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné
o Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs.
o Programmer des scripts se déroulant en parallèle
Apprentissages au cycle 4 ■Situations d’apprentissage en maths
18
■Objectifs d’apprentissage
on introduit des méthodes modernes de programmation (décrites ci-
dessus)
on favorise l’apprentissage dans des contextes ludiques, non liés à la
discipline (pour les maths)
on développe la pensée algorithmique et des compétences décrites plus
haut pour l’ensemble des apprentissages, et en particulier celui des
mathématiques
■ travail sur ordinateur
19
L’algorithmique au lycée
■L’algorithmique et la programmation au lycée en mathématiques
20
■ L’algorithmique n’apparait pas comme une partie du programme, au même titre que l’analyse, la géométrie et les probabilités et statistiques
Les capacités attendues dans le domaine de l’algorithmique d’une part et du raisonnement d’autre part, sont transversales et doivent être développées à l’intérieur de chacune des trois parties.
(Programme de seconde, BO du 23 juillet 2009)
■ L’algorithmique est vue comme une sous-partie des mathématiques La démarche algorithmique est, depuis les origines, une composante essentielle de l’activité mathématique[…] L’algorithmique a une place naturelle dans tous les champs des mathématiques et les problèmes posés doivent être en relation avec les autres parties du programme.
(Programme de seconde, BO du 23 juillet 2009)
■ Les objectifs de l’enseignement sont identiques en seconde générale et technologique et dans le cycle terminal
■ L’introduction d’un enseignement de l’algorithmique et de la programmation au collège pose la question d’une évolution de ce programme
Algorithmique : comparaison
■Situations d’apprentissage en mathématiques
21
■Objectifs d’apprentissage
travail sur ordinateur, avec Scratch o travail sur papier
o utilisation de la calculatrice
o pratique de divers logiciels : souvent algobox, plus
rarement xcas, python ou scilab
– cycle 4 lycée
o contextes ludiques, non liés aux
mathématiques
oEffets secondaires positifs du développement de
la pensée algorithmique pour l’ensemble des
apprentissages, y compris celui des
mathématiques.
o contextes d’apprentissage liés à des notions du
programme de mathématiques
oPermet d’éclairer certaines notions
mathématiques, et de travailler la logique.
oIl s’agit de familiariser les élèves avec les grands
principes d’organisation d’un algorithme
o(extrait du programme de seconde)
L’algorithmique ne fait pas seulement partie du programme
de Maths au collège …
22
■En sciences et technologie, au cycle 3 :
23
L’algorithmique dans les programmes sciences et technologie du collège
■ Les élèves découvrent l’algorithme en utilisant des logiciels d’applications visuelles et
ludiques.
■ En CM1 CM2 […] L’usage des outils numériques est recommandé pour favoriser la
communication et la représentation des objets techniques.[…]
■ En sixième […] Les élèves sont progressivement mis en activité au sein d’une structure
informatique en réseau sollicitant le stockage des données partagées.
■ Question : ne s’agit-il pas plutôt ici d’utilisation des outils numériques ?
Comparaison maths et technologie
■En maths et technologie, au cycle 4, une proximité apparente
24
■ À première vue, une grande proximité, explicitement énoncée
« En outre, un enseignement d’informatique, est dispensé à la fois dans le cadre
des mathématiques et de la technologie ».
■ On retrouve un vocabulaire commun
o Notions d’algorithme et de programme
o Notion de variable informatique
o Déclenchement d’une action par un évènement, séquences d’instructions, boucles,
instructions conditionnelles
Comparaison maths et technologie
■Mais qui cache des philosophies différentes
25
■ En technologie, la programmation est envisagée dans le cadre d’objets
techniques, qu’il s’agit de comprendre, de modifier et de concevoir
■ L’algorithmique et la programmation sont envisagées dans le cadre plus général
de l’étude des systèmes informatiques
■ Il n’y a pas de langage fixé, mais au cas par cas, des instructions à entrer pour un
logiciel de CAO, pour programmer un robot…
Analyser le comportement attendu d’un système réel
commander un système réel et vérifier le comportement
attendu
Systèmes embarqués
Forme et transmission du signal
Capteur, actionneur, interface
Commentaires :
Autrement dit tout peut être introduit depuis la cinquième, la progressivité se joue sur la complexité des problèmes et des algorithmes abordés.
27
28
L’algorithmique au DNB
Information disponible sur Eduscol • Le deuxième jour : une nouvelle épreuve écrite
de 3 heures portant sur les programmes de mathématiques (2 heures) et de sciences expérimentales et de technologie (1 heure)
– Un thème en fil rouge – Des questions identifiées pour chaque discipline – Un exercice de programmation informatique, en lien
avec les nouveaux programmes de mathématiques et de technologie
30
31
Un exemple de sujet de brevet : http://eduscol.education.fr/cid98239/dnb-2017.html#lien3
L’algorithmique au DNB dès 2017
Algorithmique au collège programmes septembre 2016
D’après le groupe algorithmique de l’IREM de Grenoble
Diaporama 2
32
33
Commentaires
34
35
Les premiers algorithmes… Al-Khwarizmi Ix ème siècle
A quoi sert un algorithme ?
36
Algorithme déconnecté Une petite vidéo d’introduction : au primaire https://www.youtube.com/watch?v=RM9ME6Nb7bc
37
Algorithme déconnecté
Le crêpier psychorigide
38
Algorithme déconnecté Les contraintes
https://www.youtube.com/watch?v=tI6uTAlX-_w&index=2&list=PLWvGMqXvyJAPSMFgCiy6qVHW9bAPu93X5 39
Algorithme déconnecté
1er temps
1- En manipulant, trouvez la solution, testez
la plusieurs fois.
C’est à vous
40
Algorithme déconnecté
2ème temps
C’est à vous
41
Algorithme déconnecté
3ème temps
C’est à vous
42
Algorithme déconnecté
3ème temps
C’est à vous
43
Algorithme déconnecté
4ème temps
C’est à vous
44
Algorithme déconnecté
En français
amener la plus grande crêpe en haut de la pile en
retournant l’ensemble (avec celles dessus)
est ce que la face orange est dessous ?
oui retourner toute la pile
non retourner la crêpe sur elle même
retourner la totalité de la pile
recommencer en ignorant les crêpes rangées
En français…
Amener la plus grande crêpe en haut de la pile en retournant l’ensemble
Retourner la totalité de la pile
Recommencer en ignorant les crêpes rangées
45
Algorithme déconnecté
Avec un peu plus de rigueur…
Tant que toutes les crêpes ne sont pas rangées
sélectionner la plus grande crêpe non rangées en partant du bas
Retourner l’ensemble sur lui même
Retourner la totalité de la pile moins celles déjà rangées
Fin de tant que
46
Algorithme déconnecté Un autre exemple : cargo bot (jeu de Rui Viana ; adaptation B.Wack)
http://www-verimag.imag.fr/~wack/CargoBot/
Seul matériel nécessaire : étiquettes plastifiées et
gobelets plastiques !
Solution ? 47
Qu’est –ce qu’un algorithme ?
48
Pas de définition formelle, ou plutôt des dizaines de définitions distinctes
Mais toutes équivalentes entre elles (permettent de calculer les mêmes choses)
Toutes ces définitions sont basées sur des modèles simples, reposant sur quelques structures de base
Commentaires :
• On dit souvent qu'un algorithme est comme une recette de cuisine, qu'il s'agit de décomposer une procédure en étapes élémentaires, mais qu'est-ce qu'une étape élémentaire ?
• Fonctionnement différent de celui qu'on a habituellement en mathématiques, où justement on travaille sur des objets parfaitement définis
• Le plus important, c'est que toutes ces définitions correspondent à l'idée « intuitive » de ce qu'est une procédure automatisable
49
50
• Pour écrire n'importe quel programme, il « suffit » de connaître très peu d’instructions !
51
• Seulement quatre instructions…
Séquence
Variable
Condition
Boucle
Structures algorithmiques
52
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
Ici on distingue boucle simple et boucle conditionnelle pour introduire progressivement les notions
L'utilisation d'événements est plutôt propre à certains langages de programmation, dont Scratch en particulier
L'ordre proposé ici pour faire découvrir ces notions n'est qu'indicatif et on peut en imaginer d'autres à condition d'adapter les activités d'introduction
Séquence d'instructions
53
Un algorithme consiste à décomposer un procédé en actions élémentaires ou instructions.
Une instruction modifie l'état de la machine
Modèle centré sur ce que la machine doit faire (mais il en existe d'autres)
Notion d’ordre dans les instructions
Commentaires :
• Intérêt de Scratch ici : il propose beaucoup d'instructions élémentaires qui permettent déjà d'écrire des programmes intéressants simplement en les enchaînant
• Il peut sembler trivial d'écrire un tel programme, mais pour des élèves débutants, n'oublier aucune instruction, tenir compte de l'ordre des instructions, etc. demande déjà un apprentissage.
• Il faut ajouter à cela la prise en main de Scratch lui-même
54
Activité de découverte
55
Donner une tâche simple mais dont la solution doit être décrite et suivie rigoureusement …
Un parcours dans un labyrinthe !
En profiter pour laisser jouer les élèves avec Scratch : cliquer sur les blocs pour les exécuter avant de faire construire un programme
Fichier Scratch n°1
Difficultés pour les élèves
56
Écrire le programme VS l'exécuter
(différence entre une machine programmée et une machine commandée)
Rien ne doit être implicite dans un algorithme
Où se situe l'erreur dans une suite d'instructions incorrectes ?
Commentaires :
Être clair sur l'objectif de l'activité précédente : ce qu'on veut à la fin c'est un programme complet qui résout le labyrinthe sans intervention. Imaginer par exemple qu'on écrit le programme d'un robot qui sera envoyé sur Mars, où le délai de réponse est trop long pour télécommander en direct
• Pour deboguer : Cependant, mettre au point pas à pas le chemin à
suivre plutôt que d'écrire d'un seul coup le programme complet permet de tester ce qu'on écrit au fur et à mesure (et donc de corriger les erreurs)
57
Spécificités de Scratch
58
Les blocs aimantés assurent l'enchaînement des instructions
Pour attraper plusieurs instructions : saisir celle du haut
Pour construire un fond à la bonne échelle (« avancer de 1 » = 1 pixel) : créer une image 480x360
Il y a une bibliothèque d’arrière plans. On peut aussi créer des arrières plan et les
sauvegarder pour les réutiliser après
Spécificités de Scratch
59
Mais un lutin peut disposer de plusieurs scripts : l'exécution séquentielle n'est pas la norme
Deux modes de déplacement (absolu ou relatif) des lutins
Attention : une instruction ne s'exécute pas en temps constant.
Commentaires :
• Juste mentionner que plusieurs scripts peuvent s'exécuter en parallèle, on en reparlera à propos des événements
• Pour les déplacements, pour un lutin donné il vaut mieux choisir d'utiliser :
• - avancer / tourner • OU • - aller à / glisser à / donner la valeur … à x/y • Mais pas de mélange des deux
• Il est difficile en général de prévoir le temps que va mettre un script à s'exécuter car Scratch rajoute des temporisations artificielles pour laisser le temps de voir le lutin se déplacer (voir fichier Tracer_un_cercle.sb2 ou plus loin avec les boucles)
60
Fichier Scratch n°2
Structures algorithmiques
61
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
Dans la plupart des langages de programmation les boucles sont un peu complexes à introduire (car il faut des variables), mais en Scratch cela reste faisable assez tôt car il existe des boucles simplifiées
Répétition d'instructions Boucles
62
Intérêt majeur d'un algorithme : laisser la machine effectuer les tâches répétitives
Une boucle amène d'une situation initiale à une solution par transformations successives
Ce qui sert à la fois pour construire la boucle et pour démontrer qu'elle réalise bien la tâche attendue
Commentaires :
• Donner sens à la boucle : si c’est pour remplacer seulement deux instructions = pas d’intéret !!! Il faut faire sentir le côté penible et l’apport de la boucle…
• Notion d'invariant (on n'est pas obligé d'utiliser le mot) : une propriété logique vérifiée à chaque tour de boucle, pour les données déjà traitées
• Particulièrement important lorsqu’on va utiliser des blocs dans des boucles pour tracer !
• En début de programme, cette propriété doit être trivialement vraie ; une fois sorti de la boucle elle assure que le résultat est celui attendu
• Même si ce n'est pas formalisé, on a forcément cette propriété en tête pour savoir quoi écrire dans sa boucle
63
Activité de découverte
64
Tracé de figure (géométrique)
• La tâche à réaliser doit pouvoir se généraliser
Peut aussi être prévu en prolongement d'une activité sur la séquence
• Ressources sur http://geotortue.free.fr/
Commentaires :
• Pas de fichier particulier à fournir pour l'activité On peut aussi partir du labyrinthe en escalier
• Exemples de généralisations : - tracer un carré, un hexagone, un polygone à n côtés - tracer 4, 10, n carrés côte à côte
• On voit qu'un algorithme ne résout pas seulement un problème
mais une classe de problèmes
• Attention, Scratch ne laisse pas les lutins sortir de la scène, donc un programme correct peut donner un résultat déformé si la figure déborde
• Rapidement, pour faire des tests confortablement, on peut faire écrire un petit script pour réinitialiser la scène (effacer tout, remettre le lutin au centre...)
65
Fichier Scratch n°3
Difficultés pour les élèves
66
Produire un état en fin de boucle suffisamment similaire à celui en début de boucle
Acquérir le réflexe de factoriser du code
Déterminer un nombre de répétitions à l'aide d'une variable
Commentaires :
• Réflexe à acquérir : dès qu'on doit écrire deux fois la même chose, on doit pouvoir s'y prendre autrement (et surtout pas utiliser de copier-coller !)
• Retour sur la notion d'invariant sur cet exemple : en fin de boucle il ne suffit pas d'amener le chat au prochain coude à droite, il faut aussi le replacer dans la bonne direction
• Dans un premier temps on fixe à la main le nombre de répétitions, mais toujours dans une optique de généralisation, on finira par le déterminer avec une variable
67
Spécificités de Scratch
68
Bloc de répétition aimanté à l'intérieur et à l'extérieur
Le nombre de répétitions peut aussi être une variable ou le résultat d'une opération
Mais pas de compteur de boucle explicite
Variante possible: répéter indéfiniment
On peut insérer des instructions dans ce bloc mais aussi insérer ce bloc autour d'un programme existant
Commentaires :
• On en profite pour commencer à parler de la « syntaxe » de Scratch : • - blocs aimantés = instructions • - blocs ronds = expressions, valeurs • Et on en verra d'autres par la suite
• Dans la plupart des langages de programmation, une boucle est dotée
d'un compteur, c'est-à-dire une variable qui vaut 1 à la première itération, puis 2 à la seconde, etc. et qu'on peut utiliser dans le corps de la boucle. En Scratch non, c'est donc plus léger mais si on en a besoin il faut la recréer soi-même
• Le fichier boucles_singleframe.sb2 montre les différentes vitesses d'exécution qu'on obtient avec ou sans boucles, avec boucles imbriquées
69
Fichier Scratch n°4
Structures algorithmiques
70
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
Instruction conditionnelle
71
Permet à un algorithme de « prendre des décisions »
Attention aux cas limites qui pourraient être couverts deux fois
Exhaustivité (chaque cas doit être couvert)
Homogénéité des résultats selon les cas
Commentaires :
• Ne pas oublier qu'un algorithme ne fait que ce qu'on lui a demandé, mais une telle instruction permet d'adapter son comportement à différentes situations
• Mais si on n'a pas traité un cas particulier, on risque de se trouver dans un état imprévu ; à l'inverse il faut être vigilant avec des cas qui déclencheraient plusieurs conditions
• Il n'y a pas de notion d'invariant, mais là encore il faut qu'à la sortie d'une condition on se trouve dans un état comparable quelle que soit le cas de la condition qui a été traité
72
Activité de découverte
73
Simulation d'un lancer de fléchette, d'une pièce de monnaie, d'un dé…
Le lutin peut aussi réagir à :
une réponse de l'utilisateur
la valeur d'un score ou d'un chronomètre
sa position
...
Commentaires :
• Fichier cible.sb2 fourni pour l'activité
• Montrer le bloc si/alors et sa variante si/alors/sinon ainsi que le tirage aléatoire (dans les opérateurs)
• Pour la suite on peut fournir des costumes de dés et de pièces. Même si les stagiaires n'arrivent pas jusque là par manque de temps, on peut montrer le résultat, et en profiter pour mentionner qu'un lutin peut être sauvegardé et réutilisé dans un autre projet
74
Fichier Scratch n°5
Difficultés pour les élèves
75
Condition parfois complexe à exprimer
Confusions possibles entre les opérateurs « et » et « ou »
Ces deux scripts sont –ils équivalents ?
NON
Commentaires :
• Lien avec l'initiation à la logique du cours de mathématiques
• Attention au langage courant où on utilise facilement « et » pour une union de deux ensembles, qui correspond plutôt à un « ou » logique
• Pour cet exemple, on veut montrer que dans le cas de droite les deux blocs peuvent s'exécuter (si le premier modifie la condition).
• Voir le fichier si_sinon.sb2
• On peut aussi expliciter ce qui se passe à l'aide d'un algorigramme pour ceux qui maîtrisent cet outil
76
Fichier Scratch n°6
Spécificités de Scratch
77
Condition booléenne = bloc pointu
Peut porter sur des capteurs :
autre élément touché
bouton ou clavier pressé
voire de véritables capteurs (robots...)
souvent remplacée par un événement
Encore un élément de syntaxe, on voit qu'il existe des opérateurs booléens (et, ou, non)
Structures algorithmiques
78
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
Comme dit plus haut : - ce n'est pas un ingrédient
indispensable pour écrire des algorithmes
- mais ici il permet d'écrire rapidement et facilement des scripts interactifs
- il aide également à écrire des programmes composés de plusieurs scripts « parallèles »
Programmation par événement
79
Algorithme classique :
Traitement Données Résultat
Traitement Événement Réaction Traitement Événement Réaction
Traitement Événement Réaction
Mais pour réagir aux différentes sollicitations de son environnement, on est plutôt sur :
Commentaires :
• Algo classique montré = algo linéaire
• Un algorithme est d'une nature similaire à une fonction en mathématiques : il reçoit un certain nombre de données, et produit un résultat dépendant de ces données (la différence avec une fonction est qu'on s'intéresse à comment ce résultat est obtenu)
• Mais pour un programme interactif il peut se passer plusieurs choses en même temps, et les actions de l'utilisateur peuvent interrompre le déroulement « normal ». Avec un objet physique comme un robot, c'est encore plus net : l'interaction avec l'environnement est permanente et demande de réajuster son comportement à tout moment.
• La séquence linéaire d'instructions n'est donc plus le modèle à préférer.
80
Fichier Scratch n°7
Difficultés pour les élèves
81
Difficultés inhérentes au parallélisme
Synchronisation de plusieurs lutins pas évidente
Commentaires :
• Voir fichiers concurrence.sb2 et concurrence_singleframe.sb2
• Remontrer éventuellement Tracer_un_cercle.sb2
• Ce qu'il faut en retenir : • - si deux scripts s'exécutant en parallèle, leur ordre
d'exécution peut dépendre de leur nom, de l'ordre de leur création, de la façon dont a placé les scripts dans la fenêtre graphique (!), etc.
• - il faut donc considérer que cet ordre est quelconque et imprévisible, ils peuvent même s'entrelacer
• - si on tient à fixer un ordre d'exécution, il faut le forcer « à la main » par le biais de variables ou de messages (mais cela demande déjà une certaine expertise)
82
Fichier Scratch n°8
Fichier Scratch n°2
Spécificités de Scratch
83
Bloc « chapeau » : débute un script
Où l'on retrouve la conditionnelle : quelle différence
entre ces deux scripts ?
Explicitation de la « boucle événementielle »
Script de droite plus réactif
Seule façon de réagir à une collision : une condition sur une variable…
Commentaires :
• Dernière forme de bloc en Scratch, qui débute forcément un script
• Le bloc de gauche réagit au premier appui de la touche, puis après un délai commence à répéter.
• Le bloc de droite régit en permanence et sans délai, de plus il autorise l'appui simultané sur plusieurs touches
• Cf deplacement_fluide.sb2 pour illustrer les différences, on peut en profiter pour voir d'autres modes de déplacement
• Les blocs chapeau ne sont pas très génériques : il n'existe pas de « quand <condition> ». Dans certaines situations on est donc obligé de créer une telle boucle explicite (mais ce n'est pas plus mal, car cela fait prendre conscience que les événements ne sont pas magiques et cachent eux aussi une boucle infinie)
84
Fichier Scratch n°9
Messages
85
Un message est un événement : défini par le programmeur
déclenché par un script
Plus confortable et naturel pour la synchronisation des lutins que de passer par une variable partagée
Hors programme mais il n'y a pas de raison de s'en priver lorsqu'on en a besoin Si on utilise des messages multiples, comme avec les événements, il ne faut rien
supposer sur l'ordre dans lequel des messages peuvent être émis, reçus, se croiser...
Structures algorithmiques
86
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
Souvent considérée comme la notion de base en programmation impérative, où l'instruction de base est « Donner la valeur … à la variable ... »
Mais c'est une notion difficile car assez nouvelle, différente de la notion de variable des maths, et qui utilise pourtant parfois des notations similaires
En Scratch, comme il existe beaucoup d'autres instructions élémentaires (déplacer un lutin, modifier son aspect, etc.) on peut attendre de bien maîtriser le reste avant d'introduire les variables
Variables
87
Rappel : une instruction modifie l'état de la machine
elles permettent de construire le résultat
Ensemble des lutins présents
Leurs positions, leurs costumes
+ un certain nombre de valeurs mémorisées dans des variables
Une machine sans mémoire modifiable (ou à mémoire bornée) ne pourrait pas exécuter « tous » les algorithmes
Commentaires :
• Notion d'état importante : il est incorrect de dire qu'un programme « fait quelque chose », il vaut mieux dire qu'il « fait quelque chose à l'état de la machine »
• En général état = mémoire mais pas seulement numérique
• Un vrai langage de programmation doit pouvoir compter, mettre une valeur de côté pour y revenir plus tard, dupliquer une valeur, etc. ce qui ne serait pas possible sans variables
• Attention : ce n’est pas le même sens que les variables mathématiques !
88
Activité de découverte
89
Améliorer un jeu existant :
ajouter un système de score et de chronomètre à un jeu
STOP pour « lâcher » le
chat
Autre possibilité : lutin avec inertie grâce à une variable vitesse
Fichier Scratch n°10
Commentaires :
•Partir de chat_souris.sb2 (pour arriver à quelque chose comme score_chrono.sb2)
•On peut aussi montrer deplacement_inertie.sb2 qui n'est pas réalisable sans une variable vitesse.
90
Difficultés pour les élèves
91
Variable en informatique ≠ variable en mathématiques var
42
Notion nouvelle : évolution d'une variable dans le temps
Exécution pas à pas : pas prévu dans Scratch 2 mais simulable avec des points d'arrêt
Matérialiser les variables : boîte pourvue
d'un nom et contenant une valeur
Commentaires :
• Quelques conseils : • - toujours nommer explicitement ses variables
(facilite le débogage ET aide à faire la différence avec le x des maths)
• - montrer sur des exemples qu'une même variable change de valeur au cours d'une exécution (cf fichiers affiche_variable.sb2 ou pasApas.sb2) mais que sa valeur à un instant donné est bien définie
• (le délai d'attente dans ce dernier fichier s'explique par le fait qu'un clic de souris n'est jamais vraiment instantané. Si on veut vraiment détecter « le » clic, il faut une variable en plus comme dans front_click.sb2)
92
Fichier Scratch n°11
Spécificités de Scratch
93
Variables : privées à un lutin ou partagées
Attention aux problèmes de parallélisme avec les variables
partagées
4 « types » possibles :
nombre
texte
booléen (true ou false) mais peu utilisable
liste (hétérogène)
Chacune peut être cachée ou affichée à volonté
Commentaires :
• Encourager à « privatiser » les variables tant que possible (code plus clair, facilité de réutilisation des lutins)
• Ne pas hésiter à afficher des variables pour tester un programme
• La notion de type est ici très souple, il existe des langages de programmation où elle est plus contraignante (ce qui permet d'éviter des erreurs)
• Cf des scripts comme ceux de concurrence.sb2 : deux scripts parallèles modifiant une même variable s'exécuteront dans un ordre imprévisible.
94
Fichier Scratch n°8
Structures algorithmiques
95
Séquence
Boucle
Condition
Événement
Variable
Boucle conditionnelle
On pourrait se restreindre à cette seule boucle pour tous les programmes, mais on utilise les boucles simples par commodité et on vient à la boucle conditionnelle seulement lorsqu'on en a besoin
Boucle conditionnelle
96
Généralisation de la boucle simple
À privilégier lorsqu'on ne sait pas à l'avance combien d'itérations seront nécessaires
Mais pour un script interactif une boucle infinie est parfois souhaitable
Problème potentiel : boucle infinie (c'est ce qui fait qu'un algorithme ne peut pas « tout » calculer !)
Une boucle risque de « tourner en rond » si le corps de la boucle ne modifie pas la
condition à chaque itération (et même dans des cas plus difficiles à détecter, en règle générale c'est impossible à prouver automatiquement).
Activité de découverte
97
Marche aléatoire
Prolongements : durée de la marche, max atteint...
Cette boucle se finit-elle à coup sûr ?
On fournit le seul fond rocher.png Le fichier marche_aleatoire.sb2
est le résultat souhaité.
Fichier Scratch n°12
Difficultés pour les élèves
98
Écrire une condition booléenne
(éventuellement composée)
Condition d'arrêt ou de continuation ?
Pourquoi deux boucles et laquelle choisir ?
Comme pour la répétition simple : Produire un état en fin de boucle suffisamment similaire à celui en début de boucle
Commentaires :
• On réserve donc l'apprentissage de cette boucle pour quand les élèves maîtrisent déjà l'écriture de si/alors/sinon.
• Selon les situations, il peut être plus facile d'écrire la condition pour relancer la boucle ou la condition pour l'arrêter ; un usage adéquat du « non » booléen peut rendre un programme plus clair
• Le critère de choix est assez simple (sait-on à l'avance le nombre de répétitions à faire ?) mais par exemple lorsque ce nombre de répétitions est une variable, la notion de « à l'avance » peut être mal comprise
• On retrouve enfin la notion d'invariant : une boucle doit déjà préparer la prochaine itération pour que celle-ci se passe dans les bonnes conditions
99
Spécificités de Scratch
100
Bloc de répétition aimanté à l'intérieur et à l'extérieur
Différence avec les autres langages :
ici « jusqu'à » = condition d'arrêt
alors qu’ailleurs…
« tant que » = condition de continuation
La différence d'écriture de cette condition ne devrait pas poser de problème au début de l'apprentissage, mais il faut s'attendre à des incompréhensions lorsque les élèves devront passer à un autre langage (au lycée par exemple)
Mener une activité pédagogique d’algorithmique
•Phase1 : conception
•Phase2 : tenue
•Phase3 :évaluation
Diaporama 3
Production du groupe IREM de Grenoble
101
Phase1 : conception
102
Phase2 : tenue
103
Phase2 : tenue
104
Phase2 : tenue
105
Phase2 : tenue
106
Phase3 : évaluation
107
Phase3 :évaluation
108
Phase3 :évaluation
109
Capacités Phase3 :évaluation
110