Solutions en quête de problèmes

Trouver ce que font ces algorithmes
vendredi 17 juillet 2009
par  Alain BUSSER

Il va de soi que donner ce genre d’exercices en Seconde, au moins en devoir maison, est totalement dans l’esprit du programme de Seconde (en tout cas, la partie du programme qui parle de programmes...).

Les exemples ci-dessous sont écrits dans le langage JavaScript francisé de cet excellent outil, sur lequel on peut les tester. Ils servent surtout à montrer l’importance des commentaires dans un programme...


Quelles sont les propriétés des trois nombres ?

Donc, que fait ce programme ? Il calcule des nombres mais lesquels ?

var triplets=new tableau("a","b","c");
for (p=1;p<=20;p++){
  for (q=1;q<p;q++){
    a=p*p-q*q;
    b=2*p*q;
    c=p*p+q*q
    triplets.ajouter(a,b,c);
  }
}

Que représente le deuxième nombre ?

Ce programme remplit un tableau ; la première colonne représente des sommes de monnaie inférieures à 1 €. Mais que représentent les nombres entiers de la deuxième colonne ?

var boulanger=new tableau("Sommes","Nombres");
var somme=new Array();
somme.ElementN=100;
somme[0]=1;
for(n=1;n<100;n++){
if(n<=1){somme[n]=somme[n-1];}
  else{
  if(n<=2){somme[n]=somme[n-1]+somme[n-2];}
    else{
    if(n<=4){somme[n]=somme[n-1]+somme[n-2]-somme[n-3];}
      else{
      if(n<=5){somme[n]=somme[n-1]+somme[n-2]-somme[n-3]+somme[n-5];}
        else{
        if(n<=6){somme[n]=somme[n-1]+somme[n-2]-somme[n-3]+somme[n-5]-somme[n-6];}
          else{
          if(n<=7){somme[n]=somme[n-1]+somme[n-2]-somme[n-3]+somme[n-5]-somme[n-6]-somme[n-7];}
            else{
              somme[n]=somme[n-1]+somme[n-2]-somme[n-3]+somme[n-5]-somme[n-6]-somme[n-7]+somme[n-8];
            }
          }
        }
      }
    }
  }
  boulanger.ajouter(n/100,somme[n]);
}

Quel est ce nombre ?

Ce programme calcule 8400 décimales d’un nombre mystérieux. Quel est ce nombre ?

var retenue=0;
tableau=new Array(8401);
for (i=0;i<=8400;i++) {tableau[i]=2000;}
for (j=600;j>0;j--) {
  resultat=0;
  for (i=j*14;i>0;i--) {
    tmp = (resultat*i + tableau[i]*10000);
    resultat=tmp/(2*i-1);
    tableau[i]=tmp%(2*i-1);
  }
  afficher(retenue+resultat/10000);
  retenue=resultat%10000;
}

Mais pourquoi ?

La question n’est pas tant « qu’est-ce qu’il calcule » puisque le résultat est plutôt nul mais « pourquoi trouve-t-on ceci » :

a=demander("Entrer un premier nombre :");
b=demander("Entrer un deuxième nombre :");
var som=a+b;
var diff=a-b;
var prod=som*diff;
var asquare=a*a;
var bsquare=b*b;
var diffcar=asquare-bsquare;
afficher("On trouve ",prod-diffcar);

Quel est cet outil ?

Ce programme calcule un très vieil outil mais lequel ?

var brahmagupta=new tableau("Je calcule","mais quoi?");
var s=225/3438;
var c=2*Math.sqrt(1-s*s);
var a=0;
var b=s;
brahmagupta.ajouter(0+"°",a.toFixed(4));
brahmagupta.ajouter(3.75+"°",b.toFixed(4));
for(i=7.5;i<=90;i+=3.75){
  var t=c*b-a;
  brahmagupta.ajouter(i+"°",t.toFixed(4));
  a=b;
  b=t;
}

Mais qu’est-ce qu’il fait ?

Ce programme calcule deux nombres entiers ; que représentent-ils ?

var y=demander("En quelle année ?");
var c=Math.floor(y/100);
var n=y%19;
var k=Math.floor((c-17)/25);
var i =c-Math.floor(c/4)-Math.floor((c-k)/3)+19*n+15;
i=i%30;
i=i-Math.floor(i/28)*(1-Math.floor(i/28)*Math.floor(29/(i+1))*Math.floor((21-n)/11));
var j=y+Math.floor(y/4)+i+2-c+Math.floor(c/4);
j=j%7;
var l=i-j;
var m=3+Math.floor((l+40)/44);
var d=l+28-31*Math.floor(m/4);
afficher("C'est le",d,"/",m);

Commentaires

Logo de Alain Busser
mardi 11 août 2009 à 15h32 - par  Alain Busser

Un exemple d’exercice de niveau Seconde se trouve sur la page 2 du tutoriel d’Algobox : http://www.xm1math.net/algobox/tuto...
Un autre est sur le comparatif d’Emmanuel Ostenne : http://emmanuel.ostenne.free.fr/mep...

Ce sujets se prêtent bien à des TP ou DM (l’élève peut expérimenter et regarder ce que ça donne), mais aussi à des DS (l’élève doit alors « se mettre dans la peau de l’ordinateur »).
Un échange de tels exemples entre enseignants bénéficierait à tous (sujets zéro ?)

Concernant Algobox, il est libre, multiplateforme et en français. Et on programme non pas en écrivant des instructions au clavier, mais en choisissant des instructions dans un menu piloté par la souris. Seulement il faut déclarer les variables avant de pouvoir les utiliser (comme en Pascal ou en Scratch entre autres) ce qui peut être ressenti comme un inconvénient pour certains. Pour moi c’est plutôt un avantage : Essayer après avoir entré « x=3 » en Python, de calculer l’inverse de x puis d’expliquer aux élèves pourquoi on trouve 0...

vendredi 31 juillet 2009 à 03h34

Ces exemples sont 10 fois trop compliqués pour des élèves de seconde qui n’ont jamais fait de programmation de leur vie. Quel pourcentage d’élèves (et de profs) sont capables de répondre correctement ?

Pour info, voilà ce que disent les IPR de Lille à propos de l’algorithmique en seconde (lien) :

Comme certains d’entre vous le soulignent, il faut rester très modeste sur l’algorithmique. Les algorithmes sont étudiés/réalisés uniquement dans le cadre de la résolution des problèmes mathématiques abordés avec les élèves.
Les contenus du programme de seconde sont valables pour toute la scolarité au lycée, et donc leurs apprentissages sont à étaler durant les trois années scolaires. Il n’y aura pas d’autres notions en première et en terminale, si ce n’est bien sur le degré de complexité qui pourra évoluer. Les attendus à la fin de la terminale :
* Instructions élémentaires (affectation, calcul, entrée, sortie).
Par exemple, les élèves, dans le cadre d’une résolution de problèmes, doivent être capables d’écrire une formule permettant un calcul ; d’écrire un programme calculant et donnant la valeur d’une fonction ;
* Boucle et itérateur, instruction conditionnelle
Toujours dans le cadre d’une résolution de problèmes, on attend des élèves qu’ils sachent programmer un calcul itératif, (le nombre d’itérations étant donné) et programmer une instruction conditionnelle, un calcul itératif, avec une fin de boucles conditionnelle.
Ces informations devraient permettre de bien comprendre la modestie attendue, même si l’algorithmique peut être présente souvent lors des différents chapitres abordés en seconde, mais surtout en restant simple.

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 8 mars 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mercredi 12 avril 2017, 14h-18h, campus du Tampon
- Mercredi 3 mai 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mardi 13 juin 2017, 14h-18h, campus du Tampon
- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6

Semaine des mathématiques

Du 23 mars au 4 avril 2017 dans l’académie de la Réunion.


Brèves

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

dimanche 26 mars 2017

Publication

735 Articles
Aucun album photo
128 Brèves
11 Sites Web
126 Auteurs

Visites

681 aujourd'hui
853 hier
1963100 depuis le début
50 visiteurs actuellement connectés