Back: 1.2.4.2 The for statement Forward: 1.2.5 Variable scope     FastBack: 1. Basic Ideas Up: 1.2.4 Loops FastForward: 2. Using Array Syntax         Top: Yorick: An Interpreted Language Contents: Table of Contents     About: About This Document

1.2.4.3 Using break, continue, and goto

The break statement jumps out of the loop containing it. The continue statement jumps to the end of the loop body, “continuing” with the next pass through the loop (if any). In deeply nested loops — which are extremely rare in Yorick programs — you can jump to more general places using the goto statement. For example, here is how to break out or continue from one or both levels of a doubly nested loop:

 
 for (i=1 ; i<=n ; ++i) {
   for (j=1 ; j<=m ; ++j) {
     if (skip_to_next_j_now) continue;
     if (skip_to_next_i_now) goto skip_i;
     if (break_out_of_inner_loop_now) break;
     if (break_out_of_both_loops_now) goto done;
     more_statements_A;
   }
   more_statements_B;
  skip_i:
 }
done:
 more_statements_C;

The continue jumps just after more_statements_A, the break just before more_statements_B.

Break and continue statements may be used to escape from while or do while loops as well.

If while tests the condition before the loop body, and do while checks after the loop body, you may have wondered what to do when you need to check the condition in the middle of the loop body. The answer is the “do forever” construction, plus the break statement (note the inversion of the sense of the condition):

 
for (;;) {
  body_before_test;
  if (!condition) break;
  body_after_test;
}

Back: 1.2.4.2 The for statement Forward: 1.2.5 Variable scope     FastBack: 1. Basic Ideas Up: 1.2.4 Loops FastForward: 2. Using Array Syntax         Top: Yorick: An Interpreted Language Contents: Table of Contents     About: About This Document