6.2 Conditionals

The if statement can be used to conditionally execute a series of commands only when a certain criterion is satisfied. In its simplest form, its syntax is

if <expression> {
  ....
 }

where the expression can take the form of, for example, x<0 or y==1. Note that the operator == is used to test the equality of two algebraic expressions; the operator = is only used to assign values to variables and functions. A full list of the operators available can be found in Table 3.1. As in many other programming languages, algebraic expressions are deemed to be true if they evaluate to any non-zero value, and false if they exactly equal zero. Thus, the following two examples are entirely legal syntax, and the first print statement will execute, but the second will not:

if 2*3 {
  print "2*3 is True"
 }

if 2-2 {
  print "2-2 is False"
 }

The variables True and False are predefined constants, which evaluate to 1 and 0 respectively, making the following syntax legal:

if False {
  print "Never gets here"
 }

As in C, the block of commands which are to be conditionally executed is enclosed in braces (i.e. { }). There are, however, some rules about the arrangement of whitespace. The block of commands must begin on a new line after the if statement. The closing brace must be on a line by itself at the end of the block. Alternatively, semi-colons may, as always, be used in the place of new lines. The opening brace may be placed either on the same line as the if statement, or on the following line:

if (x==0)
 {
  print "x is zero"
 }

if (x==0) { ; print "x is zero" ; }

After such an if clause, it is possible to string together further conditions in else if clauses, perhaps with a final else clause, as in the example:

if (x==0)
 {
  print "x is zero"
 } else if (x>0) {
  print "x is positive"
 } else {
  print "x is negative"
 }

Here, as previously, the first script block is executed if the first conditional, x==0, is true. If this script block is not executed, the second conditional, x>0, is then tested. If this is true, then the second script block is executed. The final script block, following the else, is executed if none of the preceding conditionals have been true. Any number of else if statements can be chained one after another, and a final else statement can always be optionally supplied. The else and else if statements must always be placed on the same line as the closing brace of the preceding script block.

The precise way in which a string of else if statements are arranged in a PyXPlot script is a matter of taste: the following is a more compact but equivalent version of the example given above:

if      (x==0) { ; print "x is zero"     ; } \
else if (x> 0) { ; print "x is positive" ; } \
else           { ; print "x is negative" ; }