Difference between revisions of "Basic Pascal Tutorial/Chapter 3/Boolean Expressions/fr"

From Lazarus wiki
Jump to navigationJump to search
(Refonte)
Line 1: Line 1:
 
{{Boolean Expressions}}
 
{{Boolean Expressions}}
  
3B - Expressions booléennes (auteur: Tao Yue, état: traduit)
+
[[Object Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Structures de contrôle / '''Expressions booléennes'''
  
Les expressions [[Boolean/fr|booléennes]] sont utilisées pour comparer deux valeurs et retourne <tt>true</tt> ou <tt>false</tt> :
+
Les expressions [[Boolean/fr|booléennes]] sont utilisées pour comparer deux valeurs et retournent <tt>true</tt> ou <tt>false</tt> :
 
  valeur1 '''opérateur_relationnel''' valeur2
 
  valeur1 '''opérateur_relationnel''' valeur2
  
Line 14: Line 14:
 
  <> différent de
 
  <> différent de
  
Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant <tt>true</tt> à some_bool :
+
Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant <tt>true</tt> à ''some_bool'' :
some_bool := 3 < 5;
+
<syntaxhighlight>
 +
some_bool := 3 < 5;
 +
</syntaxhighlight>
  
Des expressions booléennes plus complexes sont formées avec les opérateurs booléens:
+
Des expressions booléennes plus complexes sont formées avec les opérateurs booléens :
 
  not négation (~)
 
  not négation (~)
 
  and conjonction (^)
 
  and conjonction (^)
Line 23: Line 25:
 
  xor ou exclusif ((+))
 
  xor ou exclusif ((+))
  
<tt>NOT</tt> est un opérateur unaire — il est appliqué à une seule valeur et inverse sa valeur:
+
<tt>NOT</tt> est un opérateur unaire ; il est appliqué à une seule valeur et inverse sa valeur :
  
* <tt>not true = false
+
* <tt>not true = false</tt>
* not false = true</tt>
+
* <tt>not false = true</tt>
  
<tt>AND</tt> retourne <tt>TRUE</tt> uniquement si les deux valeurs sont <tt>TRUE</tt> simultanément:
+
<tt>AND</tt> retourne <tt>TRUE</tt> uniquement si les deux valeurs sont <tt>TRUE</tt> simultanément :
  
* <tt>TRUE and FALSE = FALSE
+
* <tt>TRUE and FALSE = FALSE</tt>
* TRUE and TRUE = TRUE</tt>
+
* <tt>TRUE and TRUE = TRUE</tt>
  
<tt>OR</tt> retourne <tt>TRUE</tt> si au moins l'une des valeurs est <tt>TRUE</tt>:
+
<tt>OR</tt> retourne <tt>TRUE</tt> si au moins l'une des valeurs est <tt>TRUE</tt> :
  
* <tt>TRUE or TRUE = TRUE
+
* <tt>TRUE or TRUE = TRUE</tt>
* TRUE or FALSE = TRUE
+
* <tt>TRUE or FALSE = TRUE</tt>
* FALSE or TRUE = TRUE
+
* <tt>FALSE or TRUE = TRUE</tt>
* FALSE or FALSE = FALSE</tt>
+
* <tt>FALSE or FALSE = FALSE</tt>
  
<tt>XOR</tt> retourne <tt>TRUE</tt> si les deux valeurs sont différentes. Ainsi:
+
<tt>XOR</tt> retourne <tt>TRUE</tt> si les deux valeurs sont différentes. Ainsi :
  
* <tt>TRUE xor TRUE = FALSE
+
* <tt>TRUE xor TRUE = FALSE</tt>
* TRUE xor FALSE = TRUE
+
* <tt>TRUE xor FALSE = TRUE</tt>
* FALSE xor TRUE = TRUE
+
* <tt>FALSE xor TRUE = TRUE</tt>
* FALSE xor FALSE = FALSE</tt>
+
* <tt>FALSE xor FALSE = FALSE</tt>
  
C'est l'inverse de l'opérateur d'égalité <tt>=</tt>, on peut donc le remplacer par l'opérateur <tt><></tt> appliqué aux valeurs booléennes.
+
C'est l'inverse de l'opérateur d'égalité <tt>=</tt> ; on peut donc le remplacer par l'opérateur <tt><></tt> appliqué aux valeurs booléennes.
  
En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est prudent :
+
En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est nécessaires :
 
<syntaxhighlight>
 
<syntaxhighlight>
(3>5) or (650<1)
+
(3 > 5) or (650 < 1)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Cela parce que les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :
+
car les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :
 
+
# <tt>not</tt>
# <tt>not
+
# <tt>* / div mod and</tt>
# * / div mod and
+
# <tt>+ - or</tt>
# + - or
+
# <tt>< > <= >= = <></tt>
# < > <= >= = <></tt>
 
  
Ainsi <tt>3 > 5 or 650 < 1</tt> est évalué en <tt>3 > (5 or 650) < 1</tt>, ce qui n'a pas de sens comme expression booléenne (<tt>OR</tt> est un opérateur agissant aussi sur les entiers mais avec un autre sens).
+
Ainsi, <tt>3 > 5 or 650 < 1</tt> est évalué en <tt>3 > (5 or 650) < 1</tt>, ce qui n'a pas de sens en tant qu'expression booléenne (<tt>OR</tt> est un opérateur agissant aussi sur les entiers mais avec un autre sens).
  
 
Les opérateurs booléens (<tt>AND, OR, NOT, XOR</tt>) peuvent être employés aussi bien sur des expressions booléennes que sur des valeurs booléennes.
 
Les opérateurs booléens (<tt>AND, OR, NOT, XOR</tt>) peuvent être employés aussi bien sur des expressions booléennes que sur des valeurs booléennes.
  
Quelques remarques:  
+
Quelques remarques :
* 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...
+
* 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…
  
 
* 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.
 
* 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.
  
* Dans la mesure du possible, éviter des expressions du genre  
+
* Dans la mesure du possible, éviter des expressions du genre :
 
  if some_bool = True then
 
  if some_bool = True then
alors que  
+
alors que :
 
  if some_bool then
 
  if some_bool then
 
suffit largement et allège la lecture.
 
suffit largement et allège la lecture.
  
{|style=color-backgroud="white" cellspacing="20"
+
{{Tutorial page navigation/fr|Sequential control|IF}}
|[[Sequential_control/fr|précédent]] 
 
|[[Contents/fr|table des matières]]
 
|[[IF/fr|suivant]]
 
|}
 

Revision as of 02:56, 26 October 2015

български (bg) English (en) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

Tutoriel de Pascal Objet : Structures de contrôle / Expressions booléennes

Les expressions booléennes sont utilisées pour comparer deux valeurs et retournent true ou false :

valeur1 opérateur_relationnel valeur2

Les opérateurs relationnels suivants sont utilisés :

<	inférieur à
>	supérieur à
=	égal à
<=	inférieur ou égal à
>=	supérieur ou égal à
<>	différent de

Les expressions booléennes sont affectables à des variables booléennes. Ici, nous affectons une expression valant true à some_bool :

some_bool := 3 < 5;

Des expressions booléennes plus complexes sont formées avec les opérateurs booléens :

not	négation (~)
and	conjonction (^)
or	disjonction (v)
xor	ou exclusif ((+))

NOT est un opérateur unaire ; il est appliqué à une seule valeur et inverse sa valeur :

  • not true = false
  • not false = true

AND retourne TRUE uniquement si les deux valeurs sont TRUE simultanément :

  • TRUE and FALSE = FALSE
  • TRUE and TRUE = TRUE

OR retourne TRUE si au moins l'une des valeurs est TRUE :

  • TRUE or TRUE = TRUE
  • TRUE or FALSE = TRUE
  • FALSE or TRUE = TRUE
  • FALSE or FALSE = FALSE

XOR retourne TRUE si les deux valeurs sont différentes. Ainsi :

  • TRUE xor TRUE = FALSE
  • TRUE xor FALSE = TRUE
  • FALSE xor TRUE = TRUE
  • FALSE xor FALSE = FALSE

C'est l'inverse de l'opérateur d'égalité = ; on peut donc le remplacer par l'opérateur <> appliqué aux valeurs booléennes.

En combinant deux expressions booléennes en utilisant les opérateurs relationnels et booléens, l'emploi de parenthèses est nécessaires :

(3 > 5) or (650 < 1)

car les opérateurs booléens ont une priorité d'évaluation plus élevée que les opérateurs relationnels :

  1. not
  2. * / div mod and
  3. + - or
  4. < > <= >= = <>

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).

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.

Quelques remarques :

  • 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…
  • 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.
  • Dans la mesure du possible, éviter des expressions du genre :
if some_bool = True then

alors que :

if some_bool then

suffit largement et allège la lecture.

Sommaire