Sheerpower®
A Guide to the Sheerpower Language


Previous Contents Index

EXAMPLE:

Example 10-7 ITERATE FOR Statement in FOR Loop

  for i = 1 to 3 
    print i 
    input 'Your name, please' : name$ 
    if  name$ = 'Skip'  then iterate for
    print 'Hello, '; name$ 
  next i 
  end
 
 
 1 
Your name, please? Toby 
Hello, Toby 
 2 
Your name, please? Skip 
 3 
Your name, please? Sam 
Hello, Sam 

PURPOSE:

ITERATE FOR is used to skip code processing.

DESCRIPTION:

When Sheerpower executes ITERATE FOR, it jumps to the NEXT statement. Any statements between the ITERATE FOR and the NEXT statement will be skipped.

If ITERATE FOR is used in a nested loop, Sheerpower iterates the innermost loop.

Example 10-8 ITERATE FOR Used in a Nested Loop

  // count to ten, but skip a few numbers 
  for idx = 1 to 10 
    if idx = 2 or idx = 6 then iterate for
    print 'On '; idx 
  next idx 
  end
 
 
On  1 
On  3  
On  4 
On  5 
On  7 
On  8 
On  9 
On  10 

10.2 DO LOOP

FORMAT:


        DO [WHILE expr | UNTIL expr] 
                --- 
                ---  block of code 
                --- 
        LOOP [WHILE expr | UNTIL expr] 

EXAMPLE:

Example 10-9 DO LOOP

  a = 3 
  do until a = 0 
    input 'Your name, please': name$ 
    print 'Hello, '; name$ 
    a = a - 1 
  loop
  end
 
 
Your name, please? Sam 
Hello, Sam 
Your name, please? Sue 
Hello, Sue 
Your name, please? Bart 
Hello, Bart 

PURPOSE:

A DO LOOP is used to execute a block of code repeatedly until a specified condition is met.

DESCRIPTION:

The simplest type of DO LOOP is an infinite DO LOOP:

Example 10-10 Infinite DO/LOOP

  do
    input 'Your name, please' : name$ 
    print 'Hello, '; name$ 
  loop
  end

In the above example, the INPUT and PRINT statements make up the body of the loop. This block of code is executed each time the loop is repeated. DO begins the loop. LOOP marks the end of the loop. When Sheerpower reaches the LOOP statement, it jumps back to DO and executes the loop again.

The [Alt/B] command or clicking on the STOP icon in the toolbar can be used to break out of an infinite DO loop.

DO loops can be nested. Loops cannot overlap. The inner loop must be completely within the DO and LOOP statements of the outer loop.


        start of 
        outer loop  ---     do
                              a = 5 
                              do until a = 0 
                          /     input 'Your name' : name$ 
               inner loop       print 'Hello, '; name$ 
                           \    a = a - 1 
                              loop
           end of             print 'Done with a loop' 
           outer loop ---   loop
                            end

DO loops can be made conditional with WHILE and UNTIL options. WHILE and UNTIL set up a condition. The loop is executed if the condition is met.

10.2.1 WHILE and UNTIL Options

FORMAT:


        WHILE cond_expr 

EXAMPLE:

Example 10-11 WHILE Option in DO/LOOP

  a = 3 
  do
    input 'Your name, please': name$ 
    print 'Hello, '; name$ 
    a = a - 1 
  loop while a > 0 
  print 'Finished' 
  end
 
 
Your name, please? FRED 
Hello, FRED 
Your name, please? JOHN 
Hello, JOHN 
Your name, please? KATE 
Hello, KATE 
Finished 

DESCRIPTION:

cond_expr is a conditional expression. When Sheerpower executes the WHILE option, it evaluates the conditional expression as either TRUE (1) or FALSE (0). If the expression is TRUE, the condition is met and Sheerpower executes the loop. Sheerpower continues executing the loop until the expression becomes FALSE. When the expression becomes FALSE, the condition is not met. Sheerpower stops executing the loop and jumps to the statement following LOOP.

FORMAT:


        UNTIL cond_expr 

EXAMPLE:

Example 10-12 UNTIL Option in DO/LOOP

  a = 3 
  do until a = 0 
    input 'Your name, please': name$ 
    print 'Hello, '; name$ 
    a =  a - 1 
  loop
  print 'Finished' 
  end
 
 
Your name, please? FRED 
Hello, FRED 
Your name, please? JOHN 
Hello, JOHN 
Your name, please? KATE 
Hello, KATE 
Finished 

DESCRIPTION:

cond_expr is a conditional expression. When Sheerpower executes the UNTIL option, it evaluates the conditional expression as either TRUE (1) or FALSE (0). If the expression is FALSE, Sheerpower executes the loop. Sheerpower continues executing the loop until the expression becomes TRUE. When the expression becomes TRUE, Sheerpower stops executing the loop and jumps to the statement following LOOP.

Placement of WHILE and UNTIL

WHILE and UNTIL can be attached to the DO and/or to the LOOP statements. Whenever Sheerpower encounters a WHILE or UNTIL clause, it checks whether to execute the loop. The placement of the WHILE and UNTIL clauses affects the execution of the loop.

If a WHILE or UNTIL is attached to the DO statement, Sheerpower first checks to see whether the condition is TRUE or FALSE before it executes the loop (again). In the case of a WHILE statement, if the condition is still met (i.e., is TRUE), Sheerpower executes the loop. If the condition is not met (i.e., is FALSE or is no longer TRUE), Sheerpower does not execute the loop.

In the case of an UNTIL statement, if the condition has not been met (or is still FALSE), Sheerpower executes the loop once more. If the condition has been met (i.e., is TRUE), Sheerpower does not execute the loop again.

Creating Two Conditions

WHILE and UNTIL options can be placed at both ends of the loop. Sheerpower evaluates each expression in turn. When it finds that one of the conditions has or has not been met (depending upon whether it is a WHILE or UNTIL clause), Sheerpower stops executing the loop. For example, when the following program runs, Sheerpower executes the loop until A equals 5 or the user enters EXIT.

Example 10-13 WHILE and UNTIL Options in DO/LOOP

  dim name$(4) 
  a = 1 
  do until a = 5 
    input 'Your name, please' : name$(a) 
    a = a + 1 
  loop while not _exit 
  print 'Finished' 
  end

10.2.2 EXIT DO

FORMAT:


        EXIT DO 

EXAMPLE:

Example 10-14 EXIT DO statement

  do
    input 'Your name, please' : name$ 
    if _exit  then  exit do
    print 'Hello, '; name$ 
  loop
  print 'Finished' 
  end
 
 
        Your name, please? Fred 
Hello, Fred 
Your name, please? exit       <---- type in 'exit' 
Finished 

PURPOSE:

EXIT DO is used to exit from a DO loop.

DESCRIPTION:

When Sheerpower executes an EXIT DO statement, it jumps to the first statement following the LOOP or END DO statement. If EXIT DO is used within a nested loop, Sheerpower exits the innermost loop.

DO...END DO is a single iteration loop. The code between DO and END DO is processed only once unless conditional code specifies exiting or repeating the DO.

10.2.3 REPEAT DO

FORMAT:


        REPEAT DO 

EXAMPLE:

Example 10-15 REPEAT DO Statement

  do
    input 'Your name, please': name$ 
    if  _exit  then exit do
    if  name$ = ''  then repeat do
    print 'Hello, '; name$ 
  loop
  end
 
 
Your name, please? Fred 
Hello, Fred 
Your name, please? 
Your name, please? exit   <---- type in 'exit' 

PURPOSE:

REPEAT DO is used to repeat part of a DO loop.

DESCRIPTION:

REPEAT DO repeats all or part of the body of a loop. When Sheerpower executes REPEAT DO, it jumps to the first statement following the DO statement.

If REPEAT DO is used within a nested loop, Sheerpower repeats the innermost loop.

Example 10-16 REPEAT DO Within a Nested Loop

  do                   
    i = i + 1 
    do                       //<------Sheerpower will repeat this inner loop 
      input 'Your name, please': name$ 
      if  _exit  then exit do
      if  name$ = ''  then repeat do
      print 'Hello, '; name$ 
    loop                     //<------ 
    print 'We now have'; i; 'set(s) of names.' 
  loop
  end


Previous Next Contents Index