Le principe est simple : Lorsque la case est cochée, le booléen est « true » (niveau logique 1) et lorsqu’elle est décochée, le booléen est « false » (valeur logique 0). En plaçant ces cases à cocher dans des tableaux, on a un outil de test manipulable en ligne.
Un booléen, c’est tout d’abord une case à cocher ; en html une telle case est une entrée, et se trouve donc décrite par la balise input, en précisant le type checkbox et en lui fournissant un identifiant qui permet à ECMAScript de le retrouver.
Dès lors, la fonction JavaScript getElementById permet de retrouver et utiliser ce bouton :
on envoie au document un message signifiant qu’on s’adresse à lui : document ;
on invoque alors sa méthode getElementById qui retourne l’élément d’identifiant donné : document.getElementById(« in1 ») ;
cet élément se trouvant être une case (« checkbox ») possède un attribut « checked », qu’on peut donc obtenir avec document.getElementById(« in1 »).checked.
Il est même possible de modifier cet attribut avec ECMAScript, comme on le fait dans l’onglet suivant. Le tout se fait dans une fonction ECMAScript qui est elle-même appelée par l’élément « onChange » de la case à cocher ; autrement dit, cette fonction sera appelée à chaque modification de la case (quand on la coche, ou quand on la décoche). Ici cette fonction s’appelle « dessin() » car elle dessine un interrupteur dont l’état illustre celui de la case. Des modifications du html même ont aussi lieu, portant sur des « spans » possédant eux aussi des identifiants :
On s’adresse toujours au document : document, c’est à toi que je parle ;
on invoque toujours la méthode « getElementById » : document.getElementById(« out1 ») qui donne « out1, c’est finalement à toi que je parle [1] » ;
l’élément d’identifiant « out1 » se trouvant être un « span », possède un attribut « innerHTML » que l’on peut modifier : document.getElementById(« out1 »).innerHTML=« fermé »
(cette dernière modification est appliquée lorsque la case est cochée).
Avec ce genre de messages entre éléments html, on obtient ceci [2] :
Variables booléennes
Variables booléennes
Cocher la case ci-dessous ferme l'interrupteur, et fait passer le courant.
Avec deux booléens, on peut commencer à faire des portes logiques, et ajouter des sorties booléennes destinées à être modifiées par programme, donc non éditables :
Huit booléens font un octet ; on peut donc entrer un octet avec huit cases à cocher (ou pas...). Pour faire joli, on les place dans un tableau, avec des identifiants égaux à « a07 », « a06 » etc [3].
Voici le code ECMASCript qui permet d’avoir la valeur entière de l’octet choisi, à l’aide d’une variable p qui parcourt les puissances successives de 2, à additionner à l’octet ... ou pas :
function code(){
var s=0;
var p=1;
for(n=0,p=1;n<=7;n++,p*=2){
if(document.getElementById('a0'+n.toString()).checked){
document.getElementById('o0'+n.toString()).innerHTML=1;
s+=p;
} else {
document.getElementById('o0'+n.toString()).innerHTML=0;
}
}
document.getElementById("s01").innerHTML=s;
}
Il produit l’effet suivant :
octet
Un octet
0
0
0
0
0
0
0
0
L'octet affiché est 0.
Proposition de projet
Modifier le fichier html pour qu’il affiche la valeur de l’octet en complément à deux (allant de -128 à 127, au lieu d’aller de 0 à 256).
Deux « dictionnaires » permettent directement d’avoir les conversions de booléens en entiers et vice-versa :
var bool=[false,true];
var chiffre={false:0,true:1};
Les fonctions « ou exclusif » (chiffre de la somme en binaire), « somme » (somme de trois chiffres, dont un est la retenue précédente) et « retenue » sont implémentées directement sur des booléens :
function xor(a,b){return (a||b)&&!(a&&b);}
function add(a,b,r){return xor(xor(a,b),r);}
function ret(a,b,r){return ((a&&b)||(a&&r)||(b&&r));}
Elles permettent d’avoir, en plus des deux octets précédents, leur somme (modulo 256 en fait) sous forme de 8 cases non éditables à cocher.
octet
Deux octets et leur somme
0
0
0
0
0
0
0
0
Le premier terme est 0.
0
0
0
0
0
0
0
0
Le second terme est 0.
Leur somme calculée binairement:
0
0
0
0
0
0
0
0
La somme vaut 0.
Proposition de projet
Refaire cet additionneur d’octets avec un autre outil possédant des cases à cocher ; on peut penser à un tableur, à CaRMetal (sans JavaScript) ou à GeoGebra... On peut aussi penser à PyQt. Ou à l’interface graphique de Scilab...
[1] comme dans les élections par correspondance, on a des enveloppes gigogne, permettant à des facteurs de se passer le relais ; c’est ce passage de relais qui est noté par un point en ECMASCript.
[2] télécharger la version html ci-dessous et l’ouvrir avec un éditeur de texte pour voir le détail
[3] et dans la deuxième ligne du tableau, la première étant formée des chiffres binaires représentés, 0 ou 1, notés « o07 », o06" etc.
Documents joints
les sources en html
Les quatre fichiers animés, à ouvrir avec un navigateur récent (de préférence de chez Mozilla) (...)
Commentaires
vendredi 7 septembre 2012
à 18h43
- par nathalierun
Le site Computing : The Human Experience est une source précieuse sur l’histoire de l’informatique, avec de multiples entrées suivant les individus, les artéfacts, les concepts, les institutions, les dates et les lieux.
Sur smartphone Android, Wabbitemu est une calculatrice TI open source - avec ROM open source également disponible [1]. Cette application propose une parfaite réplique des calculatrices utilisées dans nos classes (choisir la ROM open source TI 83+). L’application Wabbitemu est gratuite et se télécharge sur Google Store
Sur iPhone, il y a GraphNCalc83, application propriétaire et payante mais vraiment pas chère comparée au prix d’une réelle calculatrice.
[1] mémoire interne indispensable pour que la calculatrice marche
Une application extraordinaire pour donner le goût de la géométrie à vos élèves : Euclidea propose des challenges géométriques progressifs à réaliser en géométrie dynamique à la règle et au compas.
L’application est disponible en ligne , mais aussi sur tablettes et smartphones.
Du même auteur, on relève deux applications autour du théorème de Pythagore : Pythagorea et Pythagorea 60°, mais surtout XSection (uniquement sur tablettes ou téléphones Apple), qui correspond parfaitement au programme de seconde sur l’espace, avec des sections progressives à faire.
Canopé - CRDP académie de Besançon a le plaisir de vous informer de la mise en ligne de sa nouvelle application Mathador pour iPad et iPhone.
Un outil pour devenir accro du calcul mental !
La maison des mathématiques et de l’informatique de Lyon a été inaugurée le 10 octobre 2012. Elle proposera des expositions, des ateliers mathématiques et des conférences. Ses autres missions sont de fédérer, d’organiser et d’amplifier les diverses actions de diffusion de la culture mathématique qui ont lieu à Lyon et dans sa région.
L’an 2013 sera une année mondiale sur le thème « Mathématiques de la planète Terre » (MPT).
Des activités se tiendront partout autour de la planète : ateliers, groupes de recherche conjoints, écoles d’étés, activités pour le public et les médias, activités dans les écoles et numéros spéciaux de journaux scientifiques.
En France, la semaine des mathématiques 2013 sera rattachée à ce thème.
Le projet Klein vise à construire une communauté d’apprentissage sur les liens entre les mathématiques scolaires et la recherche contemporaine en sciences mathématiques. Dans ce but, une “vignette de Klein”, un texte court sur un sujet particulier de mathématiques, est publiée chaque semaine sur ce blog.
Une série de vidéos réalisées par le CRDP de Créteil sur le thème Les mathématiques : paradigmes ou outils de savoirs d’aujourd’hui ? Premiers conférenciers : Valérie Masson-Delmotte, Dominique Barbolosi, Marc Fort, Jean-Pierre Raoult, François Legendre
Commentaires