| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- MODULE Showcase9;
- // Step 4.1 tour: procedures, value/VAR params, recursion,
- // array + open-array params, strings through calls. Exit 140.
- TYPE Vec = ARRAY [0..3] OF INTEGER;
- VAR ExitCode : INTEGER;
- PROCEDURE Double(n : INTEGER) : INTEGER;
- BEGIN
- RETURN n * 2
- END Double;
- PROCEDURE Acc(VAR total : INTEGER; x : INTEGER);
- BEGIN
- total := total + x
- END Acc;
- PROCEDURE Sum4(a : Vec) : INTEGER;
- VAR i, s : INTEGER;
- BEGIN
- s := 0;
- FOR i := 0 TO 3 DO s := s + a[i] END;
- RETURN s
- END Sum4;
- PROCEDURE Head(VAR a : ARRAY OF INTEGER) : INTEGER;
- BEGIN
- RETURN a[0]
- END Head;
- PROCEDURE Fact(n : INTEGER) : INTEGER;
- BEGIN
- IF n <= 1 THEN RETURN 1 END;
- RETURN n * Fact(n - 1)
- END Fact;
- VAR v : Vec;
- VAR t : INTEGER;
- BEGIN
- v[0] := 10; v[1] := 20; v[2] := 30; v[3] := 40;
- t := 0;
- Acc(t, Double(5));
- Acc(t, Sum4(v));
- Acc(t, Head(v));
- Acc(t, Fact(5) MOD 100);
- ExitCode := t
- END Showcase9.
|