8. Etat d'un système.
On a souvent besoin de savoir si quelque chose est vrai ou faux, exemple : le
système est-il initialisé ?
systemInit = False (Faux)
.....Initialisation du système
systemInit = True (Vrai)
A un autre moment dans le programme on pourra tester :
Si systemInit = True (if systemInit = true)
faire quelque chose
Sinon (else)
Initialiser le système
9. Stocker des paramètres
Exemple : Touches de modification clavier (Shift, Control, Alt, etc..)
Affectons une variable
modifClavier
Voyons la en binaire en nous limitant aux 4 premiers bits.
bit 3, bit 2, bit 1, bit 0
Pour symboliser l'état des touches nous décidons que 0 signifiera touche
relachée et 1 enfoncée.
Nous pouvons décider que le bit 0 sera affecté à la touche Shift, le bit 1 à
Control, le bit 2 à Alt, le bit 3 à Alt Gr.
Pour tester si une touche est enfoncée ou non nous définirons un masque pour
cette touche, chiffre binaire avec un 1 à l'emplacement du bit définissant
l'état de la touche, pour Control le masque sera 0010B, pour Alt
0100B etc...
Dans la plupart des cas le masque sera exprimé par un nombre décimal, dans
l'exemple ci dessus 1 pour Shift, 2 pour Control, 4 pour Alt et 8 pour Alt Gr.
Test de l'état de la touche Control, on fait un ET entre la variable
modifClavier et le masque control (ici 2) :
etatControl = modifClavier &
2
Suivant les systèmes on obtiendra dans etatControl ou
0 ou 1, ou Faux ou Vrai.
On pourra écrire (à la syntaxe du langage de programmation près) :
Si ((modifClavier & 2)
& (modifClavier &
3))
Cette proposition est vrai si les touches Control et Alt sont enfoncés en même
temps.
10. Exemple JavaScript :
Emploi d'une variable permettant de choisir les pages à charger en fonction du
navigateur du consultant et de la langue de celui ci. Ceci fonctionne dans un
appel de Frames, cela s'appliquerait de la même façon si cette variable était
inscrite sous la forme d'un Cookie,(pour les pages non framées).
Variable état;
//bit 4 Numéro de révision du navigateur si supérieur a 3(Non utilisé pour
l'instant)
//bit 3 Numéro de révision du navigateur 2 (0), 3 (1)
//bit 2 Type du navigateur Netscape (0), Internet Explorer (1)
//bit 1 Langue Anglais (0), Francais (1)
//bit 0 Non utilisé
var état=0 //Définition d'une variable dans l'appel des frames
/* Affectation d'une valeur à la variable dans une des
frames appelées, ceci explique le "parent.etat" */
if (navigator.appName.lastIndexOf("Netscape") !=
-1){ //c'est Netscape
if (navigator. appVersion.lastIndexOf("3.") != -1){ //C'est la version 3
parent.etat = 12; //Netscape
bit 2 à 1, Version 3 bit 3 à 1
}
Ensuite on trouverait les else pour les autres cas de
navigateurs.
Choix de la langue de consultation, ce sous programme est sur une page en
anglais, sa fonction est de mettre le bit 1 à 1:
function Langue() {
Mask= 2 ; /* 00010 */
if ((parent.etat & Mask)> 0){ /* Francais */
alert("Vous etes déjà en version francaise"); // erreur d'indirection
} else {
parent.etat = parent.etat + 1 ;
}
}
Utilisation de la variable, en fonction du navigateur on va
charger un menu, ici menuEnNetV3 comporte des load d'images dans une frame et
une option VRML, tout ceci nécessitant Netscape version 3 (pour le moment) :
Mask=12 ;
if ((parent.state & Mask) > 0){ /*Netscape V3*/
top.location.href = "menuEnNetV3.htm" ; //Appel d'une page de frames
} else{ /* V2 */
parent.HomePage.location.href =
"menuEnV2.htm" ;
//Load d'un menu pour la version 2
(Netscape ou IE)
11. Bascule
Soit une variable varBascule comportant deux bits :
bit 1 Transmission Cable (0), Radio (1)
bit 0 Success Non (0), Oui (1)
Ces bits ne peuvent avoir que deux états entre lesquelles ils basculent.
Si on fait un Ou exclusif (XOR), entre la valeur
actuelle d'un de ces bits, extraite à l'aide d'un masque, et 1, on inversera la
valeur de ce bit.
Si bit 1 est à 0 (Cable), 0 XOR 1 = 1 en effet les
deux variable sont différentes, le résultat est VRAI (1)
Si bit 1 est à 1 (Radio) 1 XOR 1 = 0 en effet les
deux variable sont semblables, le résultat est FAUX (0).
On pourrait écrire :
if (varBascule ET 0)
(on teste success=Faux)
varBascule = varBascule XOR 2 (basculer le moyen de transmission)
Le masque de comparaison se présente
sous la forme 0...00010, le OU exclusif se fait bit a bit, avec les 0 du masque
cela laisse le bit inchangé, avec le 1 cela bascule la valeur.