Sometimes you will want a program to do different things depending on different conditions. This is called *branching*. In order to create program branches, we need to construct “test conditions.” If the test is true, then we do one result; if false, a different result.

*Conditional expressions *can be used with several functions to achieve branching in AutoLISP routines.

**1. Any expression can be used as a conditional.**

In AutoLISP, any expression is true if it evaluates to a non-nil value. Any expression is false if it evaluates to nil. Hence, each of the following is a valid conditional expression:

*(setq A 5)*

*PT1 – as long as it holds some value (getpoint “Enter center point: “) *

*(setq A B)*

**2. Specific functions are designed to be conditional expressions.**

These expressions return the value of “T” if true, and “nil” if false. They are divided into two types: Numerical (=,<,>, etc.) for numbers and Logical (equal to, less than, greater than, etc.) for other expressions.

**Examples**

*Command: (= 5 5.0)*

T

*Command:*

**(/= 5 (- 7 1))***T*

*Command:*

**(setq G 3.0 H 2.96)***2.96*

*Command: (*

**= G H)***nil*

*Command:*

**(equal G H 0.1) – are G & H equal within 0.1?***T*

*Command:*

**(equal G H 0.04) – are G & H equal within 0.04?***nil*

**Numerical Conditions**

The following conditional expressions are valid for numbers and strings:

**Logical Conditions**

The following conditionals will work with any expression:

**PRACTICE**

*Test the following expressions at the Command line.*

(equal 0.1 0.2)

(equal 0.1 0.2 0.1)

(= “this” “that”)

(equal “this” “that”)

(or “this” nil “that”)

(and “this” nil “that”)

(> (+ 5(/ 4 5)) 8)