Search results
Results from the WOW.Com Content Network
Loop variants are used to guarantee that loops will terminate. A loop invariant is an assertion which must be true before the first loop iteration and remain true after each iteration. This implies that when a loop terminates correctly, both the exit condition and the loop invariant are satisfied.
Some loops can be shown to always terminate or never terminate through human inspection. For example, the following loop will, in theory, never stop. However, it may halt when executed on a physical machine due to arithmetic overflow : either leading to an exception or causing the counter to wrap to a negative value and enabling the loop ...
The loop counter is used to decide when the loop should terminate and for the program flow to continue to the next instruction after the loop. A common identifier naming convention is for the loop counter to use the variable names i , j , and k (and so on if needed), where i would be the most outer loop, j the next inner loop, etc.
Some languages may use a different naming convention for this type of loop. For example, the Pascal and Lua languages have a "repeat until" loop, which continues to run until the control expression is true and then terminates. In contrast a "while" loop runs while the control expression is true and terminates once the expression becomes false.
The test for i < len is still present, but it has been moved outside the loop, which now contains only a single test (for the value), and is guaranteed to terminate due to the sentinel value. There is a single check on termination if the sentinel value has been hit, which replaces a test for each iteration.
Compare this with the do while loop, which tests the condition/expression after the loop has executed. For example, in the languages C, Java, C#, [2] Objective-C, and C++, (which use the same syntax in this case), the code fragment
/* precondition: x 2 = 0 */ LOOP x 1 DO x 0 := 0; LOOP x 2 DO x 0 := x 0 + 1 END; x 2 := x 2 + 1 END. This program can be used as a subroutine in other LOOP programs. The LOOP syntax can be extended with the following statement, equivalent to calling the above as a subroutine: x 0 := x 1 ∸ 1 Remark: Again one has to mind the side effects.
BlooP and FlooP (Bounded loop and Free loop) are simple programming languages designed by Douglas Hofstadter to illustrate a point in his book Gödel, Escher, Bach. [1] BlooP is a Turing-incomplete programming language whose main control flow structure is a bounded loop (i.e. recursion is not permitted [ citation needed ] ).