Sign in Join
Wiki copytemporary

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

Revision 4 to 5. 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-```
5+```text
66valeur1 opérateur_relationnel valeur2
77```
88
99Les opérateurs relationnels suivants sont utilisés :
1010
11-```
11+```text
1212< inférieur à
1313> supérieur à
1414= égal à
1515<= inférieur ou égal à
1616>= supérieur ou égal à
1717<> différent de
1818```
1919
2020Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant `true` à *some_bool* :
2121
2222``` pascal
2323some_bool := 3 < 5;
2424```
2525
2626Des expressions booléennes plus complexes sont formées avec les opérateurs booléens :
2727
28-```
28+```text
2929not négation (~)
3030and conjonction (^)
3131or disjonction (v)
3232xor ou exclusif ((+))
3333```
3434
3535`NOT` est un opérateur unaire ; il est appliqué à une seule valeur et inverse sa valeur :
3636
3737- `not true = false`
3838- `not false = true`
3939
4040`AND` retourne `TRUE` uniquement si les deux valeurs sont `TRUE` simultanément :
4141
4242- `TRUE and FALSE = FALSE`
4343- `TRUE and TRUE = TRUE`
4444
4545`OR` retourne `TRUE` si au moins l'une des valeurs est `TRUE` :
4646
4747- `TRUE or TRUE = TRUE`
4848- `TRUE or FALSE = TRUE`
4949- `FALSE or TRUE = TRUE`
5050- `FALSE or FALSE = FALSE`
5151
5252`XOR` retourne `TRUE` si les deux valeurs sont différentes. Ainsi :
5353
5454- `TRUE xor TRUE = FALSE`
5555- `TRUE xor FALSE = TRUE`
5656- `FALSE xor TRUE = TRUE`
5757- `FALSE xor FALSE = FALSE`
5858
5959C'est l'inverse de l'opérateur d'égalité `=` ; on peut donc le remplacer par l'opérateur `<>` appliqué aux valeurs booléennes.
6060
6161En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est nécessaires :
6262
6363``` pascal
6464(3 > 5) or (650 < 1)
6565```
6666
6767car les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :
6868
69691. `not`
70702. `* / div mod and`
71713. `+ - or`
72724. `< > <= >= = <>`
7373
7474Ainsi, `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).
7575
7676Les 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.
7777
7878Quelques remarques :
7979
8080- 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…
8181
8282- 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.
8383
8484- Dans la mesure du possible, éviter des expressions du genre :
8585
86-```
86+```text
8787if some_bool = True then
8888```
8989
9090alors que :
9191
92-```
92+```text
9393if some_bool then
9494```
9595
9696suffit largement et allège la lecture.
9797
9898---
9999*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