Algorithmique au bac L en JavaScript

lundi 27 septembre 2010
par  Alain BUSSER

Dans le dossier ci-dessous, chaque sujet d’algorithmique est corrigé dans son propre onglet. Pour resituer l’algorithme dans son contexte, voir le sujet entier par exemple sur le site de l’APMEP. Ici la seule activité présentée est celle de la programmation, c’est-à-dire le passage de l’algorithme (tel qu’il est décrit dans l’énoncé) au programme, en l’occurence en JavaScript. Certes

  1. L’énoncé demande de « faire tourner l’algorithme » au papier et crayon, en remplissant un tableau. L’usage de JavaScript n’est donc pas indispensable pour le corrigé !
  2. Le jour du Bac, les candidats n’ont pas d’ordinateur sous la main, et gagneraient plus à s’entraîner sur leur calculatrice, exercice d’ailleurs très analogue à ce qui est fait ci-dessous.

Mais JavaScript hérite des boucles du langage c, que l’on retrouve donc également dans Java (langage) et Xcas, et qui sont des boucles à condition d’arrêt déguisées en boucles itératives. Par exemple, si on a un algorithme du genre

x prend Vi;
tant que ceci-cela faire
plein de choses
fin tant que

(Vi comme « valeur initiale »...) on peut le rédiger en JavaScript comme ceci :

var x=Vi;
while(ceci-cela){
plein de choses;
}

mais également comme cela :

for(var x=Vi;ceci-cela;plein de choses);

ce qui produit un code court mais un peu compliqué à lire. Mais cette complexité n’est qu’apparente ! En s’entraînant, on finit par s’imprégner de la logique de ces boucles, et refaire les exercices ci-dessous est un excellent entraînement (du moins ceux où les variables sont numériques). Si on veut abandonner cet apprentissage et donner sa langue au chat, on peut cliquer sur l’icône des scripts :

Après on a le choix entre

  1. cliquer sur le nom du script (en général, « versionlongue ») pour exécuter celui-ci. On voit alors apparaître un affichage dont la signification surgit lors de la lecture de l’énoncé...
  2. regarder le script, en cliquant sur « modifier » puis sur le nom du script. On peut d’ailleurs aussi modifier le script pour voir ce que produit la modification, mais il est plus prudent de le faire en local après avoir téléchargé le dossier (lien en bas d’article) parce que les boucles à condition d’arrêt peuvent boucler sans fin si la condition d’arrêt n’est jamais atteinte : Plantage de CaRMetal, ou plutôt de la machine Java, assuré...

Certains de ces scripts JavaScript peuvent se faire sans CaRMetal, il suffit pour les exécuter d’avoir un navigateur Internet ! Ci-dessous on montre comment le navigateur FireFox permet de faire le sujet Liban mai 2009 :

L’astuce consiste à mettre « javascript » à la place du protocole (« http », « https » ou « ftp » en général). Donc, dans la barre d’adresse du navigateur, on tape

javascript:N=5;for(P=0,U=4,S=4;P<N;P++,U=4+2*P,S+=U);S;

Le dernier « S » sera affiché dans une page web créée à cet effet. Il suffit d’appuyer sur « Entrée » pour créer cette page web, avec l’affichage de S :

Rien de surprenant à ceci : Le navigateur FireFox de la fondation Mozilla intègre rhino qui est l’interpréteur JavaScript de CaRMetal...


Addendum : Les sujets postérieurs à l’article

Depuis l’écriture de cet article, d’autres sujets d’algorithmique ont été donnés au bac L [1] en guise de chant du signe de cette option maths en L. Voici leurs corrigés sur le même principe que ci-dessus [2] :

la suite
Le retour du fils du bac L II : Le retour (toujours avec CaRMetal en guest star)

[1et peut-être un dernier pour la session de septembre 2012...

[2Pour éviter de rendre interminable l’écriture de cet article, les sujets d’algorithmique du bac S à partir de 2012 ne seront pas traités ici ; ça ne veut pas dire qu’on ne peut pas les « javascripter » ni que ce soit dénué d’intérêt...


Commentaires