Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Both sides next revision
alvis:loop [2016/07/11 10:30]
marcin
— (current)
Line 1: Line 1:
- ====== Loop statement ====== 
  
-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** ''g'' is satisfied. The third statement repeats its contents every ''t'' time-units.  
- 
- 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.   
- 
-<code> 
-  loop {...} 
-  loop (g) {...} 
-  loop (every t0 {...} 
-</code> 
- 
-**Listing 1. ** Loop statement syntax 
- 
- 
-<code> 
-x = 10; 
-y = x; 
-loop (y > 1) { 
-  y = y - 1; 
-  x = x * y; 
-} 
-</code> 
- 
-**Listing 2. ** Loop statement example 
- 
- 
-**[[:alvis:manual|Go back]]**