Sign in Join
Wiki copytemporary

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

Revision 3 to 4. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Structures de contrôle / **Expressions booléennes**
22
33Les expressions [[Boolean/fr|booléennes]] sont utilisées pour comparer deux valeurs et retournent `true` ou `false` :
44
5-`valeur1 `**`opérateur_relationnel`**` valeur2`
5+```
6+valeur1 opérateur_relationnel valeur2
7+```
68
79Les opérateurs relationnels suivants sont utilisés :
810
9-`<  inférieur à`\
10-`>  supérieur à`\
11-`=  égal à`\
12-`<= inférieur ou égal à`\
13-`>= supérieur ou égal à`\
14-`<> différent de`
11+```
12+< inférieur à
13+> supérieur à
14+= égal à
15+<= inférieur ou égal à
16+>= supérieur ou égal à
17+<> différent de
18+```
1519
1620Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant `true` à *some_bool* :
1721
1822``` pascal
1923some_bool := 3 < 5;
2024```
2125
2226Des expressions booléennes plus complexes sont formées avec les opérateurs booléens :
2327
24-`not    négation (~)`\
25-`and    conjonction (^)`\
26-`or disjonction (v)`\
27-`xor    ou exclusif ((+))`
28+```
29+not négation (~)
30+and conjonction (^)
31+or disjonction (v)
32+xor ou exclusif ((+))
33+```
2834
2935`NOT` est un opérateur unaire ; il est appliqué à une seule valeur et inverse sa valeur :
3036
3137- `not true = false`
3238- `not false = true`
3339
3440`AND` retourne `TRUE` uniquement si les deux valeurs sont `TRUE` simultanément :
3541
3642- `TRUE and FALSE = FALSE`
3743- `TRUE and TRUE = TRUE`
3844
3945`OR` retourne `TRUE` si au moins l'une des valeurs est `TRUE` :
4046
4147- `TRUE or TRUE = TRUE`
4248- `TRUE or FALSE = TRUE`
4349- `FALSE or TRUE = TRUE`
4450- `FALSE or FALSE = FALSE`
4551
4652`XOR` retourne `TRUE` si les deux valeurs sont différentes. Ainsi :
4753
4854- `TRUE xor TRUE = FALSE`
4955- `TRUE xor FALSE = TRUE`
5056- `FALSE xor TRUE = TRUE`
5157- `FALSE xor FALSE = FALSE`
5258
5359C'est l'inverse de l'opérateur d'égalité `=` ; on peut donc le remplacer par l'opérateur `<>` appliqué aux valeurs booléennes.
5460
5561En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est nécessaires :
5662
5763``` pascal
5864(3 > 5) or (650 < 1)
5965```
6066
6167car les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :
6268
63691. `not`
64702. `* / div mod and`
65713. `+ - or`
66724. `< > <= >= = <>`
6773
6874Ainsi, `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).
6975
7076Les 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.
7177
7278Quelques remarques :
7379
7480- 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…
7581
7682- 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.
7783
7884- Dans la mesure du possible, éviter des expressions du genre :
7985
80-`if some_bool = True then`
86+```
87+if some_bool = True then
88+```
8189
8290alors que :
8391
84-`if some_bool then`
92+```
93+if some_bool then
94+```
8595
8696suffit largement et allège la lecture.
8797
8898---
8999*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