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

Line 46: | Line 46: | ||

When combining two Boolean expressions using relational and Boolean operators, be careful to use parentheses. | When combining two Boolean expressions using relational and Boolean operators, be careful to use parentheses. | ||

− | + | <delphi> | |

+ | (3>5) or (650<1) | ||

+ | </delphi> | ||

This is because the Boolean operators are higher on the order of operations than the relational operators: | This is because the Boolean operators are higher on the order of operations than the relational operators: |

## Revision as of 16:25, 5 January 2010

3B - Boolean Expressions (author: Tao Yue, state: unchanged)

Boolean expressions are used to compare two values and get a `true-or-false` answer:

value1relational_operatorvalue2

The following relational operators are used:

< less than > greater than = equal to <= less than or equal to >= greater than or equal to <> not equal to

You can assign Boolean expressions to Boolean variables. Here we assign a `true` expression to some_bool:

some_bool := 3 < 5;

Complex Boolean expressions are formed by using the Boolean operators:

not negation (~) and conjunction (^) or disjunction (v) xor exclusive-or

`NOT` is a unary operator — it is applied to only one value and inverts it:

`not true = false``not false = true`

`AND` yields `TRUE` only if both values are `TRUE`:

`TRUE and FALSE = FALSE``TRUE and TRUE = TRUE`

`OR` yields `TRUE` if at least one value is `TRUE`:

`TRUE or TRUE = TRUE`- TRUE or FALSE = TRUE
- FALSE or TRUE = TRUE
`FALSE or FALSE = FALSE`

`XOR` yields `TRUE` if one expression is `TRUE` and the other is `FALSE`. Thus:

`TRUE xor TRUE = FALSE`- TRUE xor FALSE = TRUE
- FALSE xor TRUE = TRUE
`FALSE xor FALSE = FALSE`

When combining two Boolean expressions using relational and Boolean operators, be careful to use parentheses. <delphi> (3>5) or (650<1) </delphi>

This is because the Boolean operators are higher on the order of operations than the relational operators:

`not`- * / div mod and
- + - or
`< > <= >= = <>`

So `3 > 5 or 650 < 1` becomes evaluated as `3 > (5 or 650) < 1`, which makes no sense, because the Boolean operator or only works on Boolean values, not on integers.

The Boolean operators (`AND, OR, NOT, XOR`) can be used on Boolean variables just as easily as they are used on Boolean expressions.

Whenever possible, don't compare two real values with the equals sign. Small round-off errors may cause two equivalent expressions to differ.

previous | contents | next |