Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 3/Boolean Expressions/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 3/Boolean Expressions/fr

OldNewLine
1+[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Structures de contrôle / **Expressions booléennes**
2+
3+Les expressions [[Boolean/fr|booléennes]] sont utilisées pour comparer deux valeurs et retournent `true` ou `false` :
4+
5+`valeur1 `**`opérateur_relationnel`**` valeur2`
6+
7+Les opérateurs relationnels suivants sont utilisés :
8+
9+`<  inférieur à`\
10+`>  supérieur à`\
11+`=  égal à`\
12+`<= inférieur ou égal à`\
13+`>= supérieur ou égal à`\
14+`<> différent de`
15+
16+Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant `true` à *some_bool* :
17+
18+``` pascal
19+some_bool := 3 < 5;
20+```
21+
22+Des expressions booléennes plus complexes sont formées avec les opérateurs booléens :
23+
24+`not    négation (~)`\
25+`and    conjonction (^)`\
26+`or disjonction (v)`\
27+`xor    ou exclusif ((+))`
28+
29+`NOT` est un opérateur unaire ; il est appliqué à une seule valeur et inverse sa valeur :
30+
31+- `not true = false`
32+- `not false = true`
33+
34+`AND` retourne `TRUE` uniquement si les deux valeurs sont `TRUE` simultanément :
35+
36+- `TRUE and FALSE = FALSE`
37+- `TRUE and TRUE = TRUE`
38+
39+`OR` retourne `TRUE` si au moins l'une des valeurs est `TRUE` :
40+
41+- `TRUE or TRUE = TRUE`
42+- `TRUE or FALSE = TRUE`
43+- `FALSE or TRUE = TRUE`
44+- `FALSE or FALSE = FALSE`
45+
46+`XOR` retourne `TRUE` si les deux valeurs sont différentes. Ainsi :
47+
48+- `TRUE xor TRUE = FALSE`
49+- `TRUE xor FALSE = TRUE`
50+- `FALSE xor TRUE = TRUE`
51+- `FALSE xor FALSE = FALSE`
52+
53+C'est l'inverse de l'opérateur d'égalité `=` ; on peut donc le remplacer par l'opérateur `<>` appliqué aux valeurs booléennes.
54+
55+En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est nécessaires :
56+
57+``` pascal
58+(3 > 5) or (650 < 1)
59+```
60+
61+car les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :
62+
63+1. `not`
64+2. `* / div mod and`
65+3. `+ - or`
66+4. `< > <= >= = <>`
67+
68+Ainsi, `3 > 5 or 650 < 1` est évalué en `3 > (5 or 650) < 1`, ce qui n'a pas de sens en tant qu'expression booléenne (`OR` est un opérateur agissant aussi sur les entiers mais avec un autre sens).
69+
70+Les opérateurs booléens (`AND, OR, NOT, XOR`) peuvent être employés aussi bien sur des expressions booléennes que sur des valeurs booléennes.
71+
72+Quelques remarques :
73+
74+- Bien que ces opérateurs soient commutatifs (on peut changer la place les opérandes des opérateurs), une optimisation fréquente des compilateurs, dite évaluation paresseuse, consiste à n'évaluer que le premier opérande et le second au besoin du fait des propriétés des opérateurs booléens. Cela n'a habituellement aucune conséquence sauf pour des constructions particulières, prudence donc…
75+
76+- Autant que possible, ne jamais comparer directement deux valeurs réelles, de légères différences d'arrondi peuvent fausser le résultat de l'expression. En fait, il vaut mieux comparer la différence à une valeur suffisamment petite.
77+
78+- Dans la mesure du possible, éviter des expressions du genre :
79+
80+`if some_bool = True then`
81+
82+alors que :
83+
84+`if some_bool then`
85+
86+suffit largement et allège la lecture.
87+
88+---
89+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/Boolean Expressions/fr", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history