![]() |
||
Préambule : le Codage
4. Encore de la Logique
5. Les Boucles |
« La programmation peut
être un plaisir ; de même que la cryptographie. Toutefois, il faut éviter de
combiner les deux. » 1. Faut-il mettre un ET ? Faut-il mettre un OU ? Une remarque pour commencer : dans le cas de conditions composées, les parenthèses jouent un rôle fondamental.
Variables
A,
B, C, D, E en Booléen
Si X = 3, alors
on remarque que D sera VRAI alors que E sera FAUX. Dans une condition composée employant à la fois des opérateurs ET et des opérateurs OU, la présence de parenthèses possède une influence sur le résultat, tout comme dans le cas d’une expression numérique comportant des multiplications et des additions.
On en arrive à
une autre propriété des ET et des OU, bien plus intéressante.
Si
il fait
trop chaud ET il ne pleut pas Alors Cette petite règle pourrait tout aussi bien être formulée comme suit :
Si
il ne fait
pas trop chaud OU il pleut Alors Ces deux formulations sont strictement équivalentes. Ce qui nous amène à la conclusion suivante : Toute structure de test requérant une condition composée faisant intervenir l’opérateur ET peut être exprimée de manière équivalente avec un opérateur OU, et réciproquement.
Ceci est moins
surprenant qu’il n’y paraît au premier abord. Jetez pour vous en convaincre
un œil sur les tables de vérité, et vous noterez la symétrie entre celle du
ET et celle du OU. Dans les deux tables, il y a trois cas sur quatre qui
mènent à un résultat, et un sur quatre qui mène au résultat inverse. Alors,
rien d’étonnant à ce qu’une situation qui s’exprime avec une des tables (un
des opérateurs logiques) puisse tout aussi bien être exprimée avec l’autre
table (l’autre opérateur logique). Toute l’astuce consiste à savoir
effectuer correctement ce passage.
Si
A ET
B Alors Si NON A OU NON B Alors
Cette règle porte le nom
de transformation de Morgan, du nom du mathématicien anglais qui l'a
formulée.
2. Au-delà de la logique : le style
Ce titre un peu
provocateur (mais néanmoins justifié) a pour but d’attirer maintenant votre
attention sur un fait fondamental en algorithmique, fait que plusieurs
remarques précédentes ont déjà dû vous faire soupçonner : il n’y a jamais
une seule manière juste de traiter les structures alternatives. Et plus
généralement, il n’y a jamais une seule manière juste de traiter un
problème. Entre les différentes possibilités, qui ne sont parfois pas
meilleures les unes que les autres, le choix est une affaire de style.
Si
il fait
trop chaud ET il ne pleut pas Alors Possède un parfait équivalent algorithmique sous la forme de :
Si
il fait
trop chaud Alors
Dans cette
dernière formulation, nous n’avons plus recours à une condition composée
(mais au prix d’un test imbriqué supplémentaire)
Pour vous en
convaincre définitivement, nous allons traiter ensemble un exemple. Celui-ci
est d’un manque d’originalité affligeant, mais après tout, en algorithmique
comme ailleurs, il faut connaître ses classiques ! Je vous conseille
vivement de résoudre par vous-mêmes cet excellent exercice avant d’en
consulter la correction. Si vous allez au bout, vous n’avez plus rien à
apprendre sur les tests.
Si vous avez
compris ce qui précède, et que l'exercice de la date ne vous pose plus aucun
problème, alors vous savez tout ce qu'il y a à savoir sur les tests pour
affronter n'importe quelle situation. Non, ce n'est pas de la démagogie ! |