showcase3.mod 849 B

123456789101112131415161718192021222324252627282930313233
  1. MODULE Showcase3;
  2. // Stage 1.9 tour: WHILE factorial, FOR with negative BY, CASE with
  3. // range + ELSE, REPEAT, LOOP/EXIT with nested IF, BOOLEAN + CHAR.
  4. // Expected ExitCode: 183 (hand-computed).
  5. VAR ExitCode, i, f : INTEGER;
  6. VAR b : BOOLEAN;
  7. VAR c : CHAR;
  8. BEGIN
  9. (* 5! = 120 *)
  10. f := 1; i := 2;
  11. WHILE i <= 5 DO f := f * i; i := i + 1 END;
  12. (* 120 + 10 + 8 + 6 + 4 + 2 = 150 *)
  13. FOR i := 10 TO 2 BY -2 DO f := f + i END;
  14. (* 150 MOD 3 = 0 -> 157 *)
  15. CASE f MOD 3 OF
  16. 0 : f := f + 7
  17. | 1..2 : f := f + 70
  18. ELSE f := f + 700
  19. END;
  20. (* 157 + 1 + 2 + 3 = 163 *)
  21. i := 0;
  22. REPEAT i := i + 1; f := f + i UNTIL i >= 3;
  23. (* 163 + 10 + 10 = 183 *)
  24. i := 0;
  25. LOOP
  26. i := i + 1;
  27. IF i > 2 THEN EXIT END;
  28. f := f + 10
  29. END;
  30. c := 'x';
  31. b := (f = 183) AND (c = 'x');
  32. IF b THEN ExitCode := f ELSE ExitCode := 0 END
  33. END Showcase3.