| 123456789101112131415161718192021222324252627282930313233 |
- MODULE Showcase3;
- // Stage 1.9 tour: WHILE factorial, FOR with negative BY, CASE with
- // range + ELSE, REPEAT, LOOP/EXIT with nested IF, BOOLEAN + CHAR.
- // Expected ExitCode: 183 (hand-computed).
- VAR ExitCode, i, f : INTEGER;
- VAR b : BOOLEAN;
- VAR c : CHAR;
- BEGIN
- (* 5! = 120 *)
- f := 1; i := 2;
- WHILE i <= 5 DO f := f * i; i := i + 1 END;
- (* 120 + 10 + 8 + 6 + 4 + 2 = 150 *)
- FOR i := 10 TO 2 BY -2 DO f := f + i END;
- (* 150 MOD 3 = 0 -> 157 *)
- CASE f MOD 3 OF
- 0 : f := f + 7
- | 1..2 : f := f + 70
- ELSE f := f + 700
- END;
- (* 157 + 1 + 2 + 3 = 163 *)
- i := 0;
- REPEAT i := i + 1; f := f + i UNTIL i >= 3;
- (* 163 + 10 + 10 = 183 *)
- i := 0;
- LOOP
- i := i + 1;
- IF i > 2 THEN EXIT END;
- f := f + 10
- END;
- c := 'x';
- b := (f = 183) AND (c = 'x');
- IF b THEN ExitCode := f ELSE ExitCode := 0 END
- END Showcase3.
|