top of page

Stage

Madrid

Novembre 2017

Les 15 et 16 novembre 2017 a eu lieu à Madrid le stage

Algorithmique et programmation en cycle 4 et en seconde

Vous trouverez ci-dessous les divers documents présentés durant ces deux jours.

Cliquer sur les titres soulignés pour les ouvrir.

Attention, ce stage a eu lieu avant la sortie des nouveaux programmes. Il pourra y avoir quelques ajustements à faire.

Présentation générale

Document 1 : Diaporama fil rouge tout au long du stage

1 - Les nouvelles directives officielles pour le lycée : résumé des phrases clés, des objectifs, des compétences déclinées dans l'aménagement des programmes de Seconde et dans le document d'accompagnement consacré à l'algorithmique en Seconde.

Listes de quelques bonnes habitudes à prendre et à donner aux élèves pour la programmation : utilisation de commentaires, présentation pour un code facile à lire, organisation logique et rationnelle, vérifications et contrôles, 

2 - Les langages : résumé des caractéristiques des langages par blocs (ScratchSnap! et Blockly), présentation détaillée de Python (usage en ligne ou sur EduPython, langage non typé, règles pour les types et noms de variables, pour les instructions conditionnelles et boucles, pour l'importation des bibliothèques ) et présentation rapide de Swift

3 - Compétences algorithmiques : grandes compétences et capacités.

4 - Rencontres algorithmique et mathématiques : distinctions entre variables mathématiques et variables en programmation, distinctions entre les significations du = en mathématiques et en programmation, présentation des fonctions mathématiques et des fonctions en programmation (et comment définir une fonction sous Snap!).

5 - Exemple de progression : voir détail ci-dessous.

6 - Enseignement d'exploration Informatique et Création Numérique : Rappel de recommandations officielles. 

Document 2 : Document d'accompagnement Algorithmique et programmation au lycée (juin 2017)

Document 3 : Directives pour l'écriture des algorithmes en pseudo-code au Baccalauréat 2018 (octobre 2017)

Exemple de progression

  • Les documents présentés ci-dessous ont été utilisés pour initier ou consolider les connaissances sur Python au cours du stage.
    Ils peuvent être éventuellement utilisés, tout ou en partie, pour former les élèves de Seconde.
     

  • Nous avons travaillé sur la plate-forme Edupython (téléchargeable ICI), qui présente les avantages de regrouper toutes les fenêtres en une, de pouvoir travailler sur plusieurs programmes en même temps et de proposer une bibliothèque lycee qui contient toutes les bibliothèques utiles (mais il peut paraître intéressant d'initier les élèves à la notion de bibliothèque et de les obliger à importer la ou les bibliothèques nécessaires).
     

  • Le principe est le même pour toutes les fiches (Document 4 à Document 17) : le lecteur (élève ou enseignant s'initiant) est invité à tester des instructions et, en observant ce qu'elles affichent, à remplir un aide-mémoire.
    Les aide-mémoire successifs sont corrigés dans le Document 19 en bas de page.
     

  • Pour les trois premières fiches, il a été fait le choix de ne travailler que sur la console, avec des instructions uniques. Mais on peut très bien travailler directement dans la fenêtre de saisie des programmes.
     

  • De nombreux exercices sont proposés pour mettre en pratique les instructions découvertes. Les corrections se trouvent toutes regroupées sur le padlet Corrections et ressources.

Document 4 : 1. Découverte du langage Python - 1.1. Calculs

Découverte des instructions de calcul et des bibliothèques math et random.

La fonction int() permet de changer le type. Par exemple, int("2") transforme la chaîne de caractère "2" en l'entier 2. Dans cette partie calculatoire, elle donne aussi la troncature d'un nombre. On pourra ne pas la présenter et se contenter des fonctions floor(), ceil() et round().

On remarque que Python ne respecte pas la convention des arrondis : elle arrondit 8,5 à 8 et 9,5 à 10. On pourra alors évoquer la manière de coder des entiers et des décimaux.

Document 5 : Extrait d'un cours d'ISN sur le codage des nombres

Document 6 : 1. Découverte du langage Python - 1.2. Variables, entrées et sorties

Même principe, toujours sur console.

Si Python ne demande pas le typage des variables, on découvre ici l'importance des types dans les opérations acceptées ou refusées ( print(2+"1") , print(2+1) , print("2"+"1") ) et avec les fonctions de saisie input() et eval(input()) .  

L'aide-mémoire propose une comparaison du pseudo-code, de Python, de Scratch, de la calculatrice TI 83 Premium et de Xcas.

Document 7 : 1. Découverte du langage Python - 1.3. Tests, instructions conditionnelles et boucles Pour...

Même principe, toujours sur console.

Corrections des exercices sur le padlet Corrections et ressources

 

Document 8 : 2 - Premiers programmes - 2.1. Affichages successifs

Si on n'a travaillé jusqu'ici que sur console, on remarque qu'on ne peut y déclencher plusieurs instructions simultanément en une seule exécution. Il est alors nécessaire, par exemples pour faire plusieurs affichages, de grouper plusieurs instructions dans la partie Saisie des instructions et donc de créer un programme.

Document 9 : 2 - Premiers programmes - 2.2. Traductions

Six scripts Scratch sont proposés.

Il s'agit de dire ce qu'ils font, puis de les traduire en pseudo-code et en Python.

Ils permettent de revoir les instructions découvertes dans les documents précédents.

L'exemple 4 demande à l'utilisateur de trouver par tâtonnement le nombre 357.

Il repose la question à l'utilisateur  " jusqu'à n = 357 ".

Pour montrer la traduction de ce test sous Python, on peut utiliser Blockly : en effet, le site propose une traduction instantanée en Python. Ce qui permet de voir que " jusqu'à n = 357 " est traduit par " while not n==357 ".

La traduction peut être assez naturelle si on compare " jusqu'à ce que l'utilisateur ait trouvé " et " tant que l'utilisateur n'a pas trouvé ". Ainsi est mis en évidence le passage au Tant que... et à la condition contraire.

L'exemple suivant utilise  " jusqu'à n>10^9 " , traduit sur Blockly par while not n>10**9 " et donc par while n<=10**9 ".

Document 10 : Corrigé

Document 11 : 3. Programmes utilitaires en Seconde

En parcourant le programme de Seconde, on peut répertorier les programmes qui pourraient être de vrais outils utilitaires (professionnels ?) pour l'élève (voire être autorisés lors d'une évaluation ciblée sur l'utilisation de certains d'entre eux).

Le document propose une liste non exhaustive de ces outils, avec quelques commentaires et les programmes.

Document 12 : 4 - Tracés géométriques

Les élèves auront beaucoup fréquenté les tracés géométriques au Cycle 4 avec Scratch.

La bibliothèque turtle contient de nombreuses fonctions dédiées. Mais on évitera de lasser les élèves avec des situations déjà rencontrées et on proposera des situations adaptées au niveau Seconde.

L'utilisation de couleurs est l'occasion de découvrir le codage RVB et la synthèse additive des couleurs.

En annexe, extrait d'un cours d'ISN sur les synthèses additive et soustractive.

Corrections des tracés des figures 1 à 19 sur le padlet Corrections et ressources

Document 13 : 5 - Sous-programmes - 5.1. Les fonctions

Un des documents essentiels de ces deux jours.

La notion de fonction est une des grandes parties du programme de Seconde. Or, les fonctions informatiques, caractérisées par la présence d'une instruction return,  se présentent avec une grande similitude. Les utiliser pour programmer offrira un nouvel environnement et renforcera les images mentales qui aident à maîtriser la notion.

À travers quelques exercices, on abordera :

- deux exemples de fonctions définies par morceaux,

- un exemple en probabilités (simulation de tirage de couleur) avec une fonction sans paramètre,

- quelques exemples de fonctions avec deux paramètres ou plus

On se gardera par contre de préciser aux élèves qu'une fonction informatique peut retourner plusieurs valeurs. Il est possible qu'ils le découvrent tous seuls si, par exemple, il utilisent une virgule au lieu d'un point pour notre un nombre décimal.

Corrections sur le padlet Corrections et ressources

Document 14 : 5 - Sous-programmes - 5.2. Les procédures

Les fonctions sous-traitent les calculs d'images et se déclarent indépendamment du programme principal : elles contribuent à penser en terme de partage d'un problème en sous-problèmes.

Mais elles ne sont pas les seules à sous-traiter. Les élèves de Cycle 4 ont d'ailleurs été sensibilisés à la notion de bloc sur Scratch, ils ont même été vraisemblablement interrogés dessus lors de l'épreuve du Brevet des Collèges... L'équivalent sous Python seront les procédures.

Mais leurs actions sont bien distinctes de celles des fonctions : elles ne retournent pas de valeur, elles exécutent une série d'instructions à la place du programme principal. Pour comprendre cette différence, on pourra traiter les quatre petits exemples de la page 61 du Document 1.

Comme les fonctions, elles peuvent dépendre d'un ou plusieurs paramètres.

Corrections sur le padlet Corrections et ressources

Document 15 : 6 - Les graphiques

Il n'est pas question de vouloir supplanter GeoGebra... Les graphiques obtenus avec Python n'en ont ni l'élégance ni l'interactivité.

Mais, toujours dans l'optique de construire des images mentales autour de la notion de fonction, il est souhaitable que les élèves aient au moins une fois tracé une fonction point par point. 

Dans la deuxième partie du document, le manque de précision de ce type de tracé permet de s'interroger sur l'annulation d'une fonction. Une digression sur des algorithmes de recherche de nombre caché est l'occasion d'introduire le principe de dichotomie. On l'applique ensuite à la recherche de l'annulation de la fonction. L'algorithme proposé ajoute à celui Document 11 la possibilité de trouver la solution décimale éventuelle.

Plusieurs bibliothèques sont dédiées aux graphiques mathématiques. Le module pylab a été choisi ici pour la simplicité de sa syntaxe (pas de classes).

Corrections sur le padlet Corrections et ressources

Document 16 : 7 - Prolongements - 7.1. Les listes

Tant en géométrie avec les coordonnées de points qu'en statistique avec les séries de valeurs, les variables listes s'avèrent pertinentesOn sélectionnera parmi les nombreuses fonctions dédiées celles qui répondent aux besoins.

Quelques exercices (corrections sur le padlet Corrections et ressources).

Signalons la puissante fonction .sort() qui trie. Si on décide de l'ignorer, on peut, dans le cadre d'un prolongement, présenter des algorithmes de tri.

En annexe, extrait d'un cours d'ISN sur deux classiques, l'algorithme de tri par minimum, et le tri à bulles.

Lien vers une des danses folkloriques consacrées au bubble sort

Document 17 : 7 - Prolongements - 7.2. Gestion de textes

Python offre la possibilité de gérer des fichiers de textes bruts (au format  .txt ) obtenus avec le bloc-notes ou l'excellent Notepad++.

La lecture virtuelle permet d'analyser le contenu d'un texte, par exemple en comptant le nombre de lettres.

L'écriture virtuelle génère un fichier au format  .txt  qui peut contenir des chaînes de caractères créées par exemple par des boucles. 

Quelques exercices (corrections sur le padlet Corrections et ressources)

Les exercices nécessitent de télécharger les fichiers texte1.txt, texte2.txt, texte3.txt et texte4.txt dans le dossier qui contient l'exécutable de EduPython.

Fichiers  .txt  sur le padlet Corrections et ressources

Un prolongement propose une initiation aux codes ASCII des caractères et une application à l'analyse fréquentielle. Il s'agit de trouver les fréquences des lettres de l'alphabet dans trois textes en français, en anglais et en allemand et d'en déduire un critère qui permet de deviner (sans l'ouvrir) un texte écrit dans l'une des trois langues.

Fichiers  .txt  sur le padlet Corrections et ressources

Document 18 : 7 - Prolongements - 7.3. Interface graphique Tkinter

Porte d'entrée vers la création de jeux, Tkinter permet de créer des fenêtres contenant des objets avec lesquels l'utilisateur peut interagir (bouton cliquable, case à cocher, ...) et des figures qu'il peut animer (par clic de souris ou appui de touche du clavier).

On aborde ainsi les déclenchements indirects, si bien gérés par Scratch.

Les déclenchements en parallèles nécessiteront par contre de s'initier aux complexes threads

Document 19 : Aide-mémoire

Tous les tableaux aide-mémoire rencontrés dans les documents sont regroupés et corrigés.

bottom of page