Problème ouvert au Lycée : utilisation des outils numériques dans la recherche d un contre-exemple SOMMAIRE



Documents pareils
ACTIVITÉ DE PROGRAMMATION

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours 1 : Qu est-ce que la programmation?

TP, première séquence d exercices.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TD3: tableaux avancées, première classe et chaînes

Synthèse «Le Plus Grand Produit»

LA BATTERIE DU PORTABLE

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Langage Java. Classe de première SI

Tp 1 correction. Structures de données (IF2)

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Programme Compte bancaire (code)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Par combien de zéros se termine N!?

Corrigé des exercices sur les références

Plan du cours. Historique du langage Nouveautés de Java 7

Chapitre 10. Les interfaces Comparable et Comparator 1

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle CISII,

Recherche dans un tableau

Programmation C++ (débutant)/instructions for, while et do...while

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Représentation d un entier en base b

Cours 1 : La compilation

STAGE IREM 0- Premiers pas en Python

Cours d initiation à la programmation en C++ Johann Cuenin

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP 1. Prise en main du langage Python

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Solutions du chapitre 4

V- Manipulations de nombres en binaire

TD/TP PAC - Programmation n 3

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Utilisation d objets : String et ArrayList

1 Recherche en table par balayage

Flux de données Lecture/Ecriture Fichiers

Licence Sciences et Technologies Examen janvier 2010

Les arbres binaires de recherche

b) Fiche élève - Qu est-ce qu une narration de recherche 2?

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours d Algorithmique et de Langage C v 3.0

Premiers Pas en Programmation Objet : les Classes et les Objets

Exercices sur les interfaces


Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Chapitre VI- La validation de la composition.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en Java IUT GEII (MC-II1) 1

Algorithmique et Programmation, IMA

L informatique en BCPST

I. Introduction aux fonctions : les fonctions standards

Projets Tutorés RT1 - Sujets octobre 2013 décembre 2013 responsable : M.Munier

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Logiciel SCRATCH FICHE 02

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Package Java.util Classe générique

as Architecture des Systèmes d Information

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Java DataBaseConnectivity

I00 Éléments d architecture

Quelques algorithmes simples dont l analyse n est pas si simple

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Programmation C. Apprendre à développer des programmes simples dans le langage C

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

BACCALAURÉAT PROFESSIONNEL ÉPREUVE DE MATHEMATIQUES. EXEMPLE DE SUJET n 2

Bases de programmation. Cours 5. Structurer les données

Corrigés des premiers exercices sur les classes

Baccalauréat technologique

Conception des systèmes répartis

Conventions d écriture et outils de mise au point

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmer en JAVA. par Tama

Mise en œuvre des serveurs d application

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Programmation Web. Madalina Croitoru IUT Montpellier

Examen Médian - 1 heure 30

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Le langage SQL Rappels

Auto-évaluation Programmation en Java

Rappels sur les suites - Algorithme

REDIGER UN COMPTE RENDU DE TYPE JOURNALISTIQUE

Définitions. Numéro à préciser. (Durée : )

Types de REA produites dans le cadre de la séquence pédagogique

Gestion distribuée (par sockets) de banque en Java

RÉSUMÉ DES NORMES ET MODALITÉS D ÉVALUATION AU SECONDAIRE

Initiation à la programmation en Python

Compétences en fin de maternelle Comparer des quantités.

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Transcription:

Problème ouvert au Lycée : utilisation des outils numériques dans la recherche d un contre-exemple SOMMAIRE 1. Tableau récapitulatif... 2 2. Enoncé (inspiré d'un article du monde "A quoi ça sert")... 2 3. Objectifs et analyse a priori... 2 4. Scénario de mise en œuvre... 5 5. Evaluation... 6 6. Apport des outils numériques... 6 7. Annexes... 8

1. Tableau récapitulatif Enoncé Niveau concerné Période de l année Durée et organisation Logiciels utilisés/ matériels Pré requis Objectifs généraux On part d un nombre entier, on multiplie ses chiffres, on obtient un nouveau nombre entier. On recommence avec les nombres obtenus. Terminal S(Isn) ou Bts informatique Milieu d année après une période d initiation à la programmation. 4 heures avec des ordinateurs équipés d un langage de programmation. Python ou Java, ordinateurs. Smartphone Android avec Curriculum pour assurer le suivi Maîtrise de la programmation et de l algorithmique. Boucle, traitement sur les chaînes de caractères... Conjecturer. Ecrire des algorithmes pour résoudre des problèmes mathématiques. Utiliser l ordinateur pour trouver des contre-exemples. 2. Enoncé (inspiré d'un article du monde "A quoi ça sert") Choisissez un nombre entier, par exemple 741. Multipliez tous les chiffres qui le constituent : 7 4 1 = 28. Recommencez en partant du nombre obtenu, 28 dans cet exemple. Vous obtenez 2 8 = 16. Recommencez! Vous obtenez 1 6 = 6, et l histoire se termine, puisque 6 n a qu un chiffre. En trois coups, on arrive à un nombre à un chiffre. L histoire se termine-t-elle toujours? N.B. : Le professeur s est fait filmer par ses élèves munis de leur smartphone dans le but de réutiliser cette vidéo pour la présentation d un devoir à la maison pour une autre classe. Le montage a été fait par les élèves. Ceci est un gain de temps pour le professeur, et permet de développer des compétences dans l usage du numérique chez les élèves. 3. Objectifs et analyse a priori Dans un premier temps, les manipulations se feront à la main. Les calculs étant pénibles, on va vite les confier à la machine pour aider à l investigation. Avant de confier la tâche à un ordinateur, il va falloir se l'approprier. Les élèves devront tester des nombres à la main et aboutir à un algorithme en langage naturel dans un premier temps comme par exemple : «On parcourt les chiffres du nombre et on les multiplie, tant que le nombre obtenu a plus d'un chiffre, on recommence en comptant le nombre d'étapes.» On écrira ensuite un pseudo code avec ou sans fonction selon le niveau des élèves et il faudra aboutir à un programme. L enseignant selon les besoins des élèves pourra faire des apports théoriques pour aider les élèves dans leur réalisation (obtenir les chiffres d'un nombre, transformer des nombres en chaînes, extraire des caractères, réaliser des boucles ) On terminera par l exécution du programme, qui prendra quand même quelques minutes malgré la puissance des ordinateurs.

Voici un exemple de résultats que peut apporter un ordinateur. Nombre d'étapes : 1 pour le nombre 10 Nombre d'étapes : 2 pour le nombre 25 Nombre d'étapes : 3 pour le nombre 39 Nombre d'étapes : 4 pour le nombre 77 Nombre d'étapes : 5 pour le nombre 679 Nombre d'étapes : 6 pour le nombre 6788 Nombre d'étapes : 7 pour le nombre 68889 Nombre d'étapes : 8 pour le nombre 2677889... Texte de référence : bulletin officiel n 27 du 4 juillet 2013 Les principales capacités et compétences pour être capable de résoudre le problème 1. Chercher Face à un problème, il convient d'abord de se poser plusieurs questions : Quelles sont les données? Que cherche-t-on? Quelle stratégie peut-on espérer mettre en œuvre pour aborder la résolution du problème? Sur des exemples, tester, formuler des hypothèses. 2. Modéliser Extraire, organiser et traiter l information utile. Choisir des variables adaptées. 3. Raisonner, argumenter Observer, s engager dans une démarche. Emettre des conjectures. 4. Calculer, illustrer, mettre en œuvre une stratégie Valider, corriger une démarche, ou en adopter une nouvelle. 5. Communiquer

Les élèves seront interrogés pendant l année et évalués avec la grille suivante :

Le suivi sera assuré avec l application curriculum 1 sous forme de SMS. 4. Scénario de mise en œuvre Ce qui a été fait avant Initiation à la programmation et l'algorithmique. Connaissance mise en œuvre en amont : - Type de données. Transtypage. Tableaux. Entiers et réels. Chaînes de caractères. - Fonctions et procédures en informatique. - Programmation. Déroulement de la séquence On présente quelques exemples aux élèves en insistant sur le nombre d étapes permettant d obtenir un nombre à un seul chiffre. Les élèves doivent proposer des conjectures Par exemple, y-a-t-il un nombre maximum d'étapes? Il va falloir modéliser le problème pour le transformer en un programme exécutable par un ordinateur. Le programme va être découpé en petites tâches que chacun des groupes devra réaliser sous forme de fonction, comme par exemple : - Extraire un chiffre d un nombre entier pour une position donnée - Décomposer un nombre en chiffres - Stocker les chiffres obtenus dans un tableau - Multiplier des chiffres donnés sous forme d un tableau 1 L application Curriculum est une application Android disponible sur le PlayStore (https://play.google.com/store/apps/details?id=com.curriculum&hl=fr). Elle a été développée par M. LAVAL Boris et permet d évaluer par compétences à l aide d un smartphone.

- Compter le nombre d étapes en utilisant une boucle - Parcourir les entiers et pour chaque entier compter le nombre d'étapes. Pour chaque tâche, il faut préciser la nature de la brique (fonction ou procédure). Il faut aussi définir les variables en jeux, leur type. Il s agit de créer un travail collaboratif. Les étapes précédentes sont données à titre indicatif. Les élèves vont devoir les proposer et construire collectivement un outil pour répondre à leurs questions. Phases Rôle du professeur Rôle de l élève Recherche individuelle : 5 mn Présenter quelques exemples Conjecturer, chercher des exemples d'abord à la main. Débat Animateur Proposer des conjectures. L histoire se termine-t-elle toujours? Si oui, y-a-t-il un nombre maximum d étapes? Travail collectif Travail de groupe Synthèse Mettre en place les briques permettant de réaliser le programme en utilisant les propositions des élèves Guider et accompagner les groupes. Modifier les briques incorrectes et assembler le programme final pour une exécution en classe. Prolongement possible Travailler sur le problème de Syracuse (Conjecture de Collatz). Décrire la démarche permettant de programmer Proposer des briques Construire les fonctions sous forme d algorithme. Ecrire les programmes associés. Exécuter le programme et invalider les conjectures proposées. 5. Evaluation Le travail collectif fût fructueux. Les différents groupes ont fabriqué chacun leur partie sous forme de sous-programmes. C est seulement à la fin que les sous-programmes ont été assemblés sous la forme d un programme. Un élève seul n aurait pas pu mener à bien ce projet, le fait de diviser le problème en sous-problèmes a permis de favoriser une démarche collaborative. Il a fallu parfois renégocier le cahier des charges, par exemple la taille du tableau associée au chiffre. Il y a eu un bug majeur, une simple petite erreur (un «<» au lieu d un ). Le programme ne fonctionnait pas. Il a fallu élaborer une batterie de tests pour trouver le bug. Ce fût l occasion pour les élèves de s approprier le travail des autres. Le programme nous a permis de trouver un nombre en 8 étapes. Les élèves ont alors affirmé qu il ne devait pas exister de nombre maximum d étapes. La conjecture reste ouverte. On a fait des mathématiques autrement. 6. Apport des outils numériques Le numérique intervient sous 3 formes : - résoudre des problèmes mathématiques avec des algorithmes - assurer le suivi des élèves en mode connecté - imposer un travail collaboratif.

Exemple du suivi de l évaluation d un travail fourni par un groupe. Un suivi envoyé par texto avec l application curriculum Programme Java proposé package etape; import java.util.scanner; public class Etape { static void etape(int a){ int i =0; while (a>9){ //Module de conversion i=i+1; System.out.println(a); public static void main(string[] args) { // TODO code application logic here int nb; Scanner saisie= new Scanner(System.in); System.out.println("Saisir le nombre nb :"); nb=saisie.nextint(); etape(nb); Algorithme proposé par un groupe Fonction etape(nb :entier) -> entier DébutFonction Tant que«nb»> 9 decomp(nb) mult(nb) i i+1 Fin Tantque Retourner i FinFonction Commentaire : Il y a non cohérence entre le java et l algorithme fourni par les élèves. L algorithme utilise une fonction alors que le programme java utilise une procédure. Sinon, il s agit d un très bon travail.

7. Annexes Résumé du déroulement des séances et de la solution finale fabriquée par la classe Les questions des élèves après la présentation du problème : - Combien de variables? - Comment décomposer les chiffres? - Comment on obtient un chiffre? - Arrive-t-on toujours à un chiffre? - Quelle est le nombre maximum d'étapes? La question retenue. Les briques sous forme de fonction à traiter en groupe. Un cahier des charges pour un travail en parallèle par les 4 groupes a été créé permettant aux élèves de répondre à la question. Brique 1 : Décomposer un nombre en chiffre Fonction Decomp(n : nombre entier)-->tableau d'entier de taille 100 Brique 2 : Multiplier les chiffres Fonction Mult(Chiffres : Tableau d'entier de taille 100)-->entier Brique 3 : Boucle qui compte le nombre d'étape Fonction Etapes(n : nombre entier)-->entier Brique 4 : Boucle qui teste tout les entiers et affiche nombre d 'étapes trouvées et nombre associé : Le programme principale

Les algorithmes élaborés par les différents groupes Brique 1 : Décomposer un nombre en chiffre Fonction decomp(entrée n : entier)-> tableau d'entier de taille 100 VARIABLES LOCALES: i, j : entiers reste : entier tab : tableau d'entier [0..99] Debut Fonction i 0 TantQue n >= 10^i faire i i+1 Fin TantQue J 0 Pour j allant de i-1 à 0 faire tab[j] n/10^j reste n%10^j n reste Fin Pour Pour j allant de i à 99 faire tab[j] <- -1 Fin Pour Retourner tab Fin Fonction Brique 2 : Multiplier les chiffres Fonction mult(chiffres : Tableau d entier de taille 100) -> entier VARIABLES LOCALES: res, i : Entiers DEBUT i 0 Res 1 Tant que (tableau[i]!= 0) Faire res tableau[i]*res i i+1 Fin tant que Retourne res. Fin Fonction

Brique 3 : compter le nombre d'étapes Fonction etape(nb :entier) -> entier VARIABLES LOCALES: i : entier DébutFonction i 0 Tant que nb > 9 faire decomp(nb) mult(nb) I i+1 Fin Tantque Retourner i FinFonction Brique 4 : Boucle qui teste tous les entiers et affiche le nombre d'étapes trouvé Programme principale qui utilise une boucle infinie Variables : nb, max : entiers Début Fin nb <- 0 max <- 0 Tant que vrai Si max < etape(nb) Alors max <- etape(nb) Afficher "Nombre d'étapes max: ",max," pour le nombre ",nb Fin Si nb=nb+1 Fin Tant Que

Le programme en java public class ProgJava { static int Multi(int tab[]){ int i =0; int res=1; while(tab[i]!=-1){ res = tab[i]*res; i++; return res; static int[] decomp(int n){ int[] tab=new int[100]; int i=0,j=0; int reste; while(n >= Math.pow(10,i)){ i=i+1; for(j=i-1;j>=0;j--){ tab[j]=n/(int)math.pow(10, j); reste=n%(int)math.pow(10, j); n=reste; for(j=i;j<=99;j++){ tab[j]=-1; return tab; static int etape(int a){ int i =0; while (a>9){ a=multi(decomp(a)); i=i+1; return i; public static void main(string[] args) { //Variable int nb, max; //Debut nb=10; max=0; while (true){ if (max<etape(nb)){ System.out.println("Nombre d'étapes max: "+etape(nb)+ "Pour "+nb); max=etape(nb); nb=nb+1;