Formation Algorithmique 2015-2016 Académie de Grenoble · 2015-2016 Académie de Grenoble En...

Preview:

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 dès 2017

29

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é

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

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