10- qui commande ?


Lorsqu'on a des conditions du genre:

il est préférable d'alléger le code en écrivant:

A première vue, on peut penser que si on écrit var x = var y ou var y = var x il se passera la même chose. Eh bien ce n'est pas le cas. Car il faut toujours se demander "qui commande" dans le couple de variables.

 

La commande de pilote automatique de l'exemple ci-dessus fonctionne aussi bien avec le code IF...ELSE qu'avec la condition AP = AP_SW. Par contre si on écrit AP_SW = AP, cela ne marche pas, parce que c'est la variable qui doit SUIVRE l'état de son interrupteur, et non l'interrupteur qui suit l'état de la variable.

 

En fait, quand on écrit AP_SW = AP , il se passe quand même quelque chose: l'interrupteur prend la valeur de la variable, ce n'est pas vraiment logique, et ne correspond à rien dans la réalité.

 

Tout aussi important, il s'agit de savoir où on doit mettre cette commande AP = AP_SW : dans le script de la variable AP, ou dans le script de l'interrupteur AP_SW ?

 

Il suffit alors de se demander de nouveau "qui commande ?" : c'est la variable qui commande à l'interrupteur ou l'interrupteur qui modifie l'état de la variable ? Bien évidemment, c'est l'interrupteur qui est le chef, c'est donc chez lui qu'il faut mettre la commande AP= AP_SW. Et cela rejoint la règle précédente: on SUIT son chef.

 

Et dans le cas d'une LED, c'est l'interrupteur ou la variable qui commande la LED ?

Les deux, mon Général. Mais comme en principe une LED confirme l'état d'une variable et non d'un interrupteur, on mettra plutôt la commande de la LED dans la variable. Il vaut mieux que la LED dise "le train est effectivement sorti", plutôt que "l'interrupteur de train est sur ON" , on ne sait jamais ...


CHAPITRE SUIVANT: 11- la console IOCP