Loops/Nested: Difference between revisions

Content added Content deleted
(Added Pike implementation)
Line 2,694: Line 2,694:
(printsp N)
(printsp N)
(and (= N 20) (throw)) ) ) )</lang>
(and (= N 20) (throw)) ) ) )</lang>

=={{header|Pike}}==

Pike does not have a generic goto, but break is a special case in that
you can specify labels and break several levels of loop. In practise
this is extremely seldom used in favor of using a state variable or
containing the nest in a function that you <tt>return</tt> from in the
inner loop. However it's there if you want it:

<lang>
int main()
{
// enumerate() normally returns a linearly enumerated array, but
// allows for the forth argument to specify a function that will
// be called and return the value that should be in each cell. We
// create an anonymous function (lambda) that just returns a
// random value.
array a = ({});
for(int i=0; i<20; i++)
a += ({ enumerate( 20, 1, 1, lambda(){return random(20)+1;} ) });

// We could use for() and a[x][y] indexing, but foreach is just
// shorter and easier to use even if the 2D-array becomes less
// obvious.
mynestedloops:
foreach(a, array inner_a) {
foreach(inner_a, int value) {
write(value +" ");
if(value == 20)
break mynestedloops;
}
}
write("\n");
}
</lang>


=={{header|PL/I}}==
=={{header|PL/I}}==