Tests et logique booléenne
Les tests et conditions
1. Principe
Dans le précédent chapitre, vous avez pu vous familiariser avec les expressions mettant en place des opérateurs, qu’ils soient de calcul, de comparaison ou booléens. Ces opérateurs et expressions trouvent tout leur sens une fois utilisés dans des conditions (qu’on appelle aussi des branchements conditionnels). Une expression évaluée est ou vraie (le résultat est différent de zéro) ou fausse. Suivant ce résultat, l’algorithme va effectuer une action, ou une autre. C’est le principe de la condition.
Grâce aux opérateurs booléens, l’expression peut être composée : plusieurs expressions sont liées entre elles à l’aide d’un opérateur booléen, éventuellement regroupées avec des parenthèses pour en modifier la priorité.
(a=1 OU (b*3=6)) ET c>10
est une expression tout à fait valable. Celle-ci sera vraie si chacun de ses composants respecte les conditions imposées. Cette expression est vraie si a vaut 1 et c est supérieur à 10 ou si b vaut 2 (2*3=6) et c est supérieur à 10.
Reprenez l’algorithme du précédent chapitre qui calcule les deux résultats possibles d’une équation du second degré. L’énoncé simplifié disait que pour des raisons pratiques seul le cas où l’équation a deux solutions fonctionne. Autrement dit, l’algorithme n’est pas faux dans ce cas de figure, mais il est incomplet. Il manque des conditions pour tester la valeur du déterminant : celui-ci est-il positif, négatif ou nul ? Et dans ces cas, que faire et comment le faire ?
Imaginez un second algorithme permettant de se rendre d’un point A à un point B. Vous n’allez pas le faire ici réellement, car c’est quelque chose de très complexe sur un réseau routier important. De nombreux sites internet vous proposent d’établir un trajet avec des indications. C’est le résultat qui est intéressant. Les indications sont simples : allez tout droit, tournez à droite au prochain carrefour, faites trois kilomètres et au rond-point prenez la troisième sortie direction B. Dans la plupart...
L’algèbre booléen
1. L’origine des tests
Les tests effectués tant en algorithmique qu’en programmation sont des tests logiques, ou plutôt faisant appel à la logique. Le chapitre Les variables et opérateurs a déjà brièvement abordé ce point lorsqu’il a été question des opérateurs booléens. Les opérateurs dits logiques ET, OU et NON sont des représentations de la logique. De quelle logique parle-t-on ?
Fondamentalement, la logique est la même pour tout le monde, bien que, évidemment, l’interprétation des résultats puisse varier d’un individu à l’autre (en statistique par exemple). La logique est universelle. Mais, jusqu’à peu, il n’y avait aucun moyen de se la représenter réellement, sous forme de symboles, d’assertions, etc. Il n’y avait aucune représentation formelle de la logique.
Or un ordinateur est logique (même si on peut lui demander des choses illogiques, c’est vous qui le programmez après tout). La logique est même la base de nombreuses applications mathématiques, électroniques, d’intelligence artificielle.
En informatique, le matériel est électronique et dépend de la logique, les programmes dépendent tant de tests et de calculs faisant appel à la logique et devant fonctionner sur des circuits électroniques. Sans logique, pas d’électronique, ni d’ordinateurs, ni de programmes.
C’est ce qui fait que les opérateurs, conditions et tests ne doivent pas être posés n’importe comment. Il n’y a rien de plus logique qu’un ordinateur, mais aussi rien de plus stupide : il va naïvement exécuter exactement ce que vous lui demandez, même si le résultat entraîne une erreur ou est faux et cela du moment que les tests sont bien posés et qu’une réponse logique peut en être déduite. Ainsi :
PROGRAMME STUPIDE
VAR
chaud, bonnet, sortir en Booléen
DEBUT
chaud
VRAI
bonnet
VRAI
Si chaud=VRAI ET bonnet=VRAI Alors
Sortir
VRAI
FinSi
FIN
Cet algorithme peut être ainsi interprété :...
Exercices
Exercice 1
Écrire un algorithme qui lira au clavier trois noms communs, et qui dira s’ils sont dans l’ordre alphabétique.
Exercice 2
Écrire, avec des comparaisons, un algorithme qui lira au clavier les heures et les minutes, et qui affichera l’heure qu’il sera une minute plus tard. Par exemple, si l’utilisateur tape 20 puis 33, l’algorithme doit répondre :
« Dans une minute, il sera 20 heure(s) 34 minute(s). »
NB : on suppose que l’utilisateur entre une heure valide.
Exercice 3
Écrire le même algorithme, mais en utilisant deux variables booléennes pour vérifier si les minutes sont égales à 60 et les heures à 24, sans comparaisons dans les SI.
Exercice 4
Écrire un algorithme qui détermine la catégorie sportive d’un utilisateur en fonction de son âge :
18 à 19 ans : junior
20 à 22 ans : espoir
23 à 39 ans : sénior
40 ans et plus : vétéran
Écrire le programme PHP équivalent.
Exercice 5
Une compagnie d’assurance automobile doit appliquer une surprime suivant l’âge, le sexe et le nombre d’années de permis de la personne.
Les hommes de plus de 22 ans payent la surprime.
Les femmes entre 20 et 30 ans payent la surprime.
Les personnes ayant plus de 5 années de permis ne payent pas la surprime.
Écrire...