       Next: Exercises 1 Up: Constructions Previous: Selection

## Loops

```...
while(i<30){    /* test at top of loop */
something();
...
}
```

```...
do {
something();
} while (i<30); /* test at bottom of loop */
...
```

The `for' construction in C is very general. In its most common form it's much like for in other languages. The following loop starts with i set to 0 and carries on while `i<5` is true, adding 1 to i each time round.

```...
for(i=0; i<5; i=i+1){
something();
}
...
```

The general form of `for' is

```for ([expression1]; [expression2]; [expression3])
something();
```
where all the expressions are optional. The default value for expression2 (the while condition) is 1 (true). Essentially, the for loop is a while loop. The above for loop is equivalent to
```...
expression1; /* initialisation */
while (expression2){ /* condition */
something();
expression3;      /* code done each iteration */
};
...
```

E.g. the 2 fragments below are equivalent. `i' is set to 3, the loop is run once for i=3 and once for i=4, then iteration finishes when i=5.

```for (i = 3; i < 5; i=i+1)
total = total + i;
```

```i = 3;
while(i < 5){
total = total + i;
i=i+1;
}
```

Within any of the above loop constructions, continue stops the current iteration and goes to the next and break stops the iterations altogether. E.g. in the following fragment 0 and 2 will be printed out.

```...
i=0;
while (i<5){
if (i==1){
i = i+1;
continue;
}
if (i==3)
break;
printf("i = %d\n", i);
i=i+1;
}
...
```

If you want a loop which only ends when break is done, you can use ``while(1)`' (because 1 being non-zero, counts as being true) or ``for(;;)`'.

The ` { }` symbols are used to compound statements. You can declare variables at the start of any compound statement. For instance, if you're worried about the scope of an index variable in a for loop, you could do the following.

```{int i;
for (i=1;i<5;i++)
printf("i is %d\n",i);
}
```    Next: Exercises 1 Up: Constructions Previous: Selection
Tim Love
1999-10-06