Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionBoth sides next revision | ||
alvis:loop [2016/07/11 10:30] marcin | — (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | | ||
- | Alvis provides three kinds of the **loop** statement (see Listing 1). The first statement repeats its contents infinitely. The second one repeats its contents while the **guard** '' | ||
- | |||
- | A **guard** is a Haskell logical expressions placed inside round brackets. | ||
- | |||
- | |||
- | The contents of a loop must be put inside curly brackets and it must contain at least one statement. | ||
- | |||
- | The **loop** statement is a multi-step statement. The first step consists of evaluating the guard (if any) and entering the corresponding loop. Then, a model executes steps inside the loop. | ||
- | |||
- | In case of non-time models, the **loop every** statements works in the same way as the **unguarded loop**. | ||
- | |||
- | In case of time models, the user must ensure that the duration of the loop content does not exceed the loop period. Otherwise, the loop will restart its work after finishing the previous cycle. | ||
- | |||
- | < | ||
- | loop {...} | ||
- | loop (g) {...} | ||
- | loop (every t) {...} | ||
- | </ | ||
- | |||
- | **Listing 1. ** Loop statement syntax | ||
- | |||
- | |||
- | < | ||
- | x = 10; | ||
- | y = x; | ||
- | loop (y > 1) { | ||
- | y = y - 1; | ||
- | x = x * y; | ||
- | } | ||
- | </ | ||
- | |||
- | **Listing 2. ** Loop statement example | ||
- | |||
- | |||
- | **[[: |