shithub: limbobyexample

ref: 169cceaef46664b809cc13f52f9cfaa88275d610
dir: /Loops/README.md/

View raw version
# Loops

Looping in Limbo is similar to looping in C. Supported loop formats are for, while, and do-while. 

## Source

### loops.b:18,23

	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. 

### loops.b:28,29

	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.

### loops.b:33,36

	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. 

## Demo

	; limbo loops.b
	; loops
	== for
	1
	9
	25
	49
	81
	== while
	7
	6
	5
	4
	3
	2
	1
	== do
	1
	; 

## Exercises

- 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?