7.2 For loops

For loops may be used to execute a series of commands multiple times. Pyxplot allows for loops to follow either the syntax of the BASIC programming language, or the C syntax:

for <variable> = <start> to <end> [step <step>]
                          [loopname <loopname>]
  <code>

for (<initialise>; <criterion>; <step>)
  <code>

Here, <code> may be substituted by any block of Pyxplot commands enclosed in braces {}. The closing brace must be on a new line after the last command of the block.

The first form is similar to how the for command works in BASIC. The first time that the script block is executed, variable has the value start. Upon each iteration of the loop, it is incremented by amount step. The loop finishes when the value exceeds end. If step is negative, then end is required to be less than or equal to start. A step size of zero is considered to be an error. The iterator variable can have any physical dimensions, so long as start, end and step all have the same dimensions, but the iterator variable must always be a real number. If no step size is given then a step size of unity is assumed. As an example, the following script would print the numbers 0, 2, 4, 6 and 8:

for x = 0 to 10 step 2
 {
  print x
 }

In the C form of the for command, three expressions are provided, separated by semicolons. These are evaluated (a) when the loop initialises, (b) as a boolean test of whether the loop should continue iterating, and (c) at the end of each iteration, usually to increment/decrement variables as required. For example:

for (i=1,j=1; i<=256; i*=2,j++) { print "%3d %3d"%(j,i); }

The syntax

for (a; b; c) { ... ; }

is almost equivalent to

a; while (b) { ... ; c ; }

with the single exception that continue statements behave slightly differently. In the C form of the for command, the continue statement executes the expression c before the next iteration is started, even though the while loop above would not.

The optional loopname which can be specified in the for statement is used in conjunction with the break and continue statements which will be introduced in Section 7.6.