Looping in Limbo is similar to looping in C. Supported loop formats are for, while, and do-while.
for(i := 0; i < 10; i++){
if(i % 2 == 0)
continue;
print("%d\n", i * i);
}
A for loop consists of an initialization, qualification, operation, and post-iteration sequence.
Before the loop begins, but before the initial check, i := 0
is run.
After each loop iteration, i++
is performed, then i < 10
is checked.
The continue
keyword, from the point it is called, skips to the next loop iteration. In this case, continue
is called if i
is an even number. If i
is an odd number, i²
is printed.
Note that the continue
keyword does not skip the post-iteration operation.
while(n)
print("%d\n", n--);
A while loop will check the qualifier for whether to enter another iteration, then, perform its operation. This loop will print the value of n
in the range [7,1].
Note that in this case the braces are omitted.
do{
print("%d\n", ++n);
break;
}while(1);
A do-while loop will perform its operation, then check the qualifier for whether to enter another iteration. In this case, the qualifier is a constant which is quantified as a true value, so, this loop would iterate forever.
The break
keyword interrupts iterative processing. In this case, it terminates the loop immediately after the print on its first iteration.
Note that we reuse the value of n
, In this case, the incremented value of n
is printed, as when the preceding loop ends, the value of n
is 0.
; limbo loops.b
; loops
== for
1
9
25
49
81
== while
7
6
5
4
3
2
1
== do
1
;
- Try reversing the ++/-- operators in different places, what happens?
- Try omitting various portions of the for loop syntax, what happens?
- Is
for(;;);
an infinite loop? - Make the condition for a loop something similar to --n, how many iterations does it run for?